前回、CentOS7.4にオンプレで使えるwikiのGROWiをインストールしてみました。フリーで使えるので、社内で情報共有したい場合に便利です。CentOSに導入すれば、基本的に費用をかけずに社内wikiをオンプレで構築することができます。


前回は初めての構築だったのでログも含めて無駄な情報が多かったので、今回は必要な情報を整理して、分かりやすく記載したいと思います。


これまでwikiに近い物では、redmineを構築したことがありますが、色んなOSSを使っていくことで、費用をかけずにシステムを利用できるようになります。


また、Wikiの便利なところは、エクセルやワードなどの資料と違い、データを開かなくても検索で必要な情報が入手できることですね。検索が便利なところがwikiの魅力です。ちなみに、メルカリもwikiにcrowiを採用していたそうです。


まずは、GROWIの公式サイトです。

https://growi.org/


続いて、機能の一部抜粋です。

●Markdown
左右2画面でのリアルタイムプレビューが可能。言語ごとのコードハイライトや絵文字や注釈(footnotes)、タスクリストにも対応しています。

●シンプルなアセット管理
ファイルのアップロードは編集画面にファイルをドロップするだけです。ストレージはローカルFSと AWS S3 のどちらかを選択できます

●高速な全文検索
ElasticSearch を利用したページ検索が可能です。日本語ユーザーにもやさしく、英数字は全角半角どちらでもヒットするようになっています。

●強力な認証機構・グループ管理
Passportによる認証機構を採用、LDAP 認証をサポートしています。(各種 OAuth 認証には、近々対応予定です)また、v3.0 からはグループごとのアクセスコントロールを搭載し、より柔軟なページ管理が可能になりました。


こちらのwikiはクラウド、docker、オンプレで構築できますが、今回はオンプレの手順を参考にしました。

https://github.com/weseek/growi#on-premise


【依存関係】
・node 8.x (DON'T USE 9.x)
・npm 5.x
・yarn
・MongoDB 3.x


【依存関係オプション】
・Redis 3.x
・ElasticSearch 5.x (needed when using Full-text search)


また、前回はデスクトップで構成しましたが、今回は最小構成にしました。


事前準備

・ネットワークの設定(割愛)
・ファイアウォールの無効化(割愛)
・SELinuxの無効化(割愛)

Node.js 8.x 系のインストール

まずは、Node.js 8.xのインストールです。ちなみに、公式サイトによると、9.xは使用しないほうがいいそうです。

-------------
yum -y install wget

wget https://rpm.nodesource.com/pub_8.x/el/7/x86_64/nodejs-8.11.2-1nodesource.x86_64.rpm

rpm -ivh nodejs-8.11.2-1nodesource.x86_64.rpm
-------------


続いてバージョン確認です。

-------------
# node -v
v8.11.2

# npm -v
5.6.0
-------------


MongoDB のインストール

続いて、MongoDBのインストールです。

Install MongoDB Community Edition on Red Hat Enterprise or CentOS Linux


まずはレポジトリファイルを作成します。

-------------
# vi /etc/yum.repos.d/mongodb-org-3.6.repo


以下の内容をコピーして、作成したファイルにペーストします。
[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.asc
[:wq!]で保存
-------------

MongoDBのインストール。

# yum install -y mongodb-org

MongoDBを起動してみます。

# systemctl start mongod
# systemctl status mongod

続いて、自動起動設定です。

# systemctl enable mongod
# systemctl list-unit-files | grep mongod
mongod.service                                enabled

DBへ接続してみる。バージョンも確認できますね。導入バージョンは「3.6.4」
※抜けるときは、「ctrl+c」

-------------
[root@TestServer ~]# mongo --host 127.0.0.1:27017
mongo --host 127.0.0.1:27017
MongoDB shell version v3.6.5
connecting to: mongodb://127.0.0.1:27017/
MongoDB server version: 3.6.5
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        http://docs.mongodb.org/
Questions? Try the support group
        http://groups.google.com/group/mongodb-user
Server has startup warnings:
2018-05-24T21:34:28.185+0900 I CONTROL  [initandlisten]
2018-05-24T21:34:28.185+0900 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-05-24T21:34:28.185+0900 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2018-05-24T21:34:28.185+0900 I CONTROL  [initandlisten]
2018-05-24T21:34:28.185+0900 I CONTROL  [initandlisten]
2018-05-24T21:34:28.185+0900 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2018-05-24T21:34:28.185+0900 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-05-24T21:34:28.185+0900 I CONTROL  [initandlisten]
2018-05-24T21:34:28.185+0900 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-05-24T21:34:28.185+0900 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-05-24T21:34:28.185+0900 I CONTROL  [initandlisten]
-------------

警告の消し方はこちらを参考にしてください。

CentOS7 MongoDB3系でAccess control is not enabled for the database警告


続いて、「redis」のインストールです。epelからインストールを行います。

-------------
# yum -y install epel-release


redisのインストール

「redis」のインストールです。

# yum -y install redis

バージョン確認と、自動起動設定です。

# redis-cli -v
redis-cli 3.2.10

# systemctl start redis
# systemctl enable redis

動作確認です。

# redis-cli ping
PONG


JAVAのインストール

JAVAのインストールです。

yum -y install java-1.8.0-openjdk

# java -version
penjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-b10)
OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)
-------------


