個人用のWikiをGrowiを用いて構築

# GROWI v3.4 から必要なミドルウェアのバージョンが変更になった為、本ページは参考になりません。


## 構築目的と背景
自分用のまとめを効果的に残す方法を探していました。
テキストやExcelなどではファイルの数が増え、サイズも大きくなり
自分のナレッジを引き出すのが面倒になった経験があります。
ただ、薄い内容や調べればすぐわかる内容をQiita等に公開するのは気が引けます。
そんな時にGrowiを見つけました。

## Growiとは
- Markdownで記事記載が可能
- ファイルのアップロードをサーバへ簡易的にできる
- Vim/Emacs/Sublime Text のキーマップをサポート。
- Elasticsearch を利用した検索が可能
- などなど  

■リンク
[https://growi.org/](https://growi.org/)
[公式デモサイト](https://demo.growi.org/)

## Growiを構築する上で必要なもの
今回構築した場所は社内の仮想マシン内(CentOS7.6)に構築しました。

必要なミドルウェア等のバージョンを確認します。
[Growi GitHub](https://github.com/weseek/growi)

| 必要なもの | Version |
| --- | --- |
| node | 8.x (DON'T USE 9.x) |
| npm | 6.x |
| yarn | - |
| MongoDB | 3.x |
| Redis | 3.x |
| Elasticsearch | 5.x |
| Japanese (kuromoji) Analysis plugin | - |
| ICU Analysis Plugin | - |
| git | - |

## 構築
必要なものを上からインストールしていきます。
※外部公開しない為、SELinuxは無効にしてあります。

###  Node.js

```
curl --silent --location https://rpm.nodesource.com/setup_8.x | bash -
```
すると以下のメッセージがでます。

```
## Run `sudo yum install -y nodejs` to install Node.js 8.x LTS Carbon and npm.
## You may also need development tools to build native addons:
     sudo yum install gcc-c++ make
## To install the Yarn package manager, run:
     curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
     sudo yum install yarn
```
なので指示通り以下を実行

```
yum -y install nodejs
```

-   gcc-c++ make

```
yum install gcc-c++ make
```
-   yarn
 
```
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
yum install yarn
```

### MongoDB

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

```
yum -y install mongodb-org
```


### Redis

```
yum -y install epel-release
yum -y install redis

systemctl start redis
systemctl enable redis
```


### java-1.8.0-openjdk  
  ※Elasticsearchを動作させる為にJavaが必要です。

```
yum -y install java-1.8.0-openjdk
```

### Elasticsearch

```
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
vi /etc/yum.repos.d/elasticsearch5.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
```

```
yum -y install elasticsearch
```

### Japanese (kuromoji) Analysis plugin 

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

### ICU Analysis Plugin

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


**サーバのメモリが少ない場合**
Elasticsearchはデフォルトで2GBのメモリを確保する設定になっています。
もし、AWSの安価なEC2を使うと起動出来ない為、以下の設定が必要となります。

```
vi /etc/elasticsearch/jvm.options
```

以下を削除またはコメントアウト

```
-Xms2g
-Xmx2g
```

任意のメモを割り当て（例:最大、最小ともに1GB）
※公式手順では256m

```
-Xms1g
-Xmx1g
```


### git

```
yum install git
```

### Growi  

 1.インストールするディレクトリへ移動

```
cd /usr/local/bin
```
  
2.Growiのインストール

```
git clone https://github.com/weseek/growi.git
cd growi
yarn
```

3.lsxプラグイン追加

```
yarn add growi-plugin-lsx
```

4.環境変数の設定

```
vi /etc/sysconfig/growi
```
内容は以下です。

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

5.systemctlコマンドでstart stopできるように設定

```
vi /etc/systemd/system/growi.service
```

内容は以下です。

```
[Unit]
Description=Growi
After=network.target mongod.service

[Service]
WorkingDirectory=/usr/local/bin/growi
EnvironmentFile=/etc/sysconfig/growi
ExecStart=/usr/bin/npm start

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

systemd の設定の再読み込み実施

```
systemctl daemon-reload
```


## Firewallの設定

```
firewall-cmd --add-port=3000/udp --zone=public --permanent
firewall-cmd --add-port=3000/tcp --zone=public --permanent
firewall-cmd --reload
```

## 色々起動

```
systemctl start elasticsearch
systemctl enable elasticsearch

systemctl start mongod
systemctl enable mongod

systemctl start growi
systemctl enable growi
```

##　起動確認

以下へアクセスすると管理者情報の登録画面が表示されます。
http://サーバIPアドレス:3000
![1.PNG](https://qiita-image-store.s3.amazonaws.com/0/316662/029ac9ce-3919-73d9-5eca-d9bd3f47e98b.png)

任意の情報を登録するとログイン画面が表示され、先ほどのIDとパスワードでログインが可能です。


## 終わりに

Wikiを構築したことで個人PCに散乱していたメモなどをジャンルごとに整理することができました。
自社環境では外部アクセスはできませんが、社内からはアカウント登録なしでも閲覧自体は可能な為、
案件の振り返りやナレッジの共有に活かすことができればと考えています。

## 参考リンク
[公式手順](https://docs.growi.org/getting-started)
[AWS 上の CentOS7 に Growi をインストールする](http://sig9.hatenablog.com/entry/2018/04/09/000000)
[CentOS7.5にGrowiをインストール](https://qiita.com/yuki476/items/122bd5cc10355ce02b68)
[CentOS7にGrowi(旧Crowi-Plus)をインストールする方法](https://qiita.com/SkyLaptor/items/d963157b81a87f3b5726)