kanonインストール
kanonインストール
以下の手順でインストールした。
$ wget http://kanon.ultimania.org/hg/KanonConductor/archive/tip.tar.gz $ tar zxvf tip.tar.gz . $ mv tip kanon-`date +"%Y%m%d"` $ cd kanon-`date +"%Y%m%d"` $ bash kanon-setup | tee kanon-setup_`date +"%Y%m%d"`.log
インストール時のエラーを確認した。
$ cat kanon-setup_* * Starting web server apache2 Syntax error on line 11 of /etc/apache2/sites-enabled/vcs: Invalid command 'AuthzSVNAccessFile', perhaps misspelled or defined by a module not included in the server configuration Action 'configtest' failed. The Apache error log may have more information. ...fail!
mod_authz_svnモジュールがロードされていないようなので、以下のコマンドでモジュールを有効にした。
$ sudo a2enmod authz_svn
apache再起動
$ sudo service apache2 restart * Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName ...done.
apacheは起動しているが、起動時のメッセージが気になるので調べた。
hsotsにドメイン付の名前を設定しておけばいいようなので、以下の通り設定変更した。
$ sudo vi /etc/hosts ≪変更前≫ 127.0.1.1 green ≪変更後≫ 127.0.1.1 www.example.com green
apache再起動
$ sudo service apache2 restart * Restarting web server apache2 ... waiting . ...done.
ブラウザにアクセスすると Service Temporarily Unavailable と表示される。apacheのエラーログを調べてみた。
$ cat /var/log/apache2/error.log [Sat Sep 01 21:23:31 2012] [alert] (2)No such file or directory: mod_wsgi (pid=21562): Couldn't bind unix domain socket '/etc/apache2/run/wsgi.21562.0.1.sock'.
wsgi用のソケットファイルが作成できないらしい。kanonの設定ファイルを調べてみた。
$ grep run /etc/apache2/sites-available/kanon
WSGISocketPrefix run/wsgi
ソケットファイルの設定をフルパスで指定しなおした。
$ sudo vi /etc/apache2/sites-available/kanon
# WSGISocketPrefix run/wsgi
WSGISocketPrefix /var/run/apache2/wsgi
tracにアクセスできるようになったので、次はtracメニューの「ビルド」をクリックしてjenkins表示・・・できない。
apacheのプロキシ設定を経由せずに http://192.168.0.7:8080/jenkins で直接アクセスしたが同じ結果となった。
Status Code: 404 Exception: Stacktrace: (none)
ステータスコードが404なので試しに http://192.168.0.7:8080 にアクセスしてみたら正常に表示できた。
sites-available/kanonのjenkinsへのプロキシ設定を変更したら404ではなくページが表示されるようになったが、正常に表示されない。画像やcssが抜けてしまっているようなので/jenkinsでアクセスしなければならないよう。
jenkins側の設定を変更する必要あり。プロセス調べてみた。
$ ps -ef | grep jenkins jenkins 3877 1 0 22:09 ? 00:00:00 /usr/bin/daemon --name=jenkins --inherit --env=JENKINS_HOME=/var/lib/jenkins --output=/var/log/jenkins/jenkins.log --pidfile=/var/run/jenkins/jenkins.pid -- /usr/bin/java -jar /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080 --ajp13Port=-1 jenkins 3878 3877 2 22:09 ? 00:00:36 /usr/bin/java -jar /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080 --ajp13Port=-1
比較のため、別の環境で動かしているプロセスを調べてみた。
$ ps -ef | grep jenkins jenkins 2296 1 99 Aug30 ? 2-12:13:21 /usr/lib/jvm/java-1.6.0/bin/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --ajp13Port=8009 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20 --prefix=/jenkins
「--prefix=/jenkins」つければいいようだ。
/etc/init.d/jenkins の内容から設定箇所は /etc/default/jenkins にあるよう。
$ sudo vi /etc/default/jenkins ≪変更前≫ JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT" ≪変更後≫ JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT --prefix=$PREFIX"
おまけ
jenkinsのデフォルト設定が抜けている件について、セットアップスクリプトで何らかの対処していないのかと気になったので調べてみた。
CHK=`grep prefix "/etc/default/jenkins"` if [ "$CHK" = '' ] then cat /etc/default/jenkins |sed 's/JENKINS_ARGS="/JENKINS_ARGS="--prefix=\/jenkins /' > /tmp/jenkins_config mv -f /tmp/jenkins_config /etc/default/jenkins fi
prefix追加する処理を行っているけど、/etc/default/jenkins の内容が以下のようになっているので、CHKで処理が行われない。
# --prefix=$PREFIX JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT"
jenkinsのgitリポジトリ調べたら、2012/2/24の変更で追加されていた。
https://github.com/jenkinsci/jenkins/commit/2e8cb001c51fb9b35b7262f69f659e7b688f6df8#debian/debian/jenkins.default
判定条件を以下のようにすればよい。
≪変更前≫ CHK=`grep prefix "/etc/default/jenkins"` ≪変更後≫ CHK=`grep "JENKINS_ARGS.*--prefix" "/etc/default/jenkins"`