nginx
Ubuntu
Jenkins

ubuntu13.10にJenkins+Nginxをインストールしたメモ

More than 3 years have passed since last update.

概要

ubuntu Server 13.10 にJenkinsとNginxをインストールしました。
インターネット上に公開するのでBasic認証もかけました。

手順

各種インストール

$ sudo apt-get install jenkins
$ sudo apt-get install nginx
$ nginx -v
$ nginx version: nginx/1.4.1 (Ubuntu)

Nginxのconfigを編集

$ sudo vi /etc/nginx/sites-enabled/default 

serverディレクティブの末尾に以下を追加する。

server {

    # ...省略...

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

Nginxを起動しようとすると怒られる

$ sudo service nginx start
sudo: unable to resolve host <hostname>

のIPアドレスが解決できないのでhostsを修正する。

$ sudo vi /etc/hosts
#127.0.0.1  localhost # コメントアウト
127.0.0.1   <hostname>.localhost    <hostname>

Jenkinsの設定

$ sudo vi /etc/default/jenkins 

末尾に--prefix=/jenkins を追加する。

JENKINS_ARGS="$JENKINS_ARGS --preferredClassLoader=java.net.URLClassLoader --prefix=/jenkins"
$ sudo service jenkins restart

トラブルシューティング

接続できない場合、ポートの状態をnmapで確認する。

$ sudo apt-get install nmap

$ nmap localhost

Starting Nmap 6.40 ( http://nmap.org ) at 2014-04-11 00:24 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00022s latency).
rDNS record for 127.0.0.1: CI01.localhost
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
8080/tcp open  http-proxy

$ nmap xxx.xxx.xxx.xxx

Starting Nmap 6.40 ( http://nmap.org ) at 2014-04-11 00:25 JST
Nmap scan report for xxx.xxx.xxx.xxx
Host is up (0.00036s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

localhostのみ8080がopenされ、外部(xxx.xxx.xxx.xxx)には80のみopenされていることがわかります。

私の場合は、Nginxの設定ファイル/etc/nginx/site-enable/defaultがあるのに、別の設定ファイル/etc/nginx/conf.d/default.confを作って、そっちにproxy設定を書いていたのでserverディレクティブ全体が上書きされてしまっていたと思われます。

Basic認証をかける

パスワードファイルを作成する。

$ sudo apt-get install apache2-utils

$ cd /etc/nginx
$ sudo htpasswd -c htpasswd <username>
$ sudo vi /etc/nginx/sites-enabled/default 

locationディレクティブに以下を追加する。

server {

    # ...省略...

    location /jenkins {
        proxy_pass http://localhost:8080; # 追加
        auth_basic "Restricted";          # 追加
        auth_basic_user_file htpasswd;
    }
}
$ sudo service jenkins restart

参考