さくらVPSにJenkinsを入れた時のメモ。
さくらVPSを使うかAmazon EC2を使うか迷ってたのですが、その辺の経緯はまた別の機会に書きます。
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が使えるようになってると思います。