Ubuntu 22.04でGROWI 6.1.0を動かしてみる
概要
Ubuntu 22.04 でGROWIを動かしてみます。
最新バージョンのものを導入しようとしたら意外と苦戦したので、その備忘録です。
今回導入した各種ソフトウェアのバージョンは以下の通り。
- GROWI 6.1.0
- Java … openjdk 17.0.7
- Node.js … 18.16.0
- npm … 9.5.1
- yarn … 1.22.19
- Elasticsearch … 8.7
- MongoDB … 6.0
- Nginx … 1.18.0
GROWIとは
GROWIとは、オープンソースのWikiソフトウェアです。
開発元はWESEEK, Inc.で、MITライセンスで公開されています。
GROWIには、以下のような特徴があります。
- Elasticsearchと連携し、Wiki内の全文検索が可能
- draw.ioと連携して図表なども登録できる
- 記事の閲覧、更新権限をページごとに設定できる
- Wiki内のページは、マークダウンかWYSIWYGで作成できる
その他、よくあるWikiソフトウェアにあるような機能は大体搭載されているようです。
環境構築
以下の手順で導入していきます。
Node.jsをインストール
Node.jsをインストールするためのリポジトリ情報の取得を行います。
$ sudo curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash
Node.jsをインストールします。
$ sudo apt install -y nodejs
これでNode.jsとnpmがインストールされているはずなので、バージョンを確認しておきましょう。
$ node -v
v18.16.0
$ npm -v
9.5.1
Javaをインストール
Elasticsearch 8の実行にはJava 17が必要なのでインストールします。
$ sudo apt install -y openjdk-17-jdk
Elasticsearchをインストール
以下の手順でインストールしていきます。
今回はElasticsearch 8をインストールしますが、別のバージョンに変えたい場合は下記の"8.x"の部分を変えてください。
インストール
$ sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
$ sudo apt install apt-transport-https
$ sudo echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
$ sudo apt update && sudo apt install elasticsearch
※インストールが完了すると、elasticユーザーのデフォルトパスワードが表示されるので、念のためどこかにメモしておきましょう。
(今回は使わないですが)
--------------------------- Security autoconfiguration information ------------------------------
Authentication and authorization are enabled.
TLS for the transport and HTTP layers is enabled and configured.
The generated password for the elastic built-in superuser is : ~~~~~~~
もしパスワードを忘れてしまった場合は、以下のコマンドでパスワードリセットを行ってください。
$ /usr/share/elasticsearch/bin/elasticsearch-setup-passwords -u elastic
JVMの設定変更
Elasticsearchを実行するJVMの設定ファイルを開き、メモリ割り当ての設定を変更します。
$ sudo vi /etc/elasticsearch/jvm.options
-Xms256m
-Xmx256m
TLS無効化
Elasticsearch 8は、デフォルトでTLS通信(HTTPS)しか受け付けない設定になっています。しかし、GROWIからElasticsearchを呼び出す際は、HTTPで通信する必要があるため、今回はTLSの設定をオフにします。
(ただしこの場合、Elasticsearchがlocalhost以外からのアクセスを受け付けないように設定した方が良いです)
$ sudo vi /etc/elasticsearch/elasticsearch.yml
falseに変更
xpack.security.enabled: false
xpack.security.http.ssl:
enabled: false
xpack.security.transport.ssl:
enabled: false
プラグインのインストール
GROWIとElasticsearchの連携に必要なプラグインをインストールしておきます。
$ sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
$ sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
起動
起動します。
$ sudo systemctl start elasticsearch
自動起動を有効化します。
$ sudo systemctl enable elasticsearch
試しにアクセスしてみる
以下のコマンドを実行してみましょう。
$ curl http://localhost:9200
以下のようなレスポンスが返ってきたら問題無しです。
{
"name" : "ubuntu",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "qIbCuF7VQsuyN3vkXZoI8Q",
"version" : {
"number" : "8.7.1",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "f229ed3f893a515d590d0f39b05f68913e2d9b53",
"build_date" : "2023-04-27T04:33:42.127815583Z",
"build_snapshot" : false,
"lucene_version" : "9.5.0",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
MongoDBをインストール
MongoDBの公式ドキュメントのインストール手順に従ってインストールしていきます。
$ sudo apt install gnupg
$ curl -fsSL https://pgp.mongodb.com/server-6.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg --dearmor
$ echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
$ sudo apt update
$ sudo apt install -y mongodb-org mongodb-org-server mongodb-org-shell mongodb-org-mongos mongodb-org-tools
インストールしたMongoDBのバージョンを固定しておきます。
$ echo "mongodb-org hold" | sudo dpkg --set-selections
$ echo "mongodb-org-server hold" | sudo dpkg --set-selections
$ echo "mongodb-org-shell hold" | sudo dpkg --set-selections
$ echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
$ echo "mongodb-org-tools hold" | sudo dpkg --set-selections
あとは起動&自動起動の有効化をやっておきます。
$ sudo systemctl start mongod
$ sudo systemctl enable mongod
GROWIをインストール
GROWIのインストールと実行に必要なソフトウェアがいくつかあるので、先にそちらをインストールしておきます。
yarnをインストール
$ sudo npm install -g yarm
build-essentialをインストール
$ sudo apt install build-essential
turboをインストール
$ sudo yarn global add turbo
そしてGROWIをインストールしていきます。
$ sudo git clone https://github.com/weseek/growi /opt/growi
$ cd /opt/growi
$ sudo git checkout -b v6.1.0 refs/tags/v6.1.0
$ sudo yarn
自動起動用にsystemdスクリプトを作ります。
(メモ帳、追加。(UbuntuにGrowi導入) – Manualmaton's Laboratoryに記載されたものを使用しております)
$ sudo vi /etc/systemd/system/growi.service
[Unit]
Description = growi
After=network-online.target mongod.service
ConditionPathExists=/opt/growi
[Service]
ExecStart=/opt/growi/growi-start.sh
Restart=no
Type=simple
[Install]
WantedBy=multi-user.target
スクリプトの権限を変えておきます。
$ sudo chown root:root /etc/systemd/system/growi.service
$ sudo chmod 644 /etc/systemd/system/growi.service
起動スクリプトを作成します。
$ sudo vi /opt/growi/growi-start.sh
#!/bin/sh
cd /opt/growi
MONGO_URI=mongodb://localhost:27017/growi \
ELASTICSEARCH_URI=http://localhost:9200/growi \
MATHJAX=1 \
PASSWORD_SEED=[任意の文字列] \
npm start
権限を変えます。
$ sudo chmod +x /opt/growi/growi-start.sh
あとは起動&自動起動の有効化をやっておきます。
$ sudo systemctl start growi
$ sudo systemctl enable growi
localhostからアクセスしてみます。
$ curl http://localhost:3000/
以下のようなレスポンスが来たら問題無しです。
Found. Redirecting to /login
Nginxのインストール
Nginxをインストールしてリバースプロキシの設定をやっておきます。
$ sudo apt -y install nginx
設定ファイルを編集します。
$ vi /etc/nginx/nginx.conf
http {
## ~~~省略
upstream growi {
server 127.0.0.1:3000;
}
server {
listen [::]:80 default_server;
listen 80 default_server;
server_name _;
location / {
proxy_pass http://localhost:3000;
}
}
}
※今回は仮に80番ポート(http)でアクセスが来たら3000番ポートに流す、というだけの設定にしていますが、実際に運用する際は各自必要に応じてTLS通信用の設定を入れてください。
最後に恒例の起動&自動起動設定。
$ systemctl start nginx
$ systemctl enable nginx
ブラウザからGROWIに接続
ブラウザから http://サーバーのアドレス/ でGROWIにアクセスすると、アカウント作成画面が出ます。
アカウントを作成すると、トップ画面に遷移します。
後は適当に使ってみましょう。
Discussion
ubuntu22.04においてMongoDBをインストールしたのちにMongoDBを起動しようとするのですが、ステータスを確認すると
systemed[1]: Started MongoDB Database server.
systemed[1]: mongod.service: Naub process exited, code=dumped, status=4/ILL
systemed[1]: mongod.service: Failed with result 'core-dump'.
と表示され、MongoDBが起動できません
ちょっと調べた限りでは、どうやら実行環境のCPUによってはMongoDBがうまく動かないことがあるみたいです。お使いのUbuntu22.04の環境でlscpuコマンドを実行し、CPUがMongoDBを実行するための要件を満たしているかを確認すると良いかもしれません。
とても参考になりました。
私は関係者ではありませんが、公式ドキュメントへの修正リクエストを行うため、公式ドキュメントのリポジトリを Fork して、修正を試みています。
可能であれば、Elasticsearch の TLS の無効化の節など、こちらから反映したいのですが、よろしいでしょうか?
>可能であれば、Elasticsearch の TLS の無効化の節など、こちらから反映したいのですが、よろしいでしょうか?
特に問題ありません!
よろしくお願いします
ありがとうございます。
採用されるか分かりませんが、Pull request を投げてみました。
本日、無事に Merge され、Ubuntu Server | GROWI Docs が、更新されました。
ありがとうございました。
次は、CentOS | GROWI Docsの代わりに AlmaLinux 版のインストールドキュメント追加を目指します。