### 概要 CentOS上に、Play Framework2 on JavaのCI環境を構築していきます。
長くなるので分割で。
### もくじ
#### 登場人物
  • Play Framework 2.2
  • Jenkins(Jenkins.war)
  • Git
  • CentOS 6.4 i386
#### コンセプト
  • ポータブルに!
  • 拡張性を持たせる!
### 構成、アーキテクチャ
#### 構成 公式ドキュメントhttp://www.playframework-ja.org/documentation/2.1.5/HTTPServerにある、Apacheを使用した構成にします。
#### 作成するサーバ群
  • webサーバ・・・Apacheを使用。VirtualHost機能を使って内部サーバを公開。
    • ポート転送設定
      • 80 ← 9001(Play 本番)
      • 50080 ← 8080(Jenkins)
      • 50081 ← 9011(Play リハーサル環境)
      • 50082 ← 9012(Play 開発環境)
  • 内部サーーバ
    • APサーバ(Play 本番環境)・・・Playをprodモードで起動する。ポートは9001。
    • APサーバ(Play リハーサル環境)・・・Playをprodモードで起動する。ポートは9011。
    • APサーバ(Play 開発環境)・・・Playをprodモードで起動する。ポートは9012。
    • Jenkins ・・・jenkins.war を起動。ポートはデフォルトの8080。
    • Gitサーバ(git+ssh) ・・・Gitコマンドのみ。ポートは22。
絵的にはこんな感じ。(雑な絵ですが)
### 手順その①:サーバ準備 今回はまず、ユーザアカウントの作成~httpdの設定まで。Git・Play・Jenkinsの設定は次回以降。

#### CentOSのインストール CentOS-6.4-i386-minimal.iso からセットアップしました。最小構成。

#### ユーザの作成 作りたてなのでrootで入り、以下のユーザを作成。
  • 管理用アカウント( -G wheel)
  • playapp (本番アプリケーション起動ユーザ)
  • playapp.master (リハーサルアプリケーション起動ユーザ)
  • playapp.develop (開発アプリケーション起動ユーザ)
  • ciuser (Jenkins用ユーザ)
  • gituser (Gitサーバ用ユーザ)
```sh # ユーザ作成とパスワード設定 $ useradd -m ユーザ名 $ passwd ユーザ名
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
<br/>


</div>
<div class="section">
    #### SSHの設定
    以下の設定にしておく。細かい手順や設定内容は省略。

<ul>
<li>公開鍵認証のみ可能</li>
<li>パスワード認証不可</li>
<li>ルートログイン不可</li>
</ul>
</div>
<div class="section">
    #### 今回必要なソフトのインストール
    ```sh
$ yum -y install vim
$ yum -y install wget
$ yum -y install httpd

#### httpdの設定
##### テスト用のAPサーバとJenkinsへのポートをListenするようにする ```sh $ vim /etc/httpd/conf/httpd.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

<ul>
<li>Listen 50080</li>
<li>Listen 50081</li>
<li>Listen 50082</li>
</ul>その他の設定はおこのみで。

</div>
<div class="section">
    ##### 各APサーバのVirtualHostの設定
    ```sh
$ cd  /etc/httpd/conf.d
$ vim httpd.playapp.conf
&lt;VirtualHost *:80>
    ProxyPreserveHost On
    ServerName hogehoge.com
    ProxyPass / http://127.0.0.1:9001/
    ProxyPassReverse / http://127.0.0.1:9001/

    CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/playapp.access_log.%Y%m%d 86400" combined
    ErrorLog  "|/usr/sbin/rotatelogs /var/log/httpd/playapp.error_log.%Y%m%d 86400"
&lt;/VirtualHost>

# ポート番号やログファイル名などを『作成するサーバ群』のメモに合わせて、上記と同様に作成
$ vim httpd.playapp.master.conf
$ vim httpd.playapp.develop.conf

##### JenkinsのVirtualHostの設定 ```sh $ cd /etc/httpd/conf.d $ vim httpd.jenkins.conf <VirtualHost *:50080> ProxyPreserveHost On ServerName hogehoge.com ProxyPass / http://127.0.0.1:8080/ ProxyPassReverse / http://127.0.0.1:8080/
RequestHeader unset Authorization

CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/jenkins.access_log.%Y%m%d 86400" combined
ErrorLog  "|/usr/sbin/rotatelogs /var/log/httpd/jenkins.error_log.%Y%m%d 86400"

</VirtualHost>

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
参考:<a href="http://d.hatena.ne.jp/akuwano/20130128/1359373111">http://d.hatena.ne.jp/akuwano/20130128/1359373111</a>

</div>
<div class="section">
    ##### 全体的にベーシック認証する場合は、以下のファイルも
    ```sh
$ cd  /etc/httpd/conf.d
$ vim BasicAuth.conf
&lt;Location "/">
    AuthType Basic
    require valid-user
    AuthName "Play Apps"
    AuthUserFile /etc/httpd/conf.d/.htpasswd

    Order allow,deny
    Allow from all
&lt;/Location>

#### サービス再起動 ```sh $ apachectl configtest $ service httpd restart
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</div>
<div class="section">
    #### iptablesの設定
    
<div class="section">
    ##### 設定ファイルの編集
    ```sh
$ vim /etc/sysconfig/iptables

```以下の行を、設定ファイルの真ん中あたりに追加(ポート22用の行をコピーしてポート番号のみ変更)

<ul>
<li>-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT</li>
<li>-A INPUT -m state --state NEW -m tcp -p tcp --dport 50080 -j ACCEPT</li>
<li>-A INPUT -m state --state NEW -m tcp -p tcp --dport 50081 -j ACCEPT</li>
<li>-A INPUT -m state --state NEW -m tcp -p tcp --dport 50082 -j ACCEPT</li>
</ul>
</div>
<div class="section">
    ##### サービス再起動
    ```sh
$ service iptables restart

#### SELinuxの設定
##### リバースプロキシの許可 httpd_can_network_connect を on に変更する ```sh $ setsebool -P httpd_can_network_connect 1

確認

$ getsebool httpd_can_network_connect httpd_can_network_connect –> on

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<br/>


</div>
</div>
</div>
<div class="section">
    ### 参考URL
    
<ul>
<li>VirtualHost設定関連
<ul>
<li><a href="http://d.hatena.ne.jp/akuwano/20130128/1359373111">http://d.hatena.ne.jp/akuwano/20130128/1359373111</a></li>
</ul></li>
</ul>
</div>