はじめに
業務でJenkinsを使用しているのですが、「ポートって8080じゃないとダメなの?」と言われ、「確かに8080である必要は・・・ない」という話になりました。
そこで、80ポートで表示してみようというところからApache経由で表示するにはどうしたらいいのだろうと考え、この機会に「Apache経由でJenkinsを表示しようぜ」ということになりました。
セットアップ環境
セットアップの環境は次のとおりです。
分類 | 項目 | バージョン |
---|---|---|
OS | CentOS | 7.3 |
MW | httpd | 2.4.6 |
MW | Jenkins | 2.140 |
MW | OpenJDK | 1.8.0_181 |
Jenkinsのセットアップ
Jenkinsをセットアップします。セットアップはyumで行います。
yumでインストールするためにJenkinsのリポジトリを取得する必要があります。
# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
# rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
# yum install jenkins
Javaがインストールされていなければ、Javaのインストールが必要です。
# yum install java
Jenkinsのサービスを起動します
# systemctl start jenkins
# systemctl enable jenkins
Webブラウザから "http://IPアドレス:8080" にアクセスします。
画面に表示される内容に従って、設定を行います。
リバースプロキシの設定をする
JenkinsのURLを変更します。
# vi /etc/sysconfig/jenkins
・・・・
# 以下の行を修正
JENKINS_ARGS="--prefix=/jenkins”
・・・・
httpdをインストールします。
# yum install -y httpd
リバースプロキシの設定をします
# cat /etc/httpd/conf.d/jenkins.conf
ProxyPass /jenkins http://localhost:8080/jenkins nocanon
ProxyPassReverse /jenkins http://localhost:8080/jenkins
ProxyRequests Off
AllowEncodedSlashes NoDecode
<Proxy http://localhost:8080/jenkins*>
Order deny,allow
Allow from all
</Proxy>
httpdを起動します
# systemctl start httpd
# systemctl enable httpd
Webブラウザから "http://IPアドレス:8080" にアクセスします。
Jenkinsにログインし、Jenkinsの管理をクリックします。
管理画面からシステムの設定をクリックします。
JenkinsのURLを "http://IPアドレス:8080/jenkins" に変更します。
Jenkinsを再起動します。
# systemctl restart jenkins
Webブラウザから "http://IPアドレス/jenkins" にアクセスし、Jenkinsの画面が表示されれば、設定は完了です。
注意点
リバースプロキシの設定をする中で、私がぶつかった問題を下記にまとめます。
SELinuxが有効だとJenkinsが表示されない
"http://IPアドレス/jenkins" にアクセスするとJenkinsの画面が表示されない場合があります。
その時は、SELinuxが有効になっている可能性があるので、SELinuxを無効にしてみましょう。
# setenforce 0
# getenforce
Permissive
# systemctl restart httpd
Jenkinsにアクセスするとリバースプロキシの設定がおかしいと怒られる。
Jenkinsの管理をクリックすると、
「リバースプロキシの設定がおかしいようです」とアラートが出ていました。
下記のURLの記事の通り、JenkinsのURLを "http://IPアドレス/jenkins" に変更したらアラートは
出なくなりました。
「Jenkins says my reverse proxy setup is broken」でもう一つ確認すべき場所
まとめ
Jenkinsのページにも簡単にまとめられていたので、簡単にリバースプロキシを設定することができた。
リバースプロキシ自体の設定も複雑なものではないので、また機会があれば設定してみようと思いました。
参考記事
「Jenkins says my reverse proxy setup is broken」でもう一つ確認すべき場所
Apache モジュール mod_proxy