Tracをlighty+FastCGIで動かす
今までyumで入れたhttpd上で動かしてたけど、独立性が欲しくなってきたので別途入れることに。せっかくなので、Apacheではなくlightyを試してみようと思ったのでメモ残します。基本方針はこんな感じ。
- バージョンは英語版0.11
- lighty+FastCGIで動かす
- Trac全体に認証をかけてhttpsでアクセス
- インストール先は/opt/trac11
- lightyもFastCGIもTrac専用として/opt/trac11/下にインストール
ライブラリの扱いについては、
の設定を.zshrcとかに書いておくと/opt/*/lib/にあるライブラリには自動でPATHが通る。自分はこれを使ってるので、そこにまとめる。
■setuptoolsを入れる
wget http://peak.telecommunity.com/dist/ez_setup.py sudo python ./ez_setup.py
Trac以外でもPythonなツールを使う時には必要なケースが多そうなので、setuptoolsだけは/opt以下じゃなくて普通にインストールする。
■Trac本体のインストール
- 本家 http://trac.edgewall.org/wiki/TracDownload
- 日本語版 http://www.i-act.co.jp/project/products/products.html
日本語版は0.11がまだなので(もうすぐ出る?)、本家から英語版を入れる。
mkdir -p /opt/trac11/lib/python2.4/site-packages export PYTHONPATH=/opt/trac11/lib/python2.4/site-packages python setup.py install --prefix=/opt/trac11 mkdir /opt/trac11/{cgi-bin,htdocs} cp cgi-bin/trac.fcgi /opt/trac11/cgi-bin/
Pythonライブラリを任意のディレクトリに置く場合、環境変数PYTHONPATHに書くなどする必要がある。sudoすると環境変数がリセットされるので、rootで入れようとするとつまづく。sudoで通す環境変数を変更するのは気が進まないので、/optをグループライタブルにして自分のユーザ権限でインストールすることに。本当はちゃんと管理用のユーザを作ってそれで稼働させるべきでしょうね。
というか、Pythonライブラリはおとなしく/usr/lib/python2.4/site-packagesにインストールしてもいいかもしれない。
■configobjのインストール
認証に必要なので入れる。
のDownloadingからzipを拾ってきて解凍して、
python setup.py install --prefix=/opt/trac11
■プロジェクト作成
mkdir /opt/trac11/projects trac-admin /opt/trac11/projects/trac initenv
適当に入力して作る。Subversionのリポジトリは後からでもいい。
■FastCGI
./configure --prefix=/opt/trac11/fastcgi --libdir=/opt/trac11/lib make make install
■lighty
sudo yum install pcre-devel.x86_64 bzip2-devel.x86_64 ./configure --prefix=/opt/trac11/lighty --libdir=/opt/trac11/lib --with-openssl make make install mkdir /opt/trac11/lighty/conf cp doc/lighttpd.conf /opt/trac11/lighty/conf/ cd /opt/trac11/lighty/conf vi lighttpd.conf
●lighttpd.conf
module読み込み
- mod_auth, mod_fastcgiを有効にする
document-rootの変更
server.document-root = "/opt/trac11/htdocs/"
ポートの変更
server.port = 4343
実行ユーザ/グループ
server.username = "ryo" server.groupname = "wheel"
とりあえず自分用ということで。
SSLを有効にする
ssl.engine = "enable" ssl.pemfile = "/opt/trac11/lighty/ssl/server.pem"
末尾に追加
include "trac.conf"
●trac.conf
fastcgi.server = ("/trac" => ("trac" => ("socket" => "/tmp/trac-fastcgi.sock", "bin-path" => "/opt/trac11/cgi-bin/trac.fcgi", "check-local" => "disable", "bin-environment" => ( "PYTHONPATH" => "/opt/trac11/lib/python2.4/site-packages", "TRAC_ENV" => "/opt/trac11/projects/trac" ) ) ) ) auth.backend = "htdigest" auth.backend.htdigest.userfile = "/opt/trac11/lighty/conf/user.htdigest" auth.require = ( "/trac" => ( "method" => "digest", "realm" => "lighty", "require" => "valid-user" ), )
●digest認証パスワードファイル
htdigest -c user.htdigest lighty ryo
●起動スクリプト
sudo cp doc/rc.lighttpd.redhat /etc/init.d/lighttpd sudo vim /etc/init.d/lighttpd
以下の箇所を変更
LIGHTTPD_CONF_PATH="/opt/trac11/lighty/conf/lighttpd.conf" lighttpd="/opt/trac11/lighty/sbin/lighttpd"
●オレオレ証明書作成
mkdir /opt/trac11/lighty/ssl cd /opt/trac11/lighty/ssl openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes chmod 0600 server.pem
●起動する
sudo /etc/init.d/lighttpd start
●静的htmlの表示テスト
cat > /opt/trac11/htdocs/index.html
<html> <head> <title>lighty</title> </head> <body> <p>Hello, lighty!</p> </body> </html>
ブラウザでhttp://localhost:4343/を叩いてみて表示されればOK
■Tracの表示確認
http://localhost:4343/trac/にアクセスして認証経由でTracの画面になればOK
lightyを複数入れたりする場合はログとか起動スクリプトの管理もちゃんとしなきゃダメだけど、ひとまずこれで動くようにはなるはず。