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

はじめに

こんにちは!

テレワークに伴い、室内で運動するようには心掛けているのですが、この土日は久々にガッツリ歩きました。

するとどうでしょう。筋肉痛とかならわかるんですが、足の裏の皮が剥けちゃいました!
さすがに家で足裏は鍛えられなかった…。おうち大好きエンジニア森屋でございます。

今回は、以前から気になっていながらも触れていなかった、モダンなWikiツールであるGrowi を入れてみます。
公式ドキュメントがあるので楽勝だと思っていたら、意外と手こずりましたのでこの記事が誰かの助けになればと。

環境は、CentOS7.8(64bit)で割かしプレーンな状態で実施しています。

公式ドキュメントと本手順の大まかな差異について

・公式ドキュメントのインストール手順
https://docs.growi.org/ja/admin-guide/getting-started/centos.html

こちらの手順ですが、執筆時点でGrowi最新版が「v4.2.7」に対し、「v3.4.2」時代に書かれたものの様で、nodejsやMongoDBなど軒並みバージョンが合いません。

▼v3.4.2の場合

node.js 8.x (DO NOT USE 9.x)
npm 6.x
yarn
MongoDB 3.x
(Optional) Elasticsearch 5.x
(Optional) systemd
(Optional) Apache or nginx

▼v4.2.7の場合
 →https://github.com/weseek/growiによると

Node.js v12.x or v14.x
npm 6.x
yarn
MongoDB 4.x
Redis 3.x
ElasticSearch 6.x (needed when using Full-text search)
  CAUTION: Following plugins are required
    Japanese (kuromoji) Analysis plugin
    ICU Analysis Plugin

インストール手順

ちょこっといじってますが、基本的な流れ自体は、公式ドキュメントと大きく変えていません。

Node.jsインストール

https://github.com/nodesource/distributions
コチラに従い、v14をインストールします。

# curl -sL https://rpm.nodesource.com/setup_14.x | bash -
※nodejsインストール用のレポジトリが入ります

# yum install gcc-c++ make
※nodejsインストールのために必要だそうなので、実施

# yum install nodejs

Yarnインストール

# curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | tee /etc/yum.repos.d/yarn.repo
※こちらもレポジトリを入れる際に指示された通り、yarnのインストール

# yum install yarn
# node -v
----------------------------------------------------------
v14.15.4
----------------------------------------------------------

# npm -v
----------------------------------------------------------
6.14.10
----------------------------------------------------------

# yarn -v
----------------------------------------------------------
1.22.5
----------------------------------------------------------# 

Elasticsearchインストール

https://www.elastic.co/guide/en/elasticsearch/reference/current/rpm.html
コチラに従い、v6をインストールします。

# yum install java-1.8.0-openjdk
※JDKが入ってなかったので、まずこちらを入れます

# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
# vi /etc/yum.repos.d/elasticsearch6.repo
----------------------------------------------------------
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
----------------------------------------------------------

# yum install elasticsearch
# yum list installed |grep elasticsearch
----------------------------------------------------------
elasticsearch.noarch                 6.8.13-1                       @elasticsearch-6.x
----------------------------------------------------------

自動起動設定を入れます。

# systemctl start elasticsearch
# systemctl enable elasticsearch
# systemctl status elasticsearch

推奨されているElasticsearchプラグインをインストールします。

# rpm -ql elasticsearch | grep bin | grep plugin
----------------------------------------------------------
/usr/share/elasticsearch/bin/elasticsearch-plugin
----------------------------------------------------------

# /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
----------------------------------------------------------
-> Downloading analysis-kuromoji from elastic
[=================================================] 100%??
-> Installed analysis-kuromoji
----------------------------------------------------------

# /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
----------------------------------------------------------
-> Downloading analysis-icu from elastic
[=================================================] 100%??
-> Installed analysis-icu
----------------------------------------------------------

MongoDBインストール

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
コチラに従い、v4.4をインストールします。
画面左上にバージョン選択画面があると思うので、執筆時点の4系最新版を選択しました。

# vi /etc/yum.repos.d/mongodb-org-4.4.repo
----------------------------------------------------------
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
----------------------------------------------------------

