CentosにGrowiのv5.xを導入する方法

CentOS上にGrowiのv5.xを立ててみました。
# 構築した環境
- CentOS: 7.9
- nodejs: v14.21.1
- npm: 6.14.7
- yarn: 1.22.19
- elasticsearch: 7系(Growiのv5.x以降はelasticsearchの6系でも動くらしいが将来的なことを考えて7系にしました)
- Mongodb: 4.4
- Growi: 5.0.12

## node.js&yarnのインストール
作業ディレクトリはホームディレクトリです

node.jsのインストール
今回はv14をインストールします。
```
curl -sL https://rpm.nodesource.com/setup_14.x | bash -
yum install gcc-c++ make
yum install nodejs
```

yarnのインストール
```
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | tee /etc/yum.repos.d/yarn.repo
yum install yarn
```


## elasticsearchのインストール
elasticsearchは全文検索の機能を使うのに必要なものらしいです。
- JDKのインストール
```
yum install java-1.8.0-openjdk
```

- RPM公開鍵のインポート
```
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
```

- yumにリポジトリを認識させる
```
vi /etc/yum.repos.d/elasticsearch7.repo

[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
```

- elasticsearchのインストール
```
yum install elasticsearch

yum list installed | grep elasticsearch
```
正しくインストールできているかを確認する

- elasticsearchの自動起動の設定をする
```
systemctl start elasticsearch
systemctl enable elasticsearch
systemctl status elasticsearch
```
＊ここでもしかしたら[job for ○○]というエラーが出るかも？(原因不明)

- 推奨されているelasticsearchプラグインをインストール
```
rpm -ql elasticsearch | grep bin | grep plugin
--------------------------------------------------
/usr/share/elasticsearch/bin/elasticsearch-plugin（多分これと同じものが出る）
--------------------------------------------------
```
上に表示されているものと下は同じにする
```
/usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji

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

## MongoDBインストール
- リポジトリの作成
```
[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
```
＊私はこの部分のタイポに気づかずに引っ掛かりました

- mongodbのインストール
```
yum install mongodb-org
```
- インストール出来ているか確認
```
yum list installed | grep mongodb
```

- mongodbの自動起動の設定をする
```
systemctl start mongod
systemctl enable mongod
systemctl status mongod
```

## Growiのインストール
今回は/opt配下にインストールします。

Growiのリポジトリをクローンするのにgitが必要なのでインストールします
```
yum install git
```

```
cd /opt/
git clone https://github.com/weseek/growi /opt/growi
cd /opt/growi/
git tag -l
```

```
git checkout -b v5.○○ refs/tags/v5.○○
```
この時v5.0以降じゃないとGrowiのページツリーの実装がされてないので注意！！

```
cd /opt/growi/
yarn
```

## 起動確認
```
MONGO_URI=mongodb://localhost:27017/growi \
ELASTICSEARCH_URI=http://localhost:9200/growi \
npm start
```
＊ここで少し時間がかかります

## 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
```
これで挿入は完了です。
http://127.0.0.1:3000 でつながると思います。

# 最後に
Growiはバージョンによって依存関係が変わってくるのでその際は適宜変更することを注意してください
この記事が誰かの役に立てば幸いです。


## 参考記事
https://docs.growi.org/ja/admin-guide/getting-started/centos.html