Edited at

CentOS7.5にGrowiをインストール


VirtualboxのCentOS7.5でGrowiを使えるようにした。

VMはNWの設定まで終わり、SSHとyumが使える状態からスタート。


必要なソフトとインストールしたver.一覧

項目
構築した時のver.

CentOS
CentOS Linux release 7.5.1804 (Core)

Growi
3.1.0-RC

MongoDB
db version v3.4.15

Elasticsearch
5.6.9-1

java
1.8.0.171

Redis
3.2.10-2.el7

Yarn
1.6.0

Node.js
8.11.2

npm
5.6.0



1. MongoDBをインストール

リポジトリを追加してからyumでインストール

$ vim /etc/yum.repos.d/mongodb-org-3.4.repo

MongoDBの公式ドキュメントに書かれてる通り以下のように記載。

[mongodb-org-3.6]

name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.ascetc/



$ yum install mongodb-org

無事にインストールできたらsystemctl start mongod.serviceで起動させておく。

問題なさそうならsystemctl enable mongod.serviceで自動起動するようにさせる。


2. Node.jsとYarnをインストール

Node.jsから入れる。

$ curl --location https://rpm.nodesource.com/setup_8.x | bash - 

インストールすると丁寧にコレを入れろと以下のようなログが最後に出てくる

## Run `sudo yum install -y nodejs` to install Node.js 8.x LTS Carbon and npm.

## You may also need development tools to build native addons:
sudo yum install gcc-c++ make
## To install the Yarn package manager, run:
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
sudo yum install yarn

言われた通りコピペして流せばOK

$ sudo yum install gcc-c++ make

$ curl --location https://rpm.nodesource.com/setup_8.x | bash -
$ sudo yum install yarn

この時点で最低限必要なパッケージはOK

ElasticsearchとかはWiki内の全文検索で使用する。

インストールしたもののver.を確認。

[root@Wiki ~]# yarn -v

1.6.0
[root@Wiki ~]# node -v
v8.11.2
[root@Wiki ~]# npm -v
5.6.0


3. Growiのインストール

今回は/usr/local/bin/growiにインストールを行う。

gitでcloneしてyarnで入れる

$ cd /usr/local/bin

$ git clone https://github.com/weseek/growi.git
$ cd growi
$ yarn

自動起動用にgrowi.serviceファイルを/etc/systemd/system/に作成する

内容は以下の通り。


/etc/systemd/system/growi.service

[Unit]

Description=Growi
After=network.target mongod.service
[Service]
WorkingDirectory=/usr/local/bin/growi
EnvironmentFile=/etc/sysconfig/growi
ExecStart=/usr/bin/npm start
[Install]
WantedBy=Multi-user.target

※2018/05/18追記:これで自動起動できてません。誰か理由を教えて。。。

修正できたのでそのうち書きます

Growiの設定ファイルをgrowiというファイル名で/etc/sysconfig/に作成。


/etc/sysconfig/growi

PORT=3000

MODE_ENV=production
PASSWORD_SEED="openssl rand -base64 128 | head-1`"
MONGO_URI="mongodb://localhost/growi"
FILE_UPLOAD=local

Elasticsearchの設定は後で追加する。

まずは、最低構成のMongoDBだけ。

growi.serviceを作成したのでリロードして起動確認。

$ systemctl daemon-reload

$
$ systemctl start growi
$ systemctl status growi
● growi.service - Growi
Loaded: loaded (/etc/systemd/system/growi.service; disabled; vendor preset: disabled)
Active: active (running) since 木 2018-05-17 11:01:00 JST; 8s ago
Main PID: 11362 (npm)
CGroup: /system.slice/growi.service
tq11362 npm
tq11372 npm
tq11406 sh -c npm run clean && webpack --config config/webpack.prod.js --progress --profile --bail
mq11494 node /usr/local/bin/growi/node_modules/.bin/webpack --config config/webpack.prod.js --progress --profile --bail

##### 以下略 #######

