さくらVPSにJenkinsを入れた時のメモ。
さくらVPSを使うかAmazon EC2を使うか迷ってたのですが、その辺の経緯はまた別の機会に書きます。
1. さくらVPSに登録する
http://vps.sakura.ad.jp/
お好みのプランを選択。僕は2Gを選びました
ログイン情報がメールで来るまで少しラグがあるため、その間にインスタンスを立ち上げます
2. ログインしてユーザを作る
メールがきたらログインできます
ssh root@【さくらVPSのホスト名】
でログイン
Are you sure you want to continue connecting (yes/no)?
って聞かれるのでyesを入力。あとはメールに書いてあったパスワードを入れる
下記を参考にユーザ追加とsshの公開鍵登録までやる
「さくらのVPS」借りてみた(作業ユーザー作成,SSH設定) - rubellum's blog
rootのパスワードを変えるのも忘れずに
passwd
毎回ホスト名やパスワードを入れるのは大変なのでローカルPCの ~/.ssh/config に
Host my-vps HostName 【ホスト名】 Port 22 IdentityFile ~/.ssh/id_rsa User 【yourname】
みたいに書いておくと、次からは
ssh my-vps
でログインできるので便利
3. Tomcat7をインストールする
yumでjenkinsを入れるのが一番手っ取り早いのですが、JENKINS_HOMEが /var/lib/jenkins/ から変えられない(?) のが気になったのでtomcatから入れることにしました。*1
バイナリから入れるのは面倒くさいのでパッケージ管理ツールを使います
tomcat7はデフォルトのリポジトリにはないので追加する
sudo yum -y install yum-plugin-priorities sudo rpm -Uvh http://mirrors.dotsrc.org/jpackage/6.0/generic/free/RPMS/jpackage-release-6-3.jpp6.noarch.rpm
tomcat7をインストール
sudo yum install tomcat7-webapps
設定ファイルを編集する
sudo cp -a /usr/share/tomcat7/conf/tomcat7.conf{,.YYYYMMDD} sudo vi /usr/share/tomcat7/conf/tomcat7.conf
メモリやJENKINS_HOMEの値はお好みで設定する
JAVA_OPTS="-Xminf0.1 -Xmaxf0.3 -Duser.timezone=Asia/Tokyo -Xms64m -Xmx256m" LANG="ja_JP.UTF-8" JENKINS_HOME="/data/jenkins"
忘れないようにJENKINS_HOMEを作る
sudo mkdir -p /data/jenkins sudo chown tomcat /data/jenkins/ sudo chgrp tomcat /data/jenkins/
tomxatの設定をいじる
sudo cp -a /usr/share/tomcat7/conf/server.xml{,.YYYYMMDD} sudo vi /usr/share/tomcat7/conf/server.xml
8080で検索して
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
を
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
のように、「URIEncoding="UTF-8"」 を付け加える。
tomcatの起動は
sudo /etc/init.d/tomcat7 start
起動確認
wget http://localhost:8080
ここでステータスコード200が返ってきてればOK
4. nginxのインストール
同じくyumを利用。apacheを使うかnginxを使うかは好みでいいと思います。
自分の場合仕事でnginxを使うことが多いのでnginxをフロントに立てています。*2
sudo yum install nginx sudo mkdir /etc/nginx/sites-available sudo mkdir /etc/nginx/sites-enabled
設定ファイルの編集
sudo cp -a /etc/nginx/nginx.conf{,.YYYYMMDD} sudo vi /etc/nginx/nginx.conf
下記の場所に「include sites-enabled/*;」を追加する
http { (中略) include /etc/nginx/sites-enabled/*; }
sites-enabledに設定ファイルを追加
sudo vi /etc/nginx/sites-available/tomcat
upstream tomcat { server 127.0.0.1:8080; } server { listen 80; server_name some.yourdomain.com; access_log /var/log/nginx/tomcat_access.log; error_log /var/log/nginx/tomcat_error.log; root /var/www/tomcat; # for Jenkins plugin upload client_max_body_size 20M; location / { if (-f $request_filename) { access_log off; expires 1h; break; } if (!-f $request_filename) { proxy_pass http://tomcat; break; } } }
document rootを作る
sudo mkdir -p /var/www/tomcat
sites-enabledにシンボリックリンクを作る
sudo ln -s /etc/nginx/sites-available/tomcat /etc/nginx/sites-enabled/tomcat
設定ファイルが正しいかどうかチェック
sudo /etc/init.d/nginx configtest
nginx起動
sudo /etc/init.d/nginx start
5. Jenkinsインストール
mkdir /tmp/ cd /tmp/ wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war
最新版のwarを取得してwebappsに配置する
sudo -u tomcat cp /tmp/jenkins.war /usr/share/tomcat7/webapps/
ちゃんとデプロイされてるかどうかログを見る
tail -f /usr/share/tomcat7/logs/catalina.out
アップデートする前には念のためwarはどっかにbackupした方がいいです
6. Github/Bitbucket連携
Tomcatはtomcatユーザで実行されるため、tomcatユーザで秘密鍵と公開鍵を作る
基本的にはgithubに書いてあることをtomcatユーザで行えばいいです
https://help.github.com/articles/generating-ssh-keys
tomcatユーザのホームディレクトリを調べる
grep tomcat /etc/passwd tomcat:x:91:91:Apache Tomcat:/usr/share/tomcat7:/bin/sh
上記だと /usr/share/tomcat7 がホームディレクトリ
sudo chown tomcat /usr/share/tomcat7 sudo chgrp tomcat /usr/share/tomcat7 sudo mkdir -m 700 /usr/share/tomcat7/.ssh sudo chown tomcat /usr/share/tomcat7/.ssh sudo chgrp tomcat /usr/share/tomcat7/.ssh sudo -u tomcat ssh-keygen -t rsa -C "your_email@youremail.com" sudo -u tomcat chmod 600 /usr/share/tomcat7/.ssh/id_rsa sudo -u tomcat cat /usr/share/tomcat7/.ssh/id_rsa.pub
出てきた公開鍵をGithubやBitbucketに登録する
最初に手動1回接続してknown_hostsに登録しておかないとJenkinsでcloneできない。
sudo -u tomcat ssh -T git@github.com sudo -u tomcat ssh -T git@bitbucket.org
これもtomcatユーザで実行するのがポイント
これでURLにアクセスすればJenkinsが使えるようになってると思います。