2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JenkinsとApacheをmod_ajpで連携する方法

Last updated at Posted at 2015-01-17

やりたいこと

  • 単一の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の起動確認のために一時的に開放しておく。

/etc/sysconfig/iptables
~中略~
### 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に、以下のように記述する。

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ファイルに以下を追記する。

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のインストール
  • プロジェクトごとに必要なミドルウェアやプラグインのインストール
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?