2013年08月31日

ubuntuでApache2+Tomcat+jenkins

なんかかっこよさそうなんで、Ubuntuで自動ビルド環境を作ろうと思った。
自動ビルドといえばJenkins。導入難しそうかとおもったけど、単に動かすだけだったら java -jar jenkins.warコマンド一発で動くらしいんで、結構簡単だってのが気に入った。早速作ってみるぜ!
 
 

各種パッケージインストール

apacheはすでに入ってるんで。

# sudo aptitude install openjdk-7-jdk tomcat7

ここで、勢いでjenkinsまでaptitudeでインストールしちゃったけど

# sudo aptitude install jenkins

どうやらjenkins自体はwarファイルをダウンロードすればいいだけみたいだし、aptitudeでインストールするjenkinsは
古いバージョンみたいだ・・・

ひとまずTomcatの動作確認

インストール終わってしまえば動作確認できる。Tomcatの「It's works〜〜」っていうページ見られるかな〜

# sudo service tomcat7 start
コマンドを打った後、アクセス

http://ubuntuhost:8080/

見れた〜〜〜

よし、調子に乗ってjenkinsも動作確認

java -jar jenkins.war

見れない〜〜〜[オチ]jenkinsもtomcatもデフォルトポート8080です
何やってんだ俺。
こんな混乱を避けるため、また、無駄にポートを開かないためにもapacheからtomcatやらjenkinsやらにアクセスできるようにするぜ!

どうやって?


apacheから各種アプリケーションサーバーにアクセスするようにするには、ajpというプロトコルを使うらしい。

http://en.wikipedia.org/wiki/Apache_JServ_Protocol

これでapacheに/servlets/っていうアクセスが来たら勝手にtomcatの/webapp/servlets/に接続してくれる仕組みっぽい
内部ではtcpポート8009(可変)で要求をやりとりするようだ。apache側とtomcat側、両方に設定がいる。

apache側の設定は・・・

sites-enabledの設定にこれを入れる

<Location /servlets>
       ProxyPass ajp://localhost:8009/servlets/
</Location>
/servlets/パス配下はajpで接続するっていう方法
本当はsites-availableにservletsみたいなファイル作って、a2ensite servletsとかコマンド打つと思うんだけど
おれ面倒だから/var/apache2/sites-available/defaultに全部書くわ。。。。

tomcat側の設定は・・・

/etc/tomcat7/server.xmlでコメントになってるこの行を有効化

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
準備はこれだけ。それぞれapache2とtomcat7のサービスを再起動し、/var/lib/tomcat7/webapps/servletsにお試しのtest.jspを配置してみる。中身はこんなの。

Now <%
java.util.Date date = new java.util.Date();
out.print(date.toString());
 %>

http://ubuntuhost/servlets/test.jspにアクセスして、「Now Sat Aug 31 21:41:53 JST 2013」とか表示されればOK!!

あとはjenkinsの配置

<Location /jenkins>
       ProxyPass ajp://localhost:8009/jenkins/
</Location>

/etc/apache2/sites-available/defaultに↑みたいに追記して、/var/lib/tomcat7/webapps/に最新のjenkins.warを配置、http://ubuntuhost/jenkinsにアクセスすればOK!!かとおもいきや・・・

jenkins画面が↓なことを言って怒る。

ホームディレクトリ '/usr/share/tomcat7/.jenkins' を作成できませんでした。おそらくパーミッションの問題です。
ホームディレクトリを変更するには、環境変数のJENKINS_HOMEか、システムプロパティの JENKINS_HOMEを設定してください。設定方法については、Container-specific documentation を参照してください。
すました顔の執事のおやじがにくい。こやつがジェンキンス氏か。。。メッセージにある通り、JENKINS_HOME環境変数に/var/lib/tomcat7/webapps/jenkinsをつけてないのが悪いんだけど、いったいどこにそんな変数を設定すればいいのか直感的にわからなくて小一時間ジェンキンス氏と対話してた。
 
正解は、/etc/default/tomcat7。ここにtomcatを起動するときの設定があり、
 
JAVA_OPTS="-Djava.awt.headless=true とか書いてるところに
 
-DJENKINS_HOME=/var/lib/tomcat7/webapps/jenkins/
 
と追加すればよかった。これでtomcat7をrestartすれば、晴れてjenkins起動完了!
 
あとは環境設定して、ビルドイベントを色々いじるんだーーー
 
 



posted by LoyalTouch at 20:03| Comment(0) | TrackBack(0) | インフラ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/373575679

この記事へのトラックバック