いつブロ

いつまで続くか分からないブログ(仮)主に趣味やプログラミングに関するメモを書いています。

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のインストー

yumリポジトリにJenkinsを追加

$ 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://〜にリダイレクトしている箇所があるので、
このままの設定だと思わぬ動きをしてしまいますのでその対処法を書きたいと思います。