AWSでJenkinsを立ち上げる

## 1. AWS EC2でインスタンスを立ち上げる
#### 1-1. AWS -> EC2 -> インスタンス -> インスタンス作成
![スクリーンショット 2015-05-19 11.59.45.png](https://qiita-image-store.s3.amazonaws.com/0/50762/30bc5655-a25e-fdc8-003c-5990a9eeaef3.png)

#### 1-2. AMIの選択
Amazon Linux AMIを選択
![スクリーンショット 2015-05-19 12.03.33.png](https://qiita-image-store.s3.amazonaws.com/0/50762/73d3787a-9d87-b6d9-1a34-25d28469bc6e.png)

#### 1-3. インスタンスタイプの選択
t2.microだと色々辛いのでt2.smallかt2.mediumが良いかも。
今回は説明のため無料枠のt2.microを選択。
![スクリーンショット 2015-05-20 11.12.18.png](https://qiita-image-store.s3.amazonaws.com/0/50762/f2994f6f-b47f-7cb5-7831-6bc987dd5d32.png)

#### 1-4. インスタンスの設定
そのまま

#### 1-5. ストレージの追加
デフォルトの8GBだとすぐストレージがいっぱいになってしまうので16GBとかに増やす。
![スクリーンショット 2015-05-20 11.15.48.png](https://qiita-image-store.s3.amazonaws.com/0/50762/b7d8cece-2645-4ecc-4713-f50c72769f09.png)

#### 1-6. インスタンスのタグ付け
そのまま

#### 1-7. セキュリティグループの設定
SSHとHTTPのポートを開け、jenkinsのデフォルトのポート番号8080を開ける
タイプ：カスタムTCPルール
プロトコル：TCP
ポート範囲：8080
送信元：任意の場所
![スクリーンショット 2015-05-20 11.25.10.png](https://qiita-image-store.s3.amazonaws.com/0/50762/33340349-bb09-68f9-7985-09e4f4135cc0.png)

#### 1-8. インスタンスを作成
作成後、ステータスチェックが完了するのを待つ！

## 2. 作成したインスタンスにjenkinsをインストールする
作成したインスタンスにsshでログイン
#### 2-1. 基本的なコマンドのインストール

```bash
sudo yum update -y
sudo yum install -y git
sudo yum install -y emacs (※宗教的理由です)
```

#### 2-2. nginxのインストール・設定・起動
**nginxのインストール**

```bash
sudo yum install -y nginx
```
**設定**
`/etc/nginx/nginx.conf`に以下をコピペ

```text
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    keepalive_timeout  65;

    include /etc/nginx/conf.d/*.conf;

    index   index.html index.htm;

    server {
        listen       80;
        server_name  test-jenkins.co.jp;

        location / {
            proxy_pass http://localhost:8080;
        }

        # redirect server error pages to the static page /40x.html                        
        #                                                                                 
        error_page  404              /404.html;
        location = /40x.html {
        }

        # redirect server error pages to the static page /50x.html                        
        #                                                                                 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
        }

    }
}
```
**nginxの起動**

```bash
sudo service nginx start
```

#### 2-3. jenkinsのインストール・設定・起動
**jenkinsのダウンロード・インストール**

```bash
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum install -y jenkins
```

**設定**
`/etc/sysconfig/jenkins`に以下をコピペ

```text
## Path:        Development/Jenkins
## Description: Configuration for the Jenkins continuous build server
## Type:        string
## Default:     "/var/lib/jenkins"
## ServiceRestart: jenkins
#
# Directory where Jenkins store its configuration and working
# files (checkouts, build reports, artifacts, ...).
#
JENKINS_HOME="/var/lib/jenkins"

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# Java executable to run Jenkins
# When left empty, we'll try to find the suitable Java.
#
JENKINS_JAVA_CMD=""

## Type:        string
## Default:     "jenkins"
## ServiceRestart: jenkins
#
# Unix user account that runs the Jenkins daemon
# Be careful when you change this, as you need to update
# permissions of $JENKINS_HOME and /var/log/jenkins.
#
JENKINS_USER="jenkins"

## Type:        string
## Default:     "-Djava.awt.headless=true"
## ServiceRestart: jenkins
#
# Options to pass to java when running Jenkins.
#
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -XX:MaxPermSize=512m -Xms512m -Xmx1024m"

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

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# IP address Jenkins listens on for HTTP requests.
# Default is all interfaces (0.0.0.0).
#
JENKINS_LISTEN_ADDRESS=""

## Type:        integer(0:65535)
## Default:     ""
## ServiceRestart: jenkins
#
# HTTPS port Jenkins is listening on.
# Default is disabled.
#
JENKINS_HTTPS_PORT=""

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# Path to the keystore in JKS format (as created by the JDK 'keytool').
# Default is disabled.
#
JENKINS_HTTPS_KEYSTORE=""

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# Password to access the keystore defined in JENKINS_HTTPS_KEYSTORE.
# Default is disabled.
#
JENKINS_HTTPS_KEYSTORE_PASSWORD=""

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# IP address Jenkins listens on for HTTPS requests.
# Default is disabled.
#
JENKINS_HTTPS_LISTEN_ADDRESS=""

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

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# IP address Jenkins listens on for Ajp13 requests.
# Default is all interfaces (0.0.0.0).
#
JENKINS_AJP_LISTEN_ADDRESS=""

## Type:        integer(1:9)
## Default:     5
## ServiceRestart: jenkins
#
# Debug level for logs -- the higher the value, the more verbose.
# 5 is INFO.
#
JENKINS_DEBUG_LEVEL="5"

## Type:        yesno
## Default:     no
## ServiceRestart: jenkins
#
# Whether to enable access logging or not.
#
JENKINS_ENABLE_ACCESS_LOG="no"

## Type:        integer
## Default:     100
## ServiceRestart: jenkins
#
# Maximum number of HTTP worker threads.
#
JENKINS_HANDLER_MAX="100"

## Type:        integer
## Default:     20
## ServiceRestart: jenkins
#
# Maximum number of idle HTTP worker threads.
#
JENKINS_HANDLER_IDLE="20"

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# Pass arbitrary arguments to Jenkins.
# Full option list: java -jar jenkins.war --help
#
JENKINS_ARGS="--prefix=/ --httpPort=${JENKINS_PORT} --ajp13Port=${JENKINS_AJP_PORT}"
```

**設定の適応・jenkins起動**

```bash
sudo chkconfig jenkins on
sudo service jenkins start
```

#### 2-4. jenkins起動の確認
立ち上げたインスタンスのパブリックDNSのURLかパブリックIPに`:8080`をつけてjenkinsのトップページが表示されるか確認。(jenkins起動直後だと表示されないことがあるので、表示されなかったらしばらく待ってみる)
ローカルで名前解決してtest-jenkins.co.jp:8080でもアクセスできるか確認。