CentOS 6.5にjenkins+nginxをインストールとSSL導入(GitLabと共存)

#CentOS 6.5にjenkins+nginxをインストールとSSL導入(GitLabと共存)

以前に入れたサーバーにjenkinsを共存させる。
<b>CentOS 6.5にGitLab 6.8をインストールとSSL導入</b>
http://qiita.com/narumi888/items/da664ce0aca5373fd9aa

既にGitLabが公開されているのでサブディレクトリに配置。

```
https://IPアドレス/jenkins
```

環境は2014/4/25時点で全て最新のものを使用。
CentOS:6.5
Jenkins:1.560
nginx:1.6.0

以下のサイトを参考にさせて頂きました。
ありがとうございました。
<b>virtualbox(centos)にjenkins+nginxでインストールする方法メモ</b>
http://qiita.com/ryurock/items/e41a821a8287091d7510
<b>さくらVPSにJenkinsをインストールしてGitlabと連携したメモ。</b>
http://qiita.com/ANTON072/items/f22612db318503ab9b9c
<b>nginx で SSL解きリバースプロキシな設定のお作法</b>
http://qiita.com/ywatai@github/items/a179186a458a42b3c7f0

##javaのインストール

```
# java -version
```

jenkinsはjavaがv1.6.0 < しか動かないらしい。
v1.6.0以下ならアンインストール。

```
# yum remove java
```

javaをインストール。

```
# yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel
```

##Jenkinsのインストール

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

##Jenkinsの設定変更

サブディレクトリに変更。

```
vi /etc/sysconfig/jenkins
$ diff /etc/sysconfig/jenkins
?c?
<     JENKINS_ARGS=""
---
>     JENKINS_ARGS="--prefix=/jenkins --httpPort=${JENKINS_PORT} --ajp13Port=${JENKINS_AJP_PORT}"
```

8080は使用済みだったのでポートを10080に変更。

```
vi /etc/sysconfig/jenkins
$ diff /etc/sysconfig/jenkins
?c?
<     JENKINS_PORT=8080
---
<     JENKINS_PORT=10080
```

##Nginxの設定変更

以下でNginxのインストールと設定を行っている事を前提。
<b>CentOS 6.5にGitLab 6.8をインストールとSSL導入</b>
http://qiita.com/narumi888/items/da664ce0aca5373fd9aa

```
# vi/etc/nginx/conf/gitlab
```

以下の設定を追加。

```
# ADD
upstream app_server {
  server 127.0.0.1:10080 fail_timeout=0;
}
```

serverブロックに以下を追加。

```
server {
    # ADD
    # Jenkins
    location ~ /jenkins {
        proxy_read_timeout 300; # Some requests take more than 30 seconds.
        proxy_connect_timeout 300; # Some requests take more than 30 seconds.
        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://app_server;

        access_log  /var/log/nginx/jenkins_access.log;
        error_log   /var/log/nginx/jenkins_error.log;
    }
}
```

再起動。

```
# /etc/init.d/nginx restart
```

##Jenkinsへアクセス

以下のURLでJenkinsの画面が表示される。

```
https://IPアドレス/jenkins
```

##ルートディレクトリを変更

成果物の配置場所を変更したい場合のみ。
Jenkins起動後にWebページから変更。

Jenkins画面から「設定」>「システムの設定」>「高度な設定」


ワークスペース・ルートディレクトリ

```
/home/jenkins/${ITEM_FULLNAME}/workspace
```

ビルド・ルートディレクトリ

```
/home/jenkins/${ITEM_FULLNAME}/build
```

デフォルトだと\${JENKINS_HOME}から始まる\${ITEM_ROOTDIR}が設定されている。
\${ITEM_FULLNAME}使えば、他のディレクトリにworkspaceやbuildsを設定できる。

##セキュリティ設定

デフォルトだと全て公開で誰でもビルドを設定できてしまう。
なので、WebページからBasic認証を導入する。

Jenkinsの管理
-> グローバルセキュリティの設定 -> セキュリティを有効化に有効
-> ユーザー情報のJenkinsのユーザーデータベースに有効。
-> ユーザーにサインアップを許可を有効。
-> 権限管理をログイン済みユーザーに許可にする -> 保存
-> ユーザー作成 -> ログイン
-> Jenkinsの管理 -> グローバルセキュリティの設定 
-> 権限管理 -> 行列による権限設定を選択 -> 匿名ユーザーの権限を全て無効
-> 作成したユーザーに全権限を付与 -> 保存

これでTOPページBasic認証を導入される。