kanon のインストールメモ
d:id:youandi:20111226:p3
今週からLinux環境でのお仕事が始まっているのですが、Windows環境ではTracLightningを使っていたので、Linux環境ではkanonを使ってみる事に。
今回の環境
kanonのインストール
その他OS設定
設定2:Firewallの設定変更
Firewall(iptables)でのTCP80番ポートの通信を許可する
# vi /etc/sysconfig/iptables 〜 -A INPUT -m state --state NEW -m tcp -p tcp --dport XXX -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited 〜
その他:tracへの接続
初期設定はID=admin, PW=IDと同じ
問題
その1:PATH設定
kanon-setupのスクリプト内において「/sbin/service」の呼び出しが「service」で記述されている為、apache等のデーモンの制御処理が動作しない。
なのでインストーラー実行時は環境変数PATHに「/sbin」「/usr/sbin」のパスを通しておく。
# PATH=/sbin:/usr/sbin:$PATH bash ./kanon-setup
とりあえず本件以外にもセットアップで色々と問題があったのでログを取りながら作業する。
# rm -fr /var/opt/kanon/trac/SampleProject /var/opt/kanon/svn/SampleProject # PATH=/sbin:/usr/sbin:$PATH bash ./kanon-setup 2>&1 | tee kanon-setup.log
その2:Proxy接続
README-ja.txtの説明が足りていない。
こちらのblogには正しい説明書きがあった。
wgetを実行するには、環境変数「http_proxy」「https_proxy」の設定が必要。
# vi ~/.barshrc
export https_proxy=http://192.168.0.0:65536/ export http_proxy=$https_proxy
インストール中にsubversionのチェックアウトが行われるので、subversionのproxy設定も必要。
# vi ~/.subversion/servers
[global] http-proxy-host = 192.168.0.0 http-proxy-port = 65536
その4:apacheの起動エラー
mod_pythonが入っているとmod_wsgiと競合してapacheの起動ができない。
# /usr/sbin/apachectl configtest Syntax error on line 1 of /etc/httpd/conf.d/kanon.conf: Invalid command 'WSGIPythonPath', perhaps misspelled or defined by a module not included in the server configuration
「/etc/httpd/conf.d/python26-mod_wsgi.conf」に記載があるが、mod_pythonの設定ファイル(python.conf)の読み込み順序を調整すれば(とりあえず?)良い。
# cd /etc/httpd/conf.d # ls -l -rw-r--r-- 1 root root 1671 1月 7 2007 python.conf -rw-r--r-- 1 root root 1087 10月 21 2010 python26-mod_wsgi.conf # mv python.conf pythonZZ.conf # ls -l -rw-r--r-- 1 root root 1087 10月 21 2010 python26-mod_wsgi.conf -rw-r--r-- 1 root root 1671 1月 7 2007 pythonZZ.conf
確認。
# /usr/sbin/apachectl configtest Syntax OK
その5:subversionの更新
x86_64環境で古いバージョンのi386版のsubversionのRPMパッケージがインストールされていると、x86_64版のRPMパッケージは更新/インストールされずに、セットアップのSampleProjectの所でこける。
# PATH=/sbin:/usr/sbin:$PATH bash ./kanon-setup 2>&1 | tee kanon-setup.log 〜略〜 警告: post-commitフックが失敗しました (終了コード: 2)。出力: TracError: Unsupported version control system "svn": No module named svn
kanonリポジトリのi386版のsubversionパッケージをインストールする。
# echo %_httpproxy 192.168.0.0 >> ~/.rpmmacros # echo %_httpport 65536 >> ~/.rpmmacros # rpm -Uvh \ http://kanon.ultimania.org/pkg/centos5/i386/mod_dav_svn-1.6.15-1.el5.i386.rpm \ http://kanon.ultimania.org/pkg/centos5/i386/subversion-1.6.15-1.el5.i386.rpm
その6:TracGantt(rev:820)の休日登録でエラー
休日登録ページにて「テーブルの作成とデフォルトの休日の設定」をするとエラー。
-
- http://localhost/trac/[ProjectName]/admin/ganttcalendar/holiday
TypeError: cannot concatenate 'str' and 'NoneType' objects /opt/kanon/lib/python2.6/site-packages/TracGanttCalendarPlugin-0.6.2_r820-py2.6.egg/ganttcalendar/admin.py elif req.args.get('create_table'): (loc,enc) = locale.getdefaultlocale() self.log.info("loc:"+loc)
同様のエラーが出ている人はいるけど、解決方法は見つからなかった。
どうもapache実行時のロケールが影響しているっぽい感じ。apacheが「LANG=C」設定あたりで動作している?
$ source /opt/kanon/bin/activate $ python26 >>> import locale >>> print locale.getdefaultlocale() ('ja_JP', 'UTF8') $ LANG=C python26 >>> import locale >>> print locale.getdefaultlocale() (None, None) >>> print locale.setlocale(locale.LC_ALL, 'ja_JP.UTF-8') >>> print locale.getdefaultlocale() (None, None) >>> print locale.getlocale() ('ja_JP', 'UTF8')
とりあえず休日の登録が出来れば良いので、自分に都合の良いロケールを設定する処理を追加。
# vi /opt/kanon/lib/python2.6/site-packages/TracGanttCalendarPlugin-0.6.2_r820-py2.6.egg/ganttcalendar/admin.py
elif req.args.get('create_table'): (loc,enc) = locale.getdefaultlocale() # ここから if (loc is None): locale.setlocale(locale.LC_ALL, 'ja_JP.UTF-8') (loc,enc) = locale.getlocale() # ここまで self.log.info("loc:"+loc) if (loc.find("ko_")==0) or (loc.find("Korean_")==0):
# /etc/init.d/httpd restart
その7:Mercurialのバージョンによるエラー
システムにMercurial 2.3以降のバージョンが入っていると、kanonからMercurialのリポジトリにアクセスできない。
対策として、kanonの実行環境にMercurial 2.2をインストールする。
# /opt/kanon/bin/easy_install-2.6 http://mercurial.selenic.com/release/mercurial-2.2.tar.gz
その8:TracGantt(rev:847)のガントチャート表示でエラー
-
- http://localhost/trac/[ProjectName]/ticketgantt
KeyError: 'custom'
実装にバグが有る?
# vi /opt/kanon/lib/python2.6/site-packages/TracGanttCalendarPlugin-0.6.2_r847-py2.6.egg/ganttcalendar/ticketgantt.py 496行目 変更前) any(f['name'] == sorted_field and f['custom'] for f in fields): 変更後) any(f['name'] == sorted_field and f['value'] for f in fields):
問題??
その1:SELinuxの設定破壊?
kanonのスクリプトの中で、/tmpに「/etc/selinux/config」をコピー&編集してから戻す処理があるけど、これが原因?他にも色々とやっていたので、何とも言えませんがメモとして残します。
使っているPCがHP社製でVGAはNVIDIA社のものを利用しているのですが、このHP製のRHEL5向けNVIDIA VGAドライバーは、SELinuxが有効なっている必要がある。(PermissiveでOK)
kanonのインストーラーを実行した後位から、setroubleshootdデーモンが異常終了するようになった気がする。デーモンを再起動しても数分で同じ状況になる。
# LANG=C /etc/init.d/setroubleshootd status setroubleshootd dead but pid file exists
「/etc/selinux」のタグを見てみたらおかしくなっていた。SELinuxのコマンドでタグを再設定して対処。
# /usr/sbin/semanage fcontext -a -t selinux_config_t /etc/selinux/config # /sbin/restorecon -F /etc/selinux/config
確認。
# ls -lZ /etc/selinux -rw-r--r-- root root system_u:object_r:selinux_config_t config -r--r--r-- root root system_u:object_r:selinux_config_t config,v -rw------- root root system_u:object_r:selinux_config_t restorecond.conf -rw-r--r-- root root system_u:object_r:selinux_config_t semanage.conf drwxr-xr-x root root system_u:object_r:selinux_config_t targeted/