Edited at

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

More than 5 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


参考