■初めに
Nginxを使用してサブディレクトリでHTTPにアクセスさせる内容になります。
■目標
Server1に搭載したJenkinsをClient-linからのアクセスで確認できるようにすること!
■環境
項目 | Server1 | Client-lin |
---|---|---|
OS | RHEL7 | RHEL7 |
SW | Ansible 2.2 jenkins 2.33 |
nginx 1.11.6 |
IP | XX.XX.XX.168 | XX.XX.XX.244 |
■構成とやること
下記の構成のようにServer1にJenkinsを搭載します。するとJenkinsへのアクセスは下図の①のようになりますがClient-lin側にnginxを搭載しJenkinsへのアクセスを下図②のようにします。
■補足
Server1とClient-linとかなんなのって人は以下のリンクを見てください
・JenkinsからAnsibleを実行(1/2)
http://qiita.com/yo_dazy/items/08ed86f53e3233fe14bb
では作業開始
まずは確認ってことでJenkinsが「server1(xx.xx.xx.168)」と「Client-lin(xx.xx.xx.244)」のどちらに入っているか確認します。
まずは「Client-lin(xx.xx.xx.244)」から・・・
[root@client-lin /]# hostname
client-lin
[root@client-lin /]#
[root@client-lin /]#
[root@client-lin /]# rpm -qa | grep jenkins
[root@client-lin /]#
[root@client-lin /]#
うん。入っていません。続いて「server1(xx.xx.xx.168)」。。。
[root@server1 ~]#
[root@server1 ~]# hostname
server1.us-west-2.compute.internal
[root@server1 ~]#
[root@server1 ~]#
[root@server1 ~]# rpm -qa | grep jenkins
jenkins-2.33-1.1.noarch
[root@server1 ~]#
入っています。念のためアクセスできるかも確認。
URL:http://XX.XX.XX.168:8080
OK!!Jenkinsは「Server1(XX.XX.XX.168)」の方にインストールされていてアクセスが可能であることがわかりました。
ではこれより、上記の構成通り[http://xx.xx.xx.244/jenkins]のアクセスを可能にします!!
■Nginx構築
作業対象 : Client-lin(XX.XX.XX.244)
前提:サーバログイン[Client-lin(XX.XX.XX.244)]にrootログイン
※Client-linとかRootログインとかわからないって人は前回のqiitaを見てね!
1)リポジトリ登録
コマンド : vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/rhel/7/$basearch/
gpgcheck=0
enabled=1
2)nginx インストール
コマンド : yum -y install nginx
[root@client-lin yum.repos.d]# yum -y install nginx
<略>
Installed:
nginx.x86_64 1:1.11.6-1.el7.ngx
Complete!
[root@client-lin yum.repos.d]#
[root@client-lin yum.repos.d]# nginx -V
nginx version: nginx/1.11.6
<略>
3)サービス設定
コマンド : systemctl enable nginx
コマンド : systemctl start nginx
インストール終了!!
4)確認
本当にインストールできているか確認する
パス:/usr/share/nginx/html/index.html
URL:http://XX.XX.XX.244/
確認完了!
次は実際に「server1(XX.XX.XX.168)」に搭載しているJenkinsを「Client-lin(XX.XX.XX.244)」からアクセスできるようにします!!
目標 :
http://XX.XX.XX.168:8080のアクセスはできなくなりhttp://XX.XX.XX.244/jenkinsでのアクセスが可能になること
■Jenkins設定
作業対象 : server1(XX.XX.XX.168)
1)Jenkinsに対してサブディレクトリを指定
コマンド : vi /etc/sysconfig/jenkins
(DEF)JENKINS_ARGS=""
(EDI)JENKINS_ARGS="--prefix=/jenkins"
2)サービス再起動
コマンド : systemctl restart jenkins
■nginx設定
作業対象 : Client-lin(XX.XX.XX.244)
nginxのConfigを修正しバーチャルホストを設定する
1)Selinux httpd_can_network_connect の設定変更
これをやらないと起動時にPermisionErrorが出る
コマンド : setsebool httpd_can_network_connect on -P
2)Config修正
基本的にはdefault.confはバックアップを取り[base.conf]等に変更してから編集するみたいですが「default.conf」に直接書き込んでもできます!
コマンド : vi /etc/nginx/conf.d/default.conf
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# 以下追加
# Jenkins
location ~ /jenkins {
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://jenkins_server;
access_log /var/log/nginx/jenkins_access.log;
error_log /var/log/nginx/jenkins_error.log;
}
3)バーチャルホスト作成
デフォルトでは存在しないので作成になります。またPublicIPが変更されるたびにここも書き換えないとたぶん動かない。(テストだから仕方なし!!)
コマンド : vi /etc/nginx/conf.d/jenkins.conf
upstream jenkins_server {
server <server1のPublicIP>:8080;
}
4)サービス再起動
コマンド : systemctl restart nginx
5)確認
まずは先ほど確認した。Server1にアクセスして確認します
URL:http://xx.xx.xx.168:8080
はい!見えません!
Jenkinsの設定により変更されました!
つぎは変更したClient-linで確認してみます
URL:http://xx.xx.xx.244/jenkins
問題なく表示されました!
■まとめ
意外と簡単だった!!最後ちょっとはまったくらいでした。。。(^^)