Crowi-Plus をUbuntuサーバーに入れてみた

# Crowi-Plus の構築　

## 参考

・[最強のWikiと呼び声の高い「Crowi」を、更に最強にした話](http://qiita.com/yuki-takei/items/5df9601039ccfc1df01f)
・[crowi-plusを試してみた](http://qiita.com/matsum0623/items/e5a911818141d551bb0f)
・[Markdownで書けるWiki - Crowi](http://qiita.com/nullsnet/items/a6e69e44087339127b35)
・[Ubuntuに最新のNode.jsを難なくインストールする](http://qiita.com/seibe/items/36cef7df85fe2cefa3ea)

## 環境
- OS: Ubuntu 16.04.2 LTS Server

## Ubutnu のインストール後の設定

とりあえず Ubuntu を最新にする。  

```
hoge@hage:~$ sudo apt update
hoge@hage:~$ sudo apt dist-upgrade
```

## crowi-plus のインストール

**Ubuntuに最新のNode.jsを難なくインストールする** を参考にさせていただいきました。
### node.jp

nodejs, npm をパッケージからインストール

```
hoge@hage:~$ sudo apt-get install -y nodejs npm
```

次に npm を使って n package を導入

```
hoge@hage:~$ sudo npm cache clean
hoge@hage:~$ sudo npm install n -g
```

n package を使って node をインストール

```
hoge@hage:~$ sudo n stable
hoge@hage:~$ sudo ln -sf /usr/local/bin/node /usr/bin/node
```

最初に入れた nodejs, npm は古いのでアンインストール

```
hoge@hage:~$ sudo apt-get purge -y nodejs npm
hoge@hage:~$ sudo apt-get autoremove -y
```

動作するか、最新バージョンかどうかを確認する

```
hoge@hage:~$ node -v
v8.0.0
hoge@hage:~$ npm -v
5.0.0
```
2017/06/10 時点の安定板のバージョンは v6.11.0 なので、ダウングレード

```
hoge@hage:~$ sudo n 6.11.0
hoge@hage:~$ node -v
v6.11.0
hoge@hage:~$ npm -v
3.10.10
```

### yarn
npm を使って yarn をインストールする

```
hoge@hage:~$ sudo npm install -g yarn
```

### MongoDB

参考
・[Install MongoDB Community Edition on Ubuntu](https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/)
・[How to Install MongoDB on Ubuntu 16.04](https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-ubuntu-16-04)

```
hoge@hage:~$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
hoge@hage:~$ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
hoge@hage:~$ sudo apt-get update
hoge@hage:~$ sudo apt-get install -y mongodb-org
```

mongodb のデーモン化の為の設定

```
hoge@hage:~$ sudo vi /etc/systemd/system/mongodb.service
```

以下の内容を設定

```
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target

[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

[Install]
WantedBy=multi-user.target
```
mongodb をOS起動時にデーモンで動かす様に設定

```
hoge@hage:~$ sudo systemctl start mongodb
hoge@hage:~$ sudo systemctl enable mongodb
```

### crowi-plus

/opt にインストールする場合

```
hoge@hage:~$ cd /opt/
hoge@hage:/opt$ sudo git clone https://github.com/weseek/crowi-plus.git
```
プラグインのインストール

```
hoge@hage:/opt$ cd crowi-plus
hoge@hage:/opt/crowi-plus$ sudo npm install --save crowi-plugin-lsx
hoge@hage:/opt/crowi-plus$ sudo npm install --save crowi-plugin-pukiwiki-like-linker
```

### 追加パッケージ取得

```
hoge@hage:/opt/crowi-plus$ sudo yarn
```

### 構築・動作確認

```
hoge@hage:/opt/crowi-plus$ sudo npm start
```
Ctl+c を押して終了させる。

## 自動起動の設定
### 環境変数ファイル crowi-plus を作成

```
hoge@hage:/opt/crowi-plus$ sudo vi crowi-plus
```

以下の内容を設定

```
FILE_UPLOAD=local
```

### 起動用に crowi-plus.sh を作成
```
hoge@hage:/opt/crowi-plus$ sudo vi crowi-plus.sh
```

以下の内容を設定

```
#! /usr/bin/sh

cd /opt/crowi-plus/
npm run server:prod

```

### 自動起動の為に crowi-plus.service を作成

```
hoge@hage:/opt/crowi-plus$ sudo vi /etc/systemd/system/crowi-plus.service
```
以下の内容を設定

```
[Unit]
Description=Crowi - The Simple & Powerful Communication Tool Based on Wiki
After=network.target mongod.service

[Service]
WorkingDirectory=/opt/crowi-plus
EnvironmentFile=/opt/crowi-plus/crowi-plus
ExecStart=/bin/bash /opt/crowi-plus/crowi-plus.sh

[Install]
WantedBy=multi-user.target

```

### 起動設定

```
hoge@hage:/opt/crowi-plus$ sudo systemctl enable crowi-plus
```

## 再起動・動作確認

```
hoge@hage:/opt/crowi-plus$ sudo shutdown -r now
```

再起動後、[server_ip:3000]にアクセスし、管理者作成画面が出れば成功！