AzureにWiki「Crowi-Plus」をインストールしてみる


# Wiki「Crowi-Plus」とは、

Crowiは、MarkDownで書けるWikiです。
そのCrowiを発展させたのが、「[Crowi-Plus](https://github.com/weseek/crowi-plus)」です。

社内で、リファレンスなどの管理するために、Microsoft Wordを使用していましたが、Wiki化して、MarkDown形式で入力できないかと探していたところ、Crowiにたどり着き、さらにその発展版があることを知りました。
API仕様書など社内Wikiには、もってこいのシステムのようです。

普段、Windows Server利用が多いので、CentOSは、初めて立てたので違う点があるかもしれませんが、構築手順を用意しました。

# イメージ
![ダウンロード (6).png](https://qiita-image-store.s3.amazonaws.com/0/90597/22beefa8-c01e-f0c0-0e06-d6d808135655.png)

# 参考
[最強のWiki「Crowi」のフォーク、「crowi-plus」を公開した話](https://qiita.com/yuki-takei/items/5df9601039ccfc1df01f)
[CrowiをCentOSにインストール](https://qiita.com/kaitoii11/items/fc5eec7b97f2b4c91a0e)
[Crowi-Plusにプラグインを導入する方法](https://qiita.com/SkyLaptor/items/c121a86318fdae1d64f4)


# 依存関係

> Dependencies
>> node 6.x (DON'T USE 7.x)
>> npm 4.x (DON'T USE 5.x)
>> yarn
>> MongoDB 3.x
> 
>> Optional Dependencies
>>> Redis 3.x
>>> ElasticSearch 5.x (needed when using Full-text search)
>>> CAUTION: Following plugins are required
>>> Japanese (kuromoji) Analysis plugin
>>> ICU Analysis Plugin

# CentOSをAzureに構築

- Azure Portalに接続してリソースグループを作成

![WS000000550.JPG](https://qiita-image-store.s3.amazonaws.com/0/90597/8f98b92e-1713-f1e3-68bd-dfcf283d848b.jpeg)


|項目|値|
|---|---|
|リソースグループ|任意：CROWI|
|場所|任意：東日本|

- 作成したリソースグループ内でVMを追加する
- 今回は、CentOS7.4を選択、デプロイモデルは、Resource Managerを選択

![WS000000551.JPG](https://qiita-image-store.s3.amazonaws.com/0/90597/b270d449-af85-4a70-c2cc-e2495a19d6a8.jpeg)

- 作成するサーバ情報の設定

![WS000000552.JPG](https://qiita-image-store.s3.amazonaws.com/0/90597/5e20b5a8-0c00-c008-0571-3f0b5960b91b.jpeg)

|項目|値|
|---|---|
|コンピュータ名|任意：SVAZCROWI|
|VMディスク種類|任意：HDD|
|ユーザ名|任意：crowiadmin|
|認証の種類|任意：パスワード|
|パスワード|任意：任意のパスワード|
|リソースグループ|任意：作成したグループ<br/>  今回は、CROWI|
|場所|任意：東日本|

- 作成するサーバのサイズの設定

![WS000000553.JPG](https://qiita-image-store.s3.amazonaws.com/0/90597/88037d23-15a7-f045-5611-e096806fb276.jpeg)

|項目|値|
|---|---|
|サイズ|任意：B2s Standard|

※ Standard B2sにした理由としては、今回は、HDDで作成しますが、プレミアムストレージにも接続できるから後から増強することが可能なため。

- その他設定

![WS000000555.JPG](https://qiita-image-store.s3.amazonaws.com/0/90597/2526e416-d58a-4760-ff7c-891e58eaa8aa.jpeg)

|項目|値|
|---|---|
|可用性セット|なし|
|管理ディスク|あり|
|診断ディスク|なし|
|バックアップ|なし|

- VMを作成実行が完了したら、sshを自分のグローバルアドレスのみ接続可能に変更
作成されたネットワークセキュリティグループ（SVAZCROWI-nsg）を開き、「default-allow-ssh」を選択する。
ソースをanyから「IP Addresses」を選択し、ソースIPアドレスに、自身のグローバルアドレスを入力して保存する。

![ダウンロード (1).png](https://qiita-image-store.s3.amazonaws.com/0/90597/e766003d-fd19-95ee-a686-df6111e192db.png)

|項目|値|変更|
|---|---|---|
|ソース|IP Addresses|〇|
|ソースIPアドレス|自身のグローバルアドレス|〇|
|ソースポート| * |-|
|宛先|Any|-|
|宛先ポート範囲| 22 |-|
|プロトコル| TCP |-|
|アクション| 許可 |-|
|優先度| 1000 |-|
|名前|default-allow-ssh|-|

- 許可ポートの追加

追加を押して追加の許可ポートを設定します。

|項目|値|
|---|---|
|ソース|IP Addresses|
|ソースIPアドレス|自身のグローバルアドレス|
|ソースポート| * |
|宛先|Any|
|宛先ポート範囲| 3000 |
|プロトコル| TCP |
|アクション| 許可 |
|優先度| 100 |
|名前|Port_3000|

# インストール作業

## Tera Termでの接続 

- この後の作業は、Tera Termを使って行います。

- Tera Termをインストールしていなければ、インストールしてください。
- 作成したVMの概要から接続を押し、sshの後ろの部分をコピーする。

![ダウンロード (3).png](https://qiita-image-store.s3.amazonaws.com/0/90597/b7bf6898-a28b-49cf-7eed-1b8a0aea4056.png)

- Tera Termのホスト欄にコピーを張り付ける。

![WS000000567.png](https://qiita-image-store.s3.amazonaws.com/0/90597/71d20d97-f501-98d2-eab0-35346a3ebd44.png)
※　以降は、Tera Termでの処理になります。

## アップデート

```bash
$ sudo yum update　
```

## nanoのインストール

-  ``vi`` でもrepoを作成できますが、nanoが便利なのでインストールします。

```bash
$ sudo yum install git wget nano
```

## Node.jsのインストール

- Node.js（6.x系）をインストールします。

```bash
$ sudo yum install -y epel-release
$ sudo yum group install "Development Tools"
$ curl --fail -sSL -o setup-nodejs https://rpm.nodesource.com/setup_6.x
$ sudo bash setup-nodejs
```

## Redis のインストール

- Redisのインストール

```bash
$ sudo yum -y install epel-release
$ sudo yum -y install redis
```

- Redisの起動と自動起動設定

```bash
$ sudo systemctl start redis
$ sudo systemctl enable redis
```

## MongoDBのインストール

-  /etc/yum.repos.d/mongodb-org.repo 作成

```bash
$ sudo nano /etc/yum.repos.d/mongodb-org.repo
```

- nanoが開いたら 以下を貼り付けて保存

```text:/etc/yum.repos.d/mongodb-org.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
```

- MongoDB本体のインストール

```bash
$ sudo yum install -y mongodb-org
```

- MongoDBの起動と自動起動設定

```bash
$ sudo systemctl start mongod
$ sudo systemctl enable mongod
```

## Elasticsearchプラグインのインストール

- Javaのインストール

```bash
$ sudo yum install -y java-1.8.0-openjdk
```

- /etc/yum.repos.d/elasticsearch.repoの作成

```bash
$ sudo nano /etc/yum.repos.d/elasticsearch.repo
```

- nanoが開いたら 以下を貼り付けて保存

```text:/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
```

- Elasticsearchプラグイン本体のインストール

```bash
$ sudo yum install -y elasticsearch
```

- 日本語検索プラグイン（kuromoji ＆ ICU(International Components for Unicode)）もインストール

```bash
$ sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
$ sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
```

- Elasticsearchプラグインの起動と自動起動設定

```bash
$ sudo systemctl start elasticsearch
$ sudo systemctl enable elasticsearch
```

## yarnのインストール
```bash
$ sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
$ sudo yum -y install yarn
```

## npmのアップデート

```bash
$ sudo npm install -g npm@4.6.1
```

## Crowi-Plus のインストール

- 今回は `/opt/crowi-plus` ディレクトリにインストールします。

```bash
$ cd /opt
$ sudo git clone -b v2.3.8 https://github.com/weseek/crowi-plus.git
$ cd crowi-plus
$ sudo yarn
```

※ v2.4.0は、2018/02/10時点でRCとなっていたので、v2.3.8を選択していますが、バージョン指定を行わないのであれば、-b v2.3.8は、外して構いません。

- 環境パラメータの作成（ ``/etc/sysconfig/crowi`` ）

```bash
$ sudo nano /etc/sysconfig/crowi

```

- nanoが開いたら 以下を貼り付けて保存

```text:/etc/sysconfig/crowi
PORT=3000
NODE_ENV=production
MONGO_URI="mongodb://localhost:27017/crowi"
REDIS_URL="redis://localhost:6379/crowi"
ELASTICSEARCH_URI="http://localhost:9200/crowi"
#SECRET_TOKEN=
PASSWORD_SEED="`openssl rand -base64 128 | head -1`"
FILE_UPLOAD=local
```

- 自動起動パラメータの作成( ``/etc/systemd/system/crowi.service`` )

```bash
$ sudo nano /etc/systemd/system/crowi.service
```

- nanoが開いたら 以下を貼り付けて保存

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

[Service]
WorkingDirectory=/opt/crowi-plus
EnvironmentFile=/etc/sysconfig/crowi
ExecStart=/usr/bin/npm start

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

- サービスの読み込み

```bash
$ sudo systemctl daemon-reload
```

## crowi-plus-lsxプラグインのインストール

```bash
sudo yarn add crowi-plugin-lsx
sudo npm start
```

## Crowi-Plusの起動

- Crowi-Plusの起動と自動起動設定

```bash
$ sudo systemctl start crowi
$ sudo systemctl enable crowi
```

# Crowi-Plusページにブラウザでアクセス

- http://アドレス:3000 をブラウザで開く
- 開いたら管理者アカウントの作成が表示されるので、必要情報を入力し、作成する。

![ダウンロード.png](https://qiita-image-store.s3.amazonaws.com/0/90597/1acd0b62-51c2-188c-f1b5-ae72bf7da4ef.png)

- 一旦作成した管理者アカウントでログインを行う。

![ダウンロード (4).png](https://qiita-image-store.s3.amazonaws.com/0/90597/936ffa17-67f8-485e-ca2f-1029a3badf1a.png)

- ログイン後、設定等を行う。

![ダウンロード (12).png](https://qiita-image-store.s3.amazonaws.com/0/90597/71c7c865-0cc9-397a-7535-53c454136738.png)

プラグインも入っていることが確認できます。

後は、ユーザー管理でユーザーを追加していけば、使えるようになります。