# yum install mongodb-org
# yum list installed |grep mongodb
----------------------------------------------------------
mongodb-database-tools.x86_64        100.2.1-1                  @mongodb-org-4.4
mongodb-org.x86_64                   4.4.2-1.el7                @mongodb-org-4.4
mongodb-org-database-tools-extra.x86_64
                                     4.4.2-1.el7                @mongodb-org-4.4
mongodb-org-mongos.x86_64            4.4.2-1.el7                @mongodb-org-4.4
mongodb-org-server.x86_64            4.4.2-1.el7                @mongodb-org-4.4
mongodb-org-shell.x86_64             4.4.2-1.el7                @mongodb-org-4.4
mongodb-org-tools.x86_64             4.4.2-1.el7                @mongodb-org-4.4
----------------------------------------------------------

自動起動設定を入れます。

# systemctl start mongod
# systemctl enable mongod
# systemctl status mongod

Growiインストール

公式手順に従い、最新版をインストールします。

# cd /opt/
# git clone https://github.com/weseek/growi /opt/growi
# cd /opt/growi/
# git tag -l
----------------------------------------------------------
…
v4.2.0
v4.2.1
v4.2.2
v4.2.3
v4.2.4
v4.2.5
v4.2.6
v4.2.7
----------------------------------------------------------
※RCがついてない最新版をインストールします

# git checkout -b v4.2.7 refs/tags/v4.2.7
----------------------------------------------------------
Switched to a new branch 'v4.2.7'
----------------------------------------------------------

# git branch
----------------------------------------------------------
  master
* v4.2.7
----------------------------------------------------------

# cd /opt/growi/
# yarn

起動確認

# MONGO_URI=mongodb://localhost:27017/growi \
  ELASTICSEARCH_URI=http://localhost:9200/growi \
  npm start

以下のメッセージが表示されるまでしばらく待つ
----------------------------------------------------------
> growi@4.2.7 server:prod /opt/growi
> env-cmd -f config/env.prod.js node src/server/app.js
----------------------------------------------------------

アクセスし、初回セットアップ画面が表示されることを確認(確認だけ。セットアップは実施しない)
http://growi.example.com:3000

systemdでのGrowi自動起動

# vi /etc/systemd/system/growi.service
----------------------------------------------------------
[Unit]
Description=Growi
After=network.target mongod.service

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

[Install]
WantedBy=multi-user.target
----------------------------------------------------------

# systemctl start growi
# systemctl enable growi
# systemctl status growi

# watch -n 1 "netstat -lntp | grep :3000"
→ポートがLISTENするまでしばらく時間がかかるため、辛抱強く待ちます

リバプロ設定(Apache)

公式ドキュメントでは、Apache(80番ポート)経由でアクセスできる様にする手順まで気を配ってくれています。

# yum install httpd
# vi /etc/httpd/conf.d/growi.conf
----------------------------------------------------------
<VirtualHost *:80>
    ServerName growi.example.com  # ←このドメインは環境に応じて変えてください
    ProxyPreserveHost On
    RequestHeader set x-forwarded-proto 'http'
    <ifModule mod_headers.c>
            Header unset ETag
    </ifModule>
    FileETag None
    RewriteEngine On
    RewriteCond %{REQUEST_URI}  ^/socket.io            [NC]
    RewriteCond %{QUERY_STRING} transport=websocket    [NC]
    RewriteRule /(.*) ws://localhost:3000/$1 [P,L]
    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/
</VirtualHost>
----------------------------------------------------------

自動起動設定を入れます。

# systemctl start httpd
# systemctl enable httpd
# systemctl status httpd

インストール完了

あとはアクセスしてみて、この様な画面が出たらOKです。

Growi初期セットアップ

アカウントを作り、初期セットアップをしていきましょう。

おつかれさまです!

おわりに

たくさんプラグインも用意されているので、情報共有の幅が広がりそうです。

しかし色々なミドルウェアを介しているので、運用面は気配りが要りそうですね。
開発元の提供するクラウドサービスも有る様なので、一度オンプレで入れてみて、大変そうだったらコチラに乗り換えるのもアリかなと。

今回は以上です。お読みくださり、ありがとうございました。

ではまた!

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA