ねこ元帥の中の人@リウマチ

日々の覚書など。ブログ名はオンラインゲームのアカウント名をいつも「ねこ元帥」にしているから。そして、2013年11月リウマチと診断されたとです。(2012年11月から時々手足に原因不明の痛みが発生、2013年9月以降は足の痛みが常態化、2013年12月30日からMTX服用開始、4月過ぎるころにはわずかの痛みが残る程度まで回復して現在に至る。)

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"`