CentOS7にDevHubを入れてみた。


CentOS7にDevHubをインストールした時の記録です。
だいたいOSのインストールから始めて1時間程度です。
CentOS7が初めてだったので、ネットワーク関連の設定から始まります。
なお、sudoしてないのは、ぜんぶrootで実行しているからです。（良くない。）

## 1. CentOS7の初期設定

CentOS7をインストールしたら、とりあえずネットワークやfirewall、そしてSELinuxの設定を行います。

### 1.1. ネットワーク設定

とりあえずホスト名を表示してみます。

```
nmcli g hostname
```

必要であればホスト名を変更します。

```
nmcli g hostname hogehoge
```

次にネットワークインタフェースの一覧を表示してみます。

```
nmcli c show
```

さらに詳細を表示してみます。

```
nmcli —fields connection c show eth0
```

`connection.autoconnect`が`no`であれば、OS起動時に自動的にネットワークが起動しないので、`yes`に変更します。

```
nmcli c mod eth0 connection.autoconnect yes
```

その他、ネットワークインタフェースの情報（ここではIPv4関連）を表示し内容を確認します。

```
nmcli —fields ipv4 c show eth0
ip a show
```

変更が必要なものがあれば、変更します。

### 1.2. firewallの設定

まずは、現状の稼働状態を表示します。

```
systemctl status firewalld
```

そして、設定内容を確認します。

```
firewall-cmd —list-all
```

おそらくhttp（80番ポート）は開いていないので、開けます。

```
firewall-cmd —permanent —add-service=http
```

この設定だと、永続的（一時的ではない）設定が行われますが、現時点では反映されていない（80番は開いていない）ので、反映します。

```
firewall-cmd —reload
```

### 1.3. SELinuxの設定

MongoDBの本家に「ちゃんと設定するかdisabledにしろ」的なことが書いてあったので、今回はdisabledにします。

```
vi /etc/selinux/config
```

`SELINUX=enforcing`を`SELINUX=disabled`に変更すると、再起動後にSELinuxが止まります。

## 2. 前提条件のインストール

DevHubの動作に必要なミドルウェアなどをインストールします。yumを使って手っ取り早くやってしまいます。

### 2.1. MongoDBのインストール

MongoDBは標準のリポジトリにはないので、mongodb-orgのリポジトリを追加します。

```
vi /etc/yum.repos.d/mongodb-org-3.0.repo
```

内容は下記の通りです。

```mongodb-org-3.0.repo
[mongodb-org-3.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/
gpgcheck=0
enabled=1
```

yumでMongoDBをインストールします。

```
yum install mongodb-org
```

OSごと再起動して、MongoDBが起動することを確認します。

```
reboot
```

mongodbの状態は下記で確認できます。

```
systemctl status mongod
```

### 2.2. node.jsとgitのインストール

node.jsが標準のリポジトリにないので、EPELを使えるようにしてしまいます。

```
yum install epel-release
```

yumを使ってnode.js、npm、gitをインストールします。

```
yum install nodejs npm git
```

## 3. DevHubのインストール

DevHubをインストールします。ついでに、OS起動時に自動的に起動するようにします。

### 3.1. DevHubのインストール

DevHubを配置する場所に移動します。今回は`/srv`を使用してしまいます。

```
cd /srv
```

GitHubからクローンします。

```
git clone https://github.com/volpe28v/DevHub.git
```

必要なライブラリをnpmでインストールします。

```
cd DevHub
npm install
```

試しに起動してみます。firewallが動作していて80番ポートしか開けていないので、80番で待ち受けるようにします。

```
node app.js -p 80
```

起動するまで結構な時間がかかるようですが、しばらく経つとブラウザでアクセスできるようになります。

### 3.2. 自動起動にする

node.jsのアプリケーションをdaemon化するforeverをインストールします。一緒に、foreverのinit.d用スクリプトを作成するinitd-foreverもインストールします。

```
npm install -g forever initd-forever
```

foreverのinit.d用スクリプトを作成します。

```
initd-forever -a /srv/DevHub/app.js -n devhub
```

init.dから起動した場合も80番ポートで待ち受けるように、生成されたスクリプトを修正します。

```
vi devhub
```

`$foreverApp start 〜`の最後に` -p 80`を付けます。
そして、修正したスクリプトをinit.dへ移動し、実行できるようにします。

```
cp devhub /etc/init.d
chmod a+x /etc/init.d/devhub
```

OS起動時に自動的に起動するように設定します。

```
chkconfig devhub on
```

OSを再起動してみます。

```
reboot
```

DevHubが使用できれば、完成です。

## 4. 参考情報

下記の情報を参考にさせていただきました。

- DevHubの本家
    https://github.com/volpe28v/DevHub/

- MongoDB本家にあるCentOSへのインストール方法
    http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat/

- DevHubのインストール方法
    http://wiki.rookie-inc.com/serverapps/devhub

- 「CentOS7.1でNetwork ManagerのCUIを使ってネットワーク設定をする」
    http://te2u.hatenablog.jp/entry/2015/07/10/014214

- 「CentOS7.1 64bit firewalldによるアクセス制御」
    http://www.kakiro-web.com/linux/firewalld.html

- 「node.jsをyumでインストールする(centos6.5)」
    http://qiita.com/you21979@github/items/4efd9fc4363573191b5c

- 「Node.jsのサービス実行」
    http://multix.jp/daemon-nodejs/