Elasticsearchのインストール

続いて、Elasticsearchのインストールです。

vi /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
autorefresh=1
type=rpm-md
[wq!]で保存。

# yum -y install elasticsearch

依存関係オプションの以下の二つも合わせてインストールします。
・Redis 3.x
・ElasticSearch 5.x (needed when using Full-text search)

# /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
# /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu

続いてelasticsearchの自動起動設定です。

# systemctl start elasticsearch
# systemctl enable elasticsearch
systemctl list-unit-files | grep elasticsearch.service
elasticsearch.service                         enabled
-------------

yarnのインストール

wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
yum -y install yarn


GROWIのインストール

GROWIのインストールにgitを使うんですが、デフォルトでコマンドが通らなかったので、インストール。

# yum -y install git


続けてGROWIのインストール。

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

DBに接続します。
# MONGO_URI=mongodb://localhost:27017/growi npm start

ここで接続確認ができます。ちなみに上記コマンドで起動した場合は、ctrl+cで抜けるとGrowiに接続できなくなりますので、続いて、環境変数の定義に勧めます。

# vi /etc/sysconfig/growi

以下の内容をコピー&ペースト。
PORT=3000
NODE_ENV=production
MONGO_URI="mongodb://localhost:27017/growi"
REDIS_URL="redis://localhost:6379"
ELASTICSEARCH_URI="http://localhost:9200"
#SECRET_TOKEN=
PASSWORD_SEED="`openssl rand -base64 128 | head -1`"
FILE_UPLOAD=local
[wq!]で保存。

-------------

続いて自動起動の設定です。

# vi /etc/systemd/system/growi.service

[Unit]
Description=Growi
After=network.target mongod.service

[Service]
WorkingDirectory=/opt/growi
EnvironmentFile=/etc/sysconfig/growi
ExecStart=/usr/bin/npm start

[Install]
WantedBy=multi-user.target

上記をコピー&ペーストし、[wq!]で上書き保存します。設定ファイルを読み込み直し。

# systemctl daemon-reload

そして、起動起動設定を行います。

# systemctl start growi
# systemctl enable growi
# systemctl list-unit-files | grep growi
growi.service                                 enabled


この手順でそのままGROWIのURLにアクセスすると画面が表示されないので、一旦、サーバを再起動。

以下のURLからアクセスし、以下の画面が表示されればOKです。

growi000000



最初のアカウントを作成するとログインでき、そのアカウントは管理権限が付与されます。
growi000001


新機能のLADP認証やグループフィルターもできるのでおすすめのwikiサーバーです。