在树莓派4型号B(Ubuntu系统)中安装GROWI

首先

这篇文章记录了之前在 Raspberry Pi 4 Model B(以下简称RP4B)上手动构建私人Wiki平台GROWI的步骤,因为使用官方的Docker镜像安装不成功,所以尝试了手动操作。

本文假设Raspberry Pi 4B的初始设置已经预先完成,因此不会对其进行讨论。

環境 – 生活環境、周圍的情況或條件。

    • Raspberry Pi 4 Model B 4GB (32GB MicroSD)

 

    • Ubuntu Server 19.10.1 (64bit)

 

    GROWI 3.7.5

本文假设涉及各种网络地址如下。

    • ローカルネットワークの IP アドレス範囲は 192.168.1.0/24 とする。

 

    対象となる RP4B の IP アドレスは 192.168.1.10 とする。

参考页面

    • GROWI 公式ドキュメント

 

    • RP3 Elasticsearch 導入事例

 

    Elasticsearch 公式ドキュメント

Node.js (无需须多个选项)

    • nodejs 12.16.3

 

    • npm 6.14.4

 

    yarn 1.22.4

虽然对这方面的记忆有些模糊,但基本上按照官方文档的步骤应该就可以了。
但是从 GROWI 3.6 版本开始,需要使用 nodejs 的版本是 10.x 或 12.x,所以只需在这一点上修改。

$ cd ~
$ curl -sL https://deb.nodesource.com/setup_12.x -o nodesource_setup.sh
$ sudo bash nodesource_setup.sh
$ sudo apt install nodejs
$ sudo npm install -g yarn # グローバルインストール

成功安装 Node.js 后,将会创建以下文件并添加到存储库中。

deb https://deb.nodesource.com/node_12.x eoan main
deb-src https://deb.nodesource.com/node_12.x eoan main

弹性搜索

    • elasticsearch 6.8.8

 

    openjdk 8 (1.8.0_252)

我参考了这个地方做了。

首先,引入Java.

$ sudo apt install openjdk-8-jre

如果安装了多个版本的Java,请使用以下命令进行切换(可能不必要)。
(参考网站:http://note.kurodigi.com/post-0-2/)

$ sudo update-alternatives -config java
# インストール済みバージョンが列挙される。
# 使用したいバージョンの番号を入力して Enter を押す。

下载并解压Elasticsearch的存档文件。
推荐安装最新的6.x系列版本,请在官方网站上确认。

Elasticsearch存在一个陷阱,即不能使用root用户来启动。
因此,最好将其解压到任意非root用户的主目录下。
本次将其解压到/home/{username}/.local/elasticsearch-6.8.8/目录下。

$ cd ~
$ mkdir .local
$ chmod 755 .local
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.8.tar.gz
$ tar zxvf elasticsearch-6.8.8.tar.gz -C .local
$ cd .local
$ ln -s elasticsearch-6.8.8 elasticsearch # シンボリックリンク作成
$ echo "xpack.ml.enabled: false" >> elasticsearch/config/elasticsearch.yml # X-Pack Machine Learning が ARM 環境下では動作しないので無効にする。

进行动作测试。

$ cd ~
$ cd .local/elasticsearch
$ export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64
$ ./bin/elasticsearch & # バックグラウンドプロセスとして起動
$ curl http://localhost:9200

服务化

先按照此处的参考内容进行服务注册。
首先,使用su权限创建elasticsearch.service文件。

[Unit]
After=syslog.target network.target

[Service]
Environment="JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64"
ExecStart=/home/{username}/.local/elasticsearch/bin/elasticsearch
WorkingDirectory=/home/{username}/.local/elasticsearch
User={username}
Group={groupname}
Nice=10
SyslogIdentifier=Elasticsearch
StandardOutput=syslog
Restart=on-failure
KillSignal=SIGINT

[Install]
WantedBy=multi-user.target

确认可否启动后,设置自动启动。

$ sudo systemctl start elasticsearch  # 手動起動
$ sudo systemctl status elasticsearch # 正常に動作しているか確認
$ sudo systemctl enable elasticsearch # 自動起動設定

安装插件

    • analysis-kuromoji

 

    analysis-icu
$ cd ~
$ cd .local/elasticsearch
$ bin/elasticsearch-plugin install analysis-kuromoji
$ bin/elasticsearch-plugin install analysis-icu
$ ls -la plugin # DL したプラグインを確認
$ sudo systemctl restart elasticsearch # 再起動

MongoDB: 无需关系数据库

    mongodb 3.6.8
$ sudo apt install mongodb-server
$ sudo systemctl start mongodb
$ sudo systemctl status mongodb
$ sudo systemctl enable mongodb

生镡

    growi 3.7.5

按照公式文档的步骤进行操作。
由于构建需要一定时间,请注意。

$ cd /opt
$ sudo git clone https://github.com/weseek/growi /opt/growi
$ cd /opt/growi
$ sudo git tag -l # RC が付いていない最新版を確認
$ sudo git checkout -b v3.7.5 refs/tags/v3.7.5 # tag からブランチを切ってチェックアウト
$ sudo yarn # 12分程度かかった

動作テストする。
起動後は ctrl+z でバックグラウンドプロセス化して確認。

$ sudo ufw allow from 192.168.1.0/24 to any port 3000 # ローカルネットワークにおいて 3000番ポートを開放
$ sudo \
  MONGO_URI=mongodb://localhost:27017/growi \
  ELASTICSEARCH_URI=http://localhost:9200/growi \
  npm start
# 以下メッセージが表示されるまで待つ(そこそこ時間がかかる)
> growi@3.7.5 server:prod /opt/growi
> env-cmd -f config/env.prod.js node src/server/app.js

请尝试访问 http://192.168.1.10:3000/ ,确认是否显示首次设置界面。

サービス化

根据公式文档,适当地重新解读一下。
首先,用 su 权限创建一个 growi.service 文件。
将文件上传至 MongoDB GridFS。

[Unit]
Description=Growi
After=network.target mongodb.service elasticsearch.service

[Service]
WorkingDirectory=/opt/growi
Environment=PORT=3000 \
            MONGO_URI=mongodb://localhost:27017/growi \
            ELASTICSEARCH_URI=http://localhost:9200/growi \
            FILE_UPLOAD=mongodb \
            MATHJAX=1
ExecStart=/usr/bin/npm start

[Install]
WantedBy=multi-user.target

确认能够启动后,进行自动启动设置。

$ sudo systemctl start growi
$ sudo systemctl status growi
$ sudo systemctl enable growi

插件安装

    • growi-plugin-lsx

 

    growi-plugin-pukiwiki-like-linker

查看公式文档和插件的 GitHub 并继续。这需要相当长的时间。

$ sudo npm install --save growi-plugin-lsx
$ sudo npm install --save growi-plugin-pukiwiki-like-linker
$ cd /opt/growi
$ sudo systemctl stop growi
$ sudo yarn
$ sudo systemctl start growi