Play Framework2 on JavaをJenkins.warとGitでCIする その①(サーバ準備編)
もくじ
コンセプト
- ポータブルに!
- 拡張性を持たせる!
構成、アーキテクチャ
構成
公式ドキュメント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の設定は次回以降。
ユーザの作成
作りたてなのでrootで入り、以下のユーザを作成。
- 管理用アカウント( -G wheel)
- playapp (本番アプリケーション起動ユーザ)
- playapp.master (リハーサルアプリケーション起動ユーザ)
- playapp.develop (開発アプリケーション起動ユーザ)
- ciuser (Jenkins用ユーザ)
- gituser (Gitサーバ用ユーザ)
# ユーザ作成とパスワード設定 $ useradd -m ユーザ名 $ passwd ユーザ名
※後で、機能単位で別サーバへ分割できるようにユーザを分けています
今回必要なソフトのインストール
$ yum -y install vim $ yum -y install wget $ yum -y install httpd
httpdの設定
テスト用のAPサーバとJenkinsへのポートをListenするようにする
$ vim /etc/httpd/conf/httpd.conf
※「Listen 80」の下に、下記3行を追加
- Listen 50080
- Listen 50081
- Listen 50082
その他の設定はおこのみで。
各APサーバのVirtualHostの設定
$ cd /etc/httpd/conf.d $ vim httpd.playapp.conf <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" </VirtualHost> # ポート番号やログファイル名などを『作成するサーバ群』のメモに合わせて、上記と同様に作成 $ vim httpd.playapp.master.conf $ vim httpd.playapp.develop.conf
JenkinsのVirtualHostの設定
$ 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>
※「RequestHeader unset Authorization」の記述を抜かすとJenkinsのリモートホスト側でBasic認証が発生してハマるので注意。(ハマりました・・・)
参考:http://d.hatena.ne.jp/akuwano/20130128/1359373111
全体的にベーシック認証する場合は、以下のファイルも
$ cd /etc/httpd/conf.d $ vim BasicAuth.conf <Location "/"> AuthType Basic require valid-user AuthName "Play Apps" AuthUserFile /etc/httpd/conf.d/.htpasswd Order allow,deny Allow from all </Location>
サービス再起動
$ apachectl configtest
$ service httpd restart
iptablesの設定
設定ファイルの編集
$ vim /etc/sysconfig/iptables
以下の行を、設定ファイルの真ん中あたりに追加(ポート22用の行をコピーしてポート番号のみ変更)
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 50080 -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 50081 -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 50082 -j ACCEPT
サービス再起動
$ service iptables restart
参考URL
- VirtualHost設定関連