こんにちわ。ばたっちです。
いまさらですが Trac+SVNな環境を構築することがあったので覚書。
うわさには聞いていたけど、やたらいろんなものを入れなきゃいけないのですね。。
ちなみにパッケージの依存関係とか面倒なので、ここは硬派に(?)ソースからコンパイルで。
今回インストールしたものは以下のとおり。
- httpd-2.2.6
- swig-1.3.33
- neon-0.25.5
- subversion-1.4.5
- Python-2.5.1
- mod_python-3.3.1
- sqlite-3.5.3
- pysqlite-2.4.0
- Genshi-0.4.4
- clearsilver-0.10.4
- trac-0.10.4-ja-1
これだけ入れて、最後にやっと Tracのインストール。。
インストールは以下のように /optに入れるので、適宜読み替えて下さい。
/opt/
apache22/
clearsilver/
neon/
python25/
sqlite3/
svn14/
swig/
svnroot/
tracroot/
では、行きましょう♪
まずは、Subversionの環境構築からです。
[Apache]
wget http://ftp.kddilabs.jp/infosystems/apache/httpd/httpd-2.2.6.tar.bz2
tar jxvf httpd-2.2.6.tar.bz2
cd httpd-2.2.6/
./configure --prefix=/opt/apache22 \
--enable-modules="so rewrite dav" \
--enable-proxy --enable-proxy-ajp
make
sudo make install
※apacheアカウント作っとく。
chown -R apache.apache /opt/apache22/
[Python]
wget http://www.python.org/ftp/python/2.5.1/Python-2.5.1.tar.bz2
tar jxvf Python-2.5.1.tar.bz2
cd Python-2.5.1/
./configure --prefix=/opt/python25
make
sudo make install
[SWIG] (SubversionとPythonの連携に使うらしい)
wget http://jaist.dl.sourceforge.net/sourceforge/swig/swig-1.3.33.tar.gz
tar zxvf swig-1.3.33.tar.gz
cd swig-1.3.33/
./configure --prefix=/opt/swig \
--with-python=/opt/python25/bin/python \
--without-tcl
make
sudo make install
[neon] (SubversionでURIスキームを使う。0.25.5必須)
wget http://www.webdav.org/neon/neon-0.25.5.tar.gz
tar xvzf neon-0.25.5.tar.gz
cd neon-0.25.5/
./configure --prefix=/opt/local/neon
make
sudo make install
[Subversion]
tar jxvf subversion-1.4.5.tar.bz2
cd subversion-1.4.5/
env PYTHON=/opt/python25/bin/python \
./configure --prefix=/opt/svn14 \
--with-apxs=/opt/apache22/bin/apxs \
--with-apr=/opt/apache22/bin/apr-1-config \
--with-apr-util=/opt/apache22/bin/apu-1-config \
--enable-swig-bindings=python \
--with-swig=/opt/swig/bin/swig \
--with-neon=/opt/neon \
--disable-static
※Makefileの設定が足りないので手で追加。
vi Makefile
----
-SVN_APR_LIBS = /opt/local/apache22/lib/libapr-0.la -lm -lcrypt
+SVN_APR_LIBS = /opt/local/apache22/lib/libapr-0.la -lm -lcrypt -lgssapi `krb5-config --libs` `xml2-config --libs`
-SVN_APR_INCLUDES = -I/opt/local/apache22/include
+SVN_APR_INCLUDES = -I/opt/local/apache22/include `krb5-config --cflags` `xml2-config --cflags`
----
make
sudo make install
make swig-py
make check-swig-py
sudo make install-swig-py
※Python連携のモジュールへのリンクを作成
cd /opt/python25/lib/python2.5/site-packages
sudo ln -s /opt/svn14/lib/svn-python .
sudo ln -s /opt/svn14/lib/svn-python/* .
ここまでインストールしたら、ひとまず Subversionの環境設定を行います。
まずは、リポジトリの作成。/opt/svnroot に置くようにしました。
リポジトリ作成後に定番のディレクトリを作成します。
svnadmin create /opt/svnroot/test
svn mkdir file:///opt/svnroot/test/trunk \
file:///opt/svnroot/test/tags \
file:///opt/svnroot/test/branches \
-m "make trunk, tags, branches"
できたら、Apacheのモジュール設定。
デフォルトでは conf/extra/ ディレクトリ以下に各モジュール用の設定ファイルを置いて、conf/httpd.conf から読み込むようになっているようです。
既存の conf/extra/ を conf/extra-all/ にし、conf/extra/ 以下に必要なモジュールのみリンクを張るようにしてみました。この辺はお好みで。
conf/httpd.conf
----
-User daemon
-Group daemon
+User apache
+Group apache
+Include conf/extra/*.conf ※ファイルの末尾辺りに。
----
conf/extra/ の構成を変更して、Subversionの設定ファイルを追加する。
mv extra extra-all
mkdir extra
vi conf/extra-all/httpd-svn.conf
----
# cat /opt/apache22/conf/extra/httpd-svn.conf
# Subversion Repository
#LoadModule dav_svn_module modules/mod_dav_svn.so
#LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
DAV svn
SVNParentPath /opt/svnroot
AuthType Basic
AuthName "Subversion Authentication Realm"
AuthUserFile /opt/svnroot/.htpasswd
AuthGroupFile /opt/svnroot/.htgroup
# Limit write permission to list of valid users.
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require group svn_commiters
</LimitExcept>
<Limit GET PROPFIND OPTIONS REPORT>
Require group svn_commiters
Require group svn_readers
</Limit>
</Location>
----
cd extra/
ln -s ../extra-all/httpd-default.conf .
ln -s ../extra-all/httpd-dav.conf .
ln -s ../extra-all/httpd-svn.conf .
リポジトリにアクセス制限用のファイルを作成します。
cd /opt/svnroot/
/opt/apache22/bin/htpasswd -c /opt/svnroot/.htpasswd user1 ※新規
/opt/apache22/bin/htpasswd /opt/svnroot/.htpasswd user2 ※追加
vi .htgroup
----
svn_commiters: user1
svn_readers: user1 user2
----
※Apacheから書き込みできるようにオーナーを変更
chown -R apache.apache test/
設定が完了したら、Apacheの起動確認です。
/opt/apache22/bin/apachectl を /etc/init.d にコピーするなりして、自動起動の設定などを行います。
(今回は自動起動にしていません。)
cd /etc/init.d/
ln -s /opt/apache22/bin/apachectl apache22
※起動
/etc/init.d/apache22 configtest
/etc/init.d/apache22 start
問題なく起動できたら、http://xxx.xxx.xxx.xxx/svn/test/ へアクセスしてリポジトリが見えたら成功です♪
続いて、Tracの環境構築。ここからが長い。。
必要なものをひたすらインストールしていきます。
[mod_python]
wget http://ftp.riken.jp/net/apache/httpd/modpython/mod_python-3.3.1.tgz
tar zxvf mod_python-3.3.1.tgz
cd mod_python-3.3.1/
./configure --with-apxs=/opt/apache22/bin/apxs \
--with-python=/opt/python25/bin/python
make
sudo make install
[SQLite3]
※今回はデフォルトでDBはSQLite3に。PostgreSQLでもできるらしい。MySQLはまだお試し版の模様。
wget http://www.sqlite.org/sqlite-3.5.3.tar.gz
tar zxvf sqlite-3.5.3.tar.gz
cd sqlite-3.5.3/
./configure --prefix=/opt/sqlite3 --enable-threadsafe --disable-tcl
make
sudo make install
[pysqlite]
wget http://initd.org/pub/software/pysqlite/releases/2.4/2.4.0/pysqlite-2.4.0.tar.gz
tar zxvf pysqlite-2.4.0.tar.gz
cd pysqlite-2.4.0/
※参照するSQLiteのパスなどを設定
vi setup.cfg
----
[build_ext]
define=
include_dirs=/opt/sqlite3/include
library_dirs=/opt/sqlite3/lib
+ rpath=/opt/sqlite3/lib ※これ追加
libraries=sqlite3
----
/opt/python25/bin/python setup.py build
※sqlite用のextensionが、libsqlite3.soを参照できるか確認
ldd build/lib.linux-i686-2.5/pysqlite2/_sqlite.so
libsqlite3.so.0 => /opt/sqlite3/lib/libsqlite3.so.0 (0x008e4000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0x00775000)
libc.so.6 => /lib/tls/libc.so.6 (0x00b0a000)
/lib/ld-linux.so.2 (0x00489000)
sudo /opt/python25/bin/python setup.py install
※正常に動作するか確認
/opt/python25/bin/python
>>> from pysqlite2.test import test
>>> test()
[clearsilver]
wget http://www.clearsilver.net/downloads/clearsilver-0.10.4.tar.gz
tar zxvf clearsilver-0.10.4.tar.gz
cd clearsilver-0.10.4/
./configure --prefix=/opt/clearsilver \
--with-apache=/opt/apache22 \
--with-python=/opt/python25/bin/python
make
sudo make install
[Genshi]
wget http://ftp.edgewall.com/pub/genshi/Genshi-0.4.4.tar.bz2
tar jxvf Genshi-0.4.4.tar.bz2
cd Genshi-0.4.4/
sudo /opt/python25/bin/python setup.py install
[Trac] ※やっと!
wget http://www.i-act.co.jp/project/products/downloads/trac-0.10.4-ja-1.zip
unzip trac-0.10.4-ja-1.zip
sudo /opt/python25/bin/python setup.py install
ちなみに、pysqlite-2.4.0を使う場合に不具合があるようなので、修正しておきましょう。
(see. http://trac.edgewall.org/changeset/6223)
vi /opt/python25/lib/python2.5/site-packages/trac/db/sqlite_backend.py
----
raise TracError('Database already exists at %s' % path)
os.makedirs(os.path.split(path)[0])
+ if isinstance(path, unicode): # needed with 2.4.0
+ path = path.encode('utf-8')
cnx = sqlite.connect(path, timeout=int(params.get('timeout', 10000)))
cursor = cnx.cursor()
- - -
self._active_cursors = weakref.WeakKeyDictionary()
timeout = int(params.get('timeout', 10.0))
+ if isinstance(path, unicode): # needed with 2.4.0
+ path = path.encode('utf-8')
cnx = sqlite.connect(path, detect_types=sqlite.PARSE_DECLTYPES,
check_same_thread=sqlite_version < 30301,
----
では、これから Tracの環境設定をしていきます。
まずは、リポジトリの作成。/opt/tracroot に作成することにします。
/opt/python25/bin/trac-admin /opt/tracroot/test initenv
※以下の質問に答えていく。
Project Name [My Project]> test
Database connection string [sqlite:db/trac.db]>
Repository type [svn]>
Path to repository [/path/to/repos]> /opt/svnroot/test
Templates directory [/opt/python25/share/trac/templates]>
※リポジトリの文字コード設定を変更しておく。今回は UTF-8
vi /opt/tracroot/test/conf/trac.ini
----
-default_charset = iso-8859-15
+default_charset = utf-8
----
Trac のテスト用サーバを起動して、ブラウザで表示できれば成功です♪
/opt/python25/bin/tracd --port=8000 /opt/tracroot/test
※http://xxx.xxx.xxx.xxx:8000/test/ へアクセス
Trac 単体で動いたら Apache経由の設定を行います。
cd /opt/apache22/conf/
※mod_pythonの設定ファイル作成
vi extra-all/httpd-python.conf
----
LoadModule python_module modules/mod_python.so
----
※Tracの設定ファイル作成
vi extra-all/httpd-trac.conf
----
<Location /trac>
SetHandler mod_python
PythonDebug On
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /opt/tracroot
PythonOption TracUriRoot /trac
</Location>
<LocationMatch "/trac/.*">
AuthType Basic
AuthName "trac"
AuthUserFile "/opt/tracroot/.htpasswd"
Require valid-user
</LocationMatch>
----
cd extra/
ln -s ../extra-all/httpd-python.conf .
ln -s ../extra-all/httpd-trac.conf .
Apache から Trac のリポジトリにアクセスできるようにします。
※オーナーを変更
chwon -R apache.apache /opt/tracroot/test/
※アクセス制限のファイル作成
/opt/apache22/bin/htpasswd -c /opt/tracroot/.htpasswd user1
設定ができたら Apacheを再起動します。
/etc/init.d/apache22 configtest
/etc/init.d/apache22 restart
ブラウザで http://xxx.xxx.xxx.xxx/trac/test/ を開いて、Tracの画面が表示できたら成功です♪
Subversion のリポジトリも表示できることを確認しましょう。
以上。お疲れ様でした。A^^;
追記:neon追加