Growi をインストールしてみた

· · () ·

備忘録置き場に Wiki を使いたくてググってみたところ、Growi というよさげな Wiki エンジンがあった。Linux へのインストールは色々記事が見つかったけど、FreeBSD にインストールしてる人はいなさげなので、作業記録をメモっておく。

Growi は、全文検索に ElasticSearch を使うので、まずそれをインストール。

sudo pkg install elasticsearch6-6.4.2_1

必要なプラグインもあわせてインストール。

sudo /usr/local/lib/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
sudo /usr/local/lib/elasticsearch/bin/elasticsearch-plugin install analysis-icu

次に、Node.js が必要なので、これもパッケージからインストール。ただし、バージョンは LTS10.x でないといけないので、そこだけ注意。

sudo pkg install node10-10.15.3
sudo pkg install npm-node10-6.9.0

Yarn が必要なので、npm でインストール。

sudo npm install -g yarn

続けて、MongoDB をインストール。

sudo pkg install mongodb36-3.6.10

gcc でビルドが前提のモジュール (DTraceProviderBindings) があるため、gcc をインストール。12.0-RELEASE は (それ以前もだが)、llvm がシステムデフォルトなので、別途導入が必要なのだ。

sudo pkg install gcc

最後に、Git をインストール。

sudo pkg install git-2.20.1

Growiリポジトリをクローンする。

cd /usr/local
sudo git clone https://github.com/weseek/growi

最新リリースを確認して、チェックアウトしておく。

git checkout -b v3.3.4 refs/tags/v3.3.4

Yarn で必要なパッケージをインストール。

sudo yarn

DTraceProviderBindings が、DTrace 機能を必要とするので、カーネルモジュールをロードする。ロードしておかないとエラーになって起動しない。

kldload dtrace

/boot/loader.conf に追記しておくと便利。

dtrace_load="YES"

起動スクリプトを /usr/local/bin/startgrowi.sh として作成。以下のような感じ。

#! /usr/local/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
export PORT=3000
export PASSWORD_SEED=/dev/random
export FILE_UPLOAD=local
export MONGO_URI=mongodb://localhost:27017/growi
export ELASTICSEARCH_URI=http://localhost:9200/growi
cd /usr/local/growi
npm start > /dev/null 2>&1 &

ここで、試しに起動してみると、

ld-elf.so.1: /usr/local/growi/node_modules/uws/uws_freebsd_57.node: Undefined symbol "SSL_library_init"
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! growi@3.3.4-RC server:prod: `env-cmd config/env.prod.js node src/server/app.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the growi@3.3.4-RC server:prod script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2019-01-09T14_32_48_170Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! growi@3.3.4-RC start: `npm run server:prod`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the growi@3.3.4-RC start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2019-01-09T14_32_48_222Z-debug.log

とかいうようなエラーが出るかも知れない。が、慌てず騒がず、

sudo yarn upgrade

する。すると、依存パッケージが更新されて、uws は消えてなくなり、上記のスクリプトで起動するようになる。