AWSでCI環境を構築するシリーズ① NginxでJenkinsとGitBucketを動かす
1. はじめに
AWSでCI環境を構築するときのメモです。
長くなりそうなので複数回に分けてアップしようと思います。
今回はNginxでJenkinsとGitBucketを動かす話を書きます。
次回以降はSSLに対応させる話を書こうと思います。
(こちらは需要がなさそうだったらお蔵入りに)
今回使うAWSのサービスはこちらです。
2. Java8のインストール
ec2を初めて起動したらアップデートです。
$ sudo yum update -y
Jenkins2系とGitBucketはjava8を使うのでインストールをします。
$ sudo yum install java-1.8.0-openjdk.x86_64
EC2にはデフォルトでJava7がインストールされているので、Java8に切り替える必要があります。
$ sudo alternatives --config java
2 プログラムがあり 'java' を提供します。
選択 コマンド
-----------------------------------------------
+ 1 /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
* 2 /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:
ここで2を選択します。
3. Jenkins2のインストール
$ sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
Jenkinsのインストール時に使われる公開鍵をインポート
$ sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
Jenkinsインストール
$ sudo yum install jenkins
起動
$ sudo service jenkins start
$ sudo chkconfig jenkins on
4. GitBucketのインストール
$ cd
/home/ec2-user
GitBucket用のディレクトリを作る
$ mkdir gitbucket
$ cd gitbucket
GitBucketのwarをダウンロードする
$ wget https://github.com/gitbucket/gitbucket/releases/download/4.14.1/gitbucket.war
GitBucketの起動
$ java -jar /home/ec2-user/gitbucket/gitbucket.war --port=8090 --prefix=/gitbucket --gitbucket.home=/home/ec2-user/gitbucket&
自動起動
/etc/rc.d/rc.local に書き込む
$ echo "java -jar /home/ec2-user/gitbucket/gitbucket.war --port=8090 --prefix=/gitbucket --gitbucket.home=/home/ec2-user/gitbucket&" >> /etc/rc.d/rc.local
5. nginxのインストールと設定
インストール
$ sudo yum install nginx
設定
$ sudo vi /etc/nginx/nginx.conf
40行目の server { の中に以下の設定を追加
location ~ /jenkins {
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://jenkins_server;
}
location ~ /gitbucket {
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://gitbucket_server;
}
JenkinsとGitbucketの設定ファイルを作成
$ sudo vi /etc/nginx/conf.d/jenkins.conf
upstream jenkins_server {
server 127.0.0.1:8080 fail_timeout=0;
}
$ sudo vi /etc/nginx/conf.d/gitbucket.conf
upstream gitbucket_server {
server 127.0.0.1:8090 fail_timeout=0;
}
起動
$ sudo service nginx start
$ sudo chkconfig nginx on
6. それぞれのサーバーへのアクセス
Jenkins
http://ec2のパブリックDNS/jenkins
GitBucket
http://ec2のパブリックDNS/gitbucket
次回予告
次はSSLでアクセスする為にELB(ロードバランサー)を使います。
ELBは443ポートで待ち受けていて、EC2の80ポートへ流します。
ELBとEC2は関連付けられるので設定は簡単です。
ただし、Jenkinsが内部でhttp://〜にリダイレクトしている箇所があるので、
このままの設定だと思わぬ動きをしてしまいますのでその対処法を書きたいと思います。