やりたいこと
- 単一のCentOSサーバにJenkinsのフロントにApacheを立て、mod_ajpで連携させる
- Apacheは投稿時点の最新安定版(2.4.10)を使いたいので、ソースからコンパイルしてインストールする
- Jenkinsに
http://【domain or IP】/
(80番ポート)でアクセスできる
1. iptablesの設定を追加する
/etc/sysconfig/iptables
を以下のように編集し、80番・8009番・8080番ポートを開放する。
8009番ポートはmod_ajpで連携するために必要。ローカルホストからのみ、アクセスできるようにしておく。
8080番ポートは、Jenkinsの起動確認のために一時的に開放しておく。
~中略~
### For Jenkins start
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 8009 -s 127.0.0.1 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
### For Jenkins end
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
編集したら、iptablesをリスタートする。
service iptables restart
2. Jenkinsをインストールする
下記コマンドを実行して、Jenkinsをインストールする。
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
yum -y install jenkins
Jenkinsを起動してみる。
service jenkins start
ブラウザでhttp://【domain or IP】:8080/
にアクセスし、JenkinsのTOPページが表示されればOK。
/etc/sysconfig/iptables
を再編集し、8080番ポートをローカルホストからのみアクセスできるようにする。
8080番ポートはリバースプロキシの設定に必要で、
このポートが閉じていると、jenkinsに「リバースプロキシの設定に問題があります」と警告されてしまう。
~中略~
### For Jenkins start
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 8009 -s 127.0.0.1 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -s 127.0.0.1 -j ACCEPT # "-s 127.0.0.1"を追加する
### For Jenkins end
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
編集したら、再びiptablesをリスタートする。
service iptables restart
ブラウザでhttp://【domain or IP】:8080/
にアクセスし、JenkinsのTOPページが表示されなくなっていればOK。
3. Apacheをインストールする
まず、PCREをインストールする。
yum -y install pcre-devel.x86_64
Apache のソースをダウンロードする。
cd /usr/local/src/
wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache//httpd/httpd-2.4.10.tar.gz
tar zxf httpd-2.4.10.tar.gz
aprとapr-utilも一緒にコンパイルするため、ソースをダウンロードしてApacheのsrclibディレクトリに含めておく。
これらはサーバに標準でインストールされていないか、されているとしてもバージョンが古すぎるため。
cd httpd-2.4.10/srclib/
wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-1.5.1.tar.gz
tar zxf apr-1.5.1.tar.gz
mv apr-1.5.1 apr
wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-util-1.5.4.tar.gz
tar zxf apr-util-1.5.4.tar.gz
mv apr-util-1.5.4 apr-util
rm -f apr-*.tar.gz
cd ../
コンパイル・インストールする。
./configure
make
make install
Apacheを起動してみる。
/usr/local/apache2/bin/apachectl start
ブラウザでhttp://【domain or IP】/
にアクセスし、ApacheのTOPページが表示されればOK。
4. ApacheとJenkinsをmod_ajpで連携する
Apacheの設定ファイルconf/extra/httpd-vhosts.conf
に、以下のように記述する。
<VirtualHost *:80>
DocumentRoot "/usr/local/apache2/htdocs"
ServerName 【domain or IP】
ErrorLog "logs/jenkins-error_log"
CustomLog "logs/jenkins-access_log" common
<Location />
Order allow,deny
Allow from all
</Location>
ProxyRequests Off
AllowEncodedSlashes On
<IfModule proxy_ajp_module>
<Location />
ProxyPass ajp://localhost:8009/ nocanon
ProxyPassReverse http://【domain or IP】:8080/
</Location>
</IfModule>
</VirtualHost>
conf/httpd.conf
ファイルに以下を追記する。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
Include conf/extra/httpd-vhosts.conf
Apacheをリスタートする。
/usr/local/apache2/bin/apachectl stop
/usr/local/apache2/bin/apachectl start
ブラウザでhttp://【domain or IP】/
にアクセスし、JenkinsのTOPページが表示されればOK。
この投稿で説明しなかったこと
この投稿では、あくまでApacheとJenkinsを連携させる方法だけを説明している。
実際にJenkinsでCIできるようにするためには、他にも以下の作業が必要になるかもしれない。
- セキュリティ対策(Basic認証とか)
- Apache・Jenkinsの自動起動設定、ログの管理
- GitまたはMavenのインストール
- プロジェクトごとに必要なミドルウェアやプラグインのインストール