« 日本語版TracをMac OSXにインストールする | メイン | CVSupでports ツリーを最新の状態にする »

FreeBSD 6.0でSubversion + Trac環境を作る

前回、前々回とMacOSXで行っていた作業をFreeBSDでも行っておきました。
クライアントとしては非常に使いやすいMacOSXですが、今のところサーバとして運用する気にはなれません。

取りあえずportsでSubversionをインストール

# cd /usr/ports/devel/subversion
# make WITH_MOD_DAV_SVN=YES WITH_APACHE2_APR=YES WITHOUTBDB=YES
# make install

リポジトリを作成。

# mkdir /home/svn
# cd /home/svn/
# svnadmin create repos
# vi repos/conf/svnserve.conf
[general]
anon-access = read
auth-access = write
password-db = passwd
realm = My First Repository
# vi repos/conf/passwd
[users]
myuser = testpasswd
# chown -R svn:svn repos

お約束の文字列をrc.confに追加して

# echo svnserve_enable="YES" >> /etc/rc.conf

標準の起動スクリプトで svnserve を起動・・と思ったら起動しない。

# /usr/local/etc/rc.d/svnserve.sh start
Starting svnserve.
su: unknown login: svn

自動的にユーザとグループが作られないようなので作成する。

# pw groupadd -n svn -g 90
# pw useradd -n svn -u 90 -g svn -d /nonexistent -s /nonexistent

デフォルトだと svnserve に -r オプションがついているので該当箇所をコメントアウトしておく。

# diff -u /usr/local/etc/rc.d/svnserve.sh.orig /usr/local/etc/rc.d/svnserve.sh
--- /usr/local/etc/rc.d/svnserve.sh.orig Sun Jan 14 17:11:17 2007
+++ /usr/local/etc/rc.d/svnserve.sh Sun Jan 14 17:12:01 2007
@@ -30,6 +30,6 @@
rcvar=`set_rcvar`
load_rc_config $name
command=/usr/local/bin/svnserve
-command_args="-r ${svnserve_data}"
+#command_args="-r ${svnserve_data}"

run_rc_command "$1"

改めて起動、と。

# /usr/local/etc/rc.d/svnserve.sh start

ついで今回はWebからリポジトリを見られるようにしておく。何の意味があるのかわかりませんが。

適当にVirtualHostの中に書いておく、と。

# /path/to/httpd.conf
<VirtualHost example.com:80>
...
...

<Location /svn>
<IfModule mod_dav.c>
Dav svn
SVNParentPath /home/svn
</IfModule>
<LimitExcept GET PROPFIND OPTIONS REPORT>
Deny from all
</LimitExcept>
</Location>
</VirtualHost>

これでWebからリポジトリが参照できるようになります。mod_dav_svnモジュールが必要ですが、portsで入れたところ勝手にhttpd.confに記述されていました。

http://hostname/svn/repos/

プロジェクトをインポートして適当に使っていく、と。

# svn import ~myuser/files/ svn://localhost/home/svn/repos -m "initial import"
# cd ~myuser/project/
# svn co svn://localhost/home/svn/repos
# ...
# ...

SSH経由で使う場合はこんな感じです。

# svn list svn+ssh://hostname/home/svn/repos

日本語版Tracのインストール

# cd /usr/local/src/
# wget http://www.i-act.co.jp/project/products/downloads/trac-0.10.3-ja-1.zip
# tar zxvf trac-0.10.3-ja-1.zip
# cd trac-0.10.3-ja-1
# python setup.py install
# mkdir /home/trac
# cd /home/trac
# trac-admin /home/trac/repos initenv
Project Name [My Project]>
Database connection string [sqlite:db/trac.db]>
Repository type [svn]>
Path to repository [/path/to/repos]> /home/svn/repos
Templates directory [/usr/local/share/trac/templates]>


仮起動。http://hostname:3690/にアクセス可能に。

# tracd --port 3690 /home/trac/repos/

CGIの設定。ここではtrac.cgiをコピーしてきました。trac.cgiにアクセスすると動作します。

# cd /path/to/docroot
# cp /usr/local/share/trac/cgi-bin/trac.cgi .
# chown -R www:www /home/trac/repos/
# vi .htaccess
SetEnv TRAC_ENV_PARENT_DIR /home/trac

MacOSXではうまくいかなかったmod_pythonの設定。

# cd /usr/ports/www/mod_python3
# make install
# vi /usr/local/etc/apache22/httpd.conf
追加
LoadModule python_module libexec/apache22/mod_python.so

ユーザに管理者権限を与えておく。(※2007/01/21 追加)

# trac-admin /home/trac/repos/ permission add myuser TRAC_ADMIN

# vi /usr/local/etc/apache22/Includes/virtual.conf

<Location /trac>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /home/trac
PythonOption TracUriRoot /trac
</Location>
<Location "/repos/login">
AuthType Basic
AuthName "myproject"
AuthUserFile /home/trac/.htpasswd
Require valid-user
</Location>

試したらApacheのログにSegmentation fault出まくりでしたw

[Sun Jan 14 22:59:11 2007] [notice] child pid 56627 exit signal Segmentation fault (11)
[Sun Jan 14 22:59:11 2007] [notice] child pid 56626 exit signal Segmentation fault (11)
[Sun Jan 14 22:59:11 2007] [notice] child pid 56625 exit signal Segmentation fault (11)
[Sun Jan 14 22:59:11 2007] [notice] child pid 56624 exit signal Segmentation fault (11)

OSXの時にうまくいかなかったのは(成功していないのでなんとなくですが)Pythonのライブラリパスが通っていなかったような気がするのですが、今回は単に権限の設定でした。

マルチプロジェクトを扱う場合はtracのrootからApacheで読み書きできる権限にしておく、と。

# chown -R www:www /home/trac/
# apachectl restart

あっさり成功。高速にTracが動作するようになりました。ヽ(´ー`)ノ

cf.
http://www.machu.jp/diary/20050923.html
http://tach.arege.net/trac/wiki/TracModPython

About

2007年01月14日 23:20に投稿されたエントリーのページです。

ひとつ前の投稿は「日本語版TracをMac OSXにインストールする」です。

次の投稿は「CVSupでports ツリーを最新の状態にする」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。