前回、前々回と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