CentOS7にjenkinsをインストール

必要なパッケージのインストール

次のコマンドを実行して Open JDK 1.7.0 などをインストールする。

yum -y install java-1.7.0-openjdk httpd wget 

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

jenkinsをインストール

yum -y install jenkins

設定

HTTP ポートの無効化

デフォルトでは 8080番ポートで Jenkins へアクセスできるようになっているが、インストールしたサーバーには 既に Apache HTTP Server がインストールされており、リバースプロキシを使用して AJP ポートへアクセスするように構成するため、HTTP ポート(8080番)の LISTEN は無効化する。

HTTP ポートを無効にするには、設定ファイル(/etc/sysconfig/jenkins)の JENKINS_PORT に “-1″ を設定する。

## Type:        integer(0:65535)
## Default:     8080
## ServiceRestart: jenkins
#
# Port Jenkins is listening on.
# Set to -1 to disable
#
JENKINS_PORT="-1"

AJP ポートの設定

前項で記述したとおり、AJP ポートへアクセスさせるため、AJP ポートを設定する。

これはデフォルトでも 8009番ポートで設定済みであるが、Tomcat など このポートを利用するアプリケーションサーバーも多いため、8109番ポートへ設定を変更する。デフォルトのまま 8009番ポートを利用することで問題ない場合は、変更の必要はないが、後述のリバースプロキシの設定の際に 説明と異なる設定が必要になるので注意する。

AJP ポートの設定は、設定ファイル(/etc/sysconfig/jenkins)の JENKINS_AJP_PORT に “8109” を設定する。

## Type:        integer(0:65535)
## Default:     8009
## ServiceRestart: jenkins
#
# Ajp13 Port Jenkins is listening on.
# Set to -1 to disable
#
JENKINS_AJP_PORT="8109"

ProcessTreeKillerの無効+Timezoneの設定

## Type: string
## Default:     "-Djava.awt.headless=true"
## ServiceRestart: jenkins
#
# Options to pass to java when running Jenkins.
#
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.util.ProcessTree.disable=true -Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Tokyo"

コンテキストパスの設定

Jenkins はデフォルトで サーバールート(http://hostname/)でアクセスされるように設定されているが、同じサーバーでほかのアプリケーションや Web サイトを運用するには都合が悪いため、インストールした Jenkins 独自のコンテキストパスを設定する。

コンテキストパスの設定は、設定ファイル(/etc/sysconfig/jenkins)の JENKINS_ARGS に “–prefix=/jenkins” を設定する。

/jenkins の部分は 設定するコンテキストパスにあわせた任意の文字列を設定すればよい。

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# Pass arbitrary arguments to Jenkins.
# Full option list: java -jar jenkins.war --help
#
JENKINS_ARGS="--prefix=/jenkins"

リバースプロキシの設定

最後に Apache HTTP Server にリバースプロキシの設定を行う。リバースプロキシを設定することで、外部からアクセスする入口を一本化できる。

リバースプロキシは /jenkins (前述の「コンテキストパスの設定」で設定したパス)へアクセスがあったリクエストを ajp://localhost:8109/jenkins へ転送するよう設定する。

Jenkins 用の設定ファイルを /etc/httpd/conf.d/ に作成し、設定内容を記述する。

vi /etc/httpd/conf.d/jenkins.conf

ProxyPass           /jenkins ajp://localhost:8109/jenkins nocanon
ProxyPassReverse    /jenkins ajp://localhost:8109/jenkins
ProxyRequests       Off
AllowEncodedSlashes On
<Proxy "ajp://localhost:8109/jenkins">
  Order deny,allow
  Allow from all
</Proxy>

設定ファイルを保存したら 次のコマンドで設定ファイルの構文チェックを行う。”Syntax OK” と表示されたら「構文的に」正しい。エラーが表示される場合は、もう一度 設定を見直す。

service httpd configtest

Jenkins の起動

ここまでの作業が完了すれば Jenkins のインストール および 初期設定は完了である。 次のコマンドで Jenkins および Apache HTTP Server を起動する。

service jenkins start
service httpd start
chkconfig jenkins on
chkconfig httpd on

既に起動中の場合は再起動させ、設定を反映させる。

アクセスできない場合はSELINUXやfirewallの設定を無効化

systemctl stop firewalld
setenforce 0