AWSのEC2、Amazon LinuxにCrowiをインストールする

# node.jsをインストールする

ファイルを取得する。
```
cd /tmp
sudo curl -O http://nodejs.org/dist/v8.11.1/node-v8.11.1-linux-x64.tar.gz
```
インストールを行う。
```
sudo tar --strip-components 1 -xzvf node-v8.11.1-linux-x64.tar.gz -C /usr/local
```
インストールが正常にされているかバージョンを確認する。
```
node -v
v8.11.1
```

#mongodbをインストールする
yum リポジトリの定義ファイルを作成する。
```
sudo vi /etc/yum.repos.d/mongodb.repo
```
以下のように編集する。
```
[mongodb]
name=MongoDB repo
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=0
```
インストールします。
```
sudo yum --enablerepo=mongodb install -y mongodb-org
```
DBをスタートさせる。
```
sudo service mongod start
```
バージョンを確認する
```
mongo
db.version
2.6.12
```
Crowi 用の DB を作成します。
ここでは DB 名は crowidb としました。
```
use crowidb
switched to db crowidb
```
続いてユーザを作成。
ここではとりあえず、ユーザ名「crowi」パスワード「password0」としました。
```
db.createUser({user: "crowi", pwd: "password0", roles: [{role: "readWrite", db: "crowidb"}]});
Successfully added user: {
        "user" : "crowi",
        "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "crowidb"
                }
        ]
}
```

#Redis のインストール
EPEL からインストールします。
```
sudo rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7
sudo yum --enablerepo=epel install -y redis
```
インストールしたらサービスを起動。
自動起動設定も有効にします。
```
sudo service redis start
sudo chkconfig redis on
```
接続できるか確認しておきます。
```
redis-cli -h localhost INFO Server
```

#ElasticSearch のインストール
まずは Java をインストールします。
```
sudo yum install -y java-1.8.0
```
yum リポジトリからインストールするため、GPG Key をインストール。
```
sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
```
リポジトリ定義ファイルを作成。
```
sudo  vi /etc/yum.repos.d/elasticsearch.repo
```
以下のように編集します。
```
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=https://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
enabled=0
```
インストール、起動、自動起動設定の有効化を行います。
```
sudo yum --enablerepo=elasticsearch-2.x install -y elasticsearch
sudo service elasticsearch start
sudo chkconfig elasticsearch on
```
日本語に対応するため、analysis-kuromoji をインストールします。
```
sudo /usr/share/elasticsearch/bin/plugin install analysis-kuromoji
```
プラグインが読めているか確認する。
```
sudo service elasticsearch restart
sudo curl -X GET 'http://localhost:9200/_nodes/plugins?pretty' | grep Japanese
```

#Crowi のインストール
まずは git と krb5-devel をインストール。
```
sudo yum install -y git krb5-devel
```
アプリケーション配置用ディレクトリを作成します。
ここでは「/var/apps」にしました。
```
sudo mkdir /var/apps && cd /var/apps/
```
crowi を Github から clone して v1.6.0 タグをチェックアウトします。
```
sudo git clone https://github.com/crowi/crowi.git && cd crowi/
sudo git checkout refs/tags/v1.6.0
sudo yum -y install gcc gcc-c++
```
フォルダのオーナーを変更する。
```
cd ..
sudo chown ec2-user:ec2-user -R crowi/
cd crowi
```
npm install を実行します。
ここが結構時間がかかります。
```
npm install
```
CSS, JS のビルドを実行。
画面にアクセスしてデザインが崩れている場合はこれが抜けている可能性が高いです。
```
npm run build
```
適当なパラメータで実行
```
FILE_UPLOAD=local PASSWORD_SEED=password0 MONGO_URI=mongodb://localhost/crowidb npm start
```
動作を確認する。
```
http://localhost:3000/
```
動作を確認できたら止める
```
npm stop
```
foreverで自動起動させるように設定していく
```
npm install -g forever initd-forever log
 ```
init.dスクリプトの作成
```
initd-forever -n crowi
chmod +x crowi
sudo mv crowi /etc/init.d
```

引数等を足す (FILE_UPLOAD=localを入れています)
```
sudo vim /etc/init.d/crowi
- nodeApp="/home/username/crowi"
+ nodeApp="/home/username/crowi/app.js"
- $foreverApp start --pidFile $pidFile -l $logFile -a -d -c "$command" $nodeApp
+ FILE_UPLOAD=local PASSWORD_SEED=password0 MONGO_URI=mongodb://localhost/crowidb $foreverApp start --pidFile $pidFile -l $logFile -a -d -c "$command" $nodeApp
```
起動設定
```
sudo chkconfig crowi --add
sudo chkconfig crowi on
sudo chkconfig crowi list
sudo service crowi start
```