起動に結構時間がかかる。1分~2分ぐらい?

Activeになっても直ぐにはアクセス出来ないので注意。


4. Firewallを設定

growi用にfirewall-cmdのサービスファイルを作成してFWの穴あけを行う。

$ cd /usr/lib/firewalld/services/

$ cp http.xml growi.xml

growi.xmlの内容を以下のように編集する。


/usr/lib/firewalld/services/growi.xml

<?xml version="1.0" encoding="utf-8"?>

<service>
<short>Growi(wiki)</short>
<description>Growi wiki</description>
<port protocol="tcp" port="3000"/>
</service>

リロードしてサービスファイルを読み込み、確認後に永続設定で穴あけ

※ 2018/11/18にTwitterでコメント貰ったので修正

$ firewall-cmd --reload

$ firewall-cmd --zone=public --add-service=growi
$ firewall-cmd --list-all

publicservicesgrowiがあればOK

$ firewall-cmd --list-all

public (active)
target: default
icmp-block-inversion: no
interfaces: ens224
sources:
services: ssh dhcpv6-client growi
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
$

アクセスできることを確認したうえで--runtime-to-permanent

設定値を永続設定として保存してリロード。

$ firewall-cmd --runtime-to-permanent

$ firewall-cmd --reload


5. MongoDB/Growiを立ち上げてアクセス確認

$ systemctl start mongod.service

$ systemctl start growi.service
$ systemctl status mongod.service
$ systemctl status growi.service

2つともActiveになっていることを確認。

http://localhost:3000にアクセスすればGrowiの

初期ログイン画面が見える。

問題なく起動していることを確認できたら自動起動をONにする。

$ systemctl enable mongod.service

$ systemctl enable growi.service


6. Elasticsearchを追加して全文検索可能にする

リポジトリを追加し新しいElasticsearchを引っ張ってこれるようにする。

設定しないと古いものが入る。

/etc/yum.repos.delasticsearch.repoを以下の内容で追加


/etc/yum.repos.d/elasticsearch.repo

[elasticsearch-5.x]

name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
auorefresh=1
type=rpm-md

設定したらyumでインストール

$ yum install elasticsearch

Elasticsearchはjavaを使うのでインストールする。

yum install java-1.8.0-openjdk-devel.x86_64

develdevelopmentの略。無印と違い開発版でヘッダファイルとかが一緒になってるらしい。

取り敢えず、そっちのほうが良いだろうで選択。

Redisも必要なのでインストールして自動起動ON

$ yum install epel-release

$ yum install redis
$ systemctl start redis
$ systemctl enable redis

java入れたら動くはずなので起動確認

$ systemctl start elasticsearch

$ systemctl status elasticsearch


7. Plug-inを追加し、日本語での全文検索に対応させる

Elasticsearchの全文検索を"日本語"対応させるために

2つPlug-inを追加する。

$ /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji

$ /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu


8. GrowiとElasticsearch/Redisの連携設定

3で作成した/etc/sysconfig/growiにElastcisearch/Redisの設定を追記。


/etc/sysconfig/growi

PORT=3000

MODE_ENV=production
PASSWORD_SEED="openssl rand -base64 128 | head-1`"
MONGO_URI="mongodb://localhost:27017/growi"
REDIS_URL="redis://localhost:6379/growi"
ELASTICSEARCH_URI="http://localhost:9200/growi"
FILE_UPLOAD=local

Growiを再起動

$ systemctl restart growi.service

$ systemctl status growi.service

アクセスして問題ないか確認する。

全文検索はindexをbuildさせないと可能にならない。

管理>全文検索管理>Build nowでインデックスを生成させればOK



おまけ:lsxプラグインの追加

インストール後、使っていたらlsxプラグインが入っていなかったので追加した。

$ systemctl stop growi

$ cd /usr/lobal/bin/growi
$ yarn add growi-plugin-lsx
$ systemctl start growi



参考資料:AWS 上の CentOS7 に Growi をインストールする