さくらVPS980でjetty/Hudsonを動かす
さくらインターネットのVPSサービスが正式稼働となって1ヶ月となりました。これまでは専用サーバのエントリープランを使っていたのですが、用途が変わってきたので乗り換えを行っています。
これまでは、SVN, Trac, Hudson, Wiki(MoinMoin)などを稼働させるのが目的だったのですが、最近はSVN + TracをGoogle Codeに移行してしまい、HudsonとWikiが主目的となっています。Wikiだけであればルート権限のないサーバでも良いですが、色々と実験したりするにはルート権限が欲しいですし、なによりHudsonを動かしたいわけです。
不安だったのはマシンパワーであり、Hudson(Appサーバ)を動かすのに耐えられるか?という点です。実際に動かしてみたところ、問題がなさそうなので手順をまとめておきます。
動作しているHudsonはここ。
尚、VPS980のスペックは、メモリ512MB・HDD20G・CentOS5です。基本的なSSH等の設定はこちらがよくまとまってます。
JDK
さくらVPSはCentOSなので、JDKはOracleからrpmパッケージをダウンロードしてインストールするのが簡単です。尚、さくらVPSは64bitのCentOSなので、64bit版を選択してください。インストールはバイナリを実行すればOKです。
$ chmod +x jdk-6u21-linux-x64-rpm.bin
$ sudo jdk-6u21-linux-x64-rpm.bin
JDKは、/usr/java/ の下にインストールされます。JAVA_HOMEを次のように設定しておきましょう。
確認。
$java -version
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b06)
Java HotSpot(TM) 64-Bit Server VM (build 17.0-b16, mixed mode)
jettyの設置
Hudsonを稼働させるにはWeb Application Serverが必要です。代表的なWeb Application ServerはTomcatですが、VPSのスペックが高くはないので少しでも軽量なものをと言う事で、jettyを選択しました。jettyは Google App Engineでも採用されており、軽量で立ち上がりが早いのが特徴です。現在は、Eclipseのプロダクトの一部として開発が進められています。
インストールは特に必要なく、アーカイブをダウンロードして解凍するだけです。ここでは最新安定版のjetty7.1.6を使います。ダウンロードページが見つけにくいですが、ここです。
設置場所はどこでも良いのですが、管理用のユーザ(例:admin)のホームディレクトリに設置しておきます。
$ cd ~
$ wget http://download.eclipse.org/jetty/7.1.6.v20100715/dist/jetty-distribution-7.1.6.v20100715.zip
$ unzip jetty-distribution-7.1.6.v20100715.zip
$ mv jetty-distribution-7.1.6.v20100715 jetty-7.1.6
設置場所は、/home/admin/jetty-7.1.6 となりました(JETTY_HOME)。
jettyの起動
jettyの起動には、JETTY_HOME/start.jar をjavaコマンドで実行します。
$ cd $JETTY_HOME
$ java -jar start.jar
デフォルトでは8080ポートで起動するので、アクセスして起動を確認してください。終了はCtrl + DでOKです。
Hudsonを設置する
Hudsonはwarでダウンロードできるので、JETTY_HOME/webappsにデプロイ(配置)するだけです。
$ cd $JETTY_HOME/webapps
$ wget http://hudson-ci.org/latest/hudson.war
先ほどと同じようにjettyを起動し、8080ポートのhudsonでアクセスできます(http://hostname:8080/hudson)。
Apacheから80ポートでアクセスさせる
折角なので、http://hudson.hostname/ でアクセスできるようにします。
やることは次の通り。
* ApacheのVirtualHostの設定とajpの設定
* jettyのコネクターにajnを追加(8080を無効化)
* コンテキストルートでHudsonにアクセスさせる設定
* daemonとしてjettyを起動させるスクリプトの作成
まずApacehの設定ですが、/etc/httpd/conf.d/hudson.confを作成し、Virtual HostとProxyの設定をします。
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
ServerName hudson.hostname:80
ErrorLog logs/hudson.hostname-error_log
CustomLog logs/hudson.hostname-access_log common
ProxyPass / ajp://localhost:8009/
次に、jettyのコネクタの設定ですが、$JETTY_HOME/etc/jetty.xmlを編集します。Ajp13SocketConnectorを追加すればOKですが、8080のSelectChannelConnectorは不要になるのでコメントアウトしても構いません。
8009
< !--
300000
2
false
8443
20000
5000
- >
ついでにアクセス数がほとんどないので、スレッド数を抑制しておきました。数値に根拠はありません。
< !-- Default queued blocking threadpool -->
< !--10 -->
5
< !--200 -->
50
次にhudsonをコンテキストルート(ajp://hostname:8009/)でアクセスできるように、hudson.warをroot.warにリネームします。また、test.warとその設定が残っていると上手く動作しないので削除します。
$ mv $JETTY_HOME/webapps/hudson.war $JETTY_HOME/webapps/root.war
$ rm $JETTY_HOME/webapps/test.war
$ rm $JETTY_HOME/contexts/test.xml
$ rm -r $JETTY_HOME/contexts/test.d
最後にjettyをdaemonで起動するスクリプトと停止するスクリプトを書いておきます。
start-jetty.sh
#!/bin/sh
echo "Start jetty server"
cd $JETTY_HOME
java -DSTOP.KEY=jetty -DSTOP.PORT=8070 -jar start.jar OPTIONS=Server,ajp --daemon &
stop-jetty.sh
#!/bin/sh
cd $JETTY_HOME
java -DSTOP.KEY=jetty -DSTOP.PORT=8070 -jar start.jar --stop
STOP.KEYとSTOP.PORTは適当な値を設定してください。オプションの詳細は「 java -jar start.jar --help」で確認できます。
以上で、http://hudson.hostname/ でHudsonにアクセスできるようになります。月々980円で、Hudsonを運用できるってのはいいですね!