Crowiのセットアップ方法

CentOS7にCrowi1.6をインストールする方法

## 検証環境
* CentOS 7.4 x64 (Minimal Install)

## セットアップ前のシステム状態
```shell-session:
# systemctl list-unit-files --type=service | grep enabled
autovt@.service                               enabled 
chronyd.service                               enabled 
crond.service                                 enabled 
dbus-org.freedesktop.NetworkManager.service   enabled 
dbus-org.freedesktop.nm-dispatcher.service    enabled 
getty@.service                                enabled 
irqbalance.service                            enabled 
lvm2-monitor.service                          enabled 
microcode.service                             enabled 
NetworkManager-dispatcher.service             enabled 
NetworkManager.service                        enabled 
rsyslog.service                               enabled 
sshd.service                                  enabled 
systemd-readahead-collect.service             enabled 
systemd-readahead-drop.service                enabled 
systemd-readahead-replay.service              enabled 
tuned.service                                 enabled
# getenforce
Disabled
```

## セットアップに必要なモジュールのインストール
```shell-session:
# yum install gcc-c++ make git krb5-devel
# rpm -qa | grep gcc-c++
gcc-c++-4.8.5-16.el7.x86_64
# rpm -qa | grep make
make-3.82-23.el7.x86_64
# rpm -qa | grep git-
git-1.8.3.1-12.el7_4.x86_64
# rpm -qa | grep krb5-devel
krb5-devel-1.15.1-8.el7.x86_64
```


## Node.jsのインストール
```shell-session:
# curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
# yum install nodejs
# rpm -qa | grep nodejs
nodejs-6.11.3-1nodesource.x86_64
```

参考: https://nodejs.org/ja/download/package-manager/


## MongoDBのインストール
yumでインストールすると古いバージョンが入るため、新しいリポジトリに向ける。

```shell-session:
# vi /etc/yum.repos.d/mongodb.repo
# yum install mongodb-org
# rpm -qa | grep mongodb-org
mongodb-org-tools-3.4.9-1.el7.x86_64
mongodb-org-server-3.4.9-1.el7.x86_64
mongodb-org-mongos-3.4.9-1.el7.x86_64
mongodb-org-shell-3.4.9-1.el7.x86_64
mongodb-org-3.4.9-1.el7.x86_64
# systemctl enable mongod
# systemctl start mongod
# mongo
> use crowi
> quit()
```

```bash:mongodb.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
```

参考: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/


## Crowiのインストール
```shell-session:
# git clone https://github.com/crowi/crowi.git
# cd crowi
# git tag
v1.0.3
v1.0.4
v1.1.1
v1.1.2
v1.2.0
v1.3.0
v1.3.1
v1.4.0
v1.5.0
v1.5.1
v1.5.2
v1.5.3
v1.6.0
v1.6.1
v1.6.2
# git checkout v1.6.2
# npm install
# npm run build
```

## Crowiのサービス化
```shell-session:
# vi /etc/systemd/system/crowi.service
# vi /etc/sysconfig/crowi
# systemctl daemon-reload
```

```bash:/etc/systemd/system/crowi.service
[Unit]
Description=Crowi
After=network.target mongod.service

[Service]
WorkingDirectory=/root/crowi
EnvironmentFile=/etc/sysconfig/crowi
ExecStart=/usr/bin/node app.js

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

```bash:/etc/sysconfig/crowi
PORT=3000
NODE_ENV=production
MONGO_URI="mongodb://localhost/crowi"
PASSWORD_SEED="`openssl rand -base64 128 | head -1`"
FILE_UPLOAD=local
```

## Crowiの起動
```shell-session:
# systemctl start crowi
# systemctl enable crowi
```


## Crowiの起動確認
Webブラウザを起動し、以下のURLにアクセスする。
http://CrowiサーバーのIPアドレス:3000

![2017-09-22_10h28_26.png](https://qiita-image-store.s3.amazonaws.com/0/97774/7465cccc-e4cf-8df2-7ca4-600830488e20.png)


## 参考
https://qiita.com/bezeklik/items/48fe054c2df05f03f3d1
https://qiita.com/nooby/items/9b197c2b666d6b8371e1