Trac は Phthon で実装された、Wiki, 構成管理, 課題管理を統合したプロジェクト管理ツールです。
ここでは構成管理に Mercurial を使用し、Apache + mod_python + PostgreSQL (on CentOS5) というシステム構成でのインストールについて記述します。なお Apache, PosgrtgreSQL, Python, Mercurial は下記のバージョンを既にインストール済みとし、ここではインストール方法には触れません。また、文字コードは全て UTF-8 です。
- Apache httpd-2.2.14
- PostgreSQL 8.4.1
- Python 2.4.3 (python-devel)
- Mercurial 1.3.1
以降、下記の順番でインストール手順を記述します。
- テンプレートエンジンのインストール
- setuptools のインストール
- Trac 0.11.5ja のインストール
- mod_python のインストール
- pyPgSQL のインストール
- mxDateTime のインストール
- Mercurial プラグインのインストール
- プロジェクト環境の作成
- Mercurial プラグインの有効化
テンプレートエンジンのインストール
Trac0.10 まではテンプレートエンジンに ClearSilver を使用し、別途インストールする必要がありましたが、0.11 からは Genshi に変更されています。Genshi は Tracのインストーラが勝手に取得/インストール/アップグレードしてくれるので、個別の準備は不要です。
setuptools のインストール
0.10までは不要だったように記憶してますが、0.11からは setuptools を要求されます。
また後述の種々のモジュールのインストールにも使用しますので、あらかじめ setuptools をインストールしておきます。
# python ./setup.py install --prefix=/usr/local/trac0.11.5.ja1
Traceback (most recent call last):
File "./setup.py", line 15, in ?
from setuptools import setup, find_packages
ImportError: No module named setuptools
# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py
Downloading http://pypi.python.org/packages/2.4/s/setuptools/setuptools-0.6c9-py2.4.egg
Processing setuptools-0.6c9-py2.4.egg
creating /usr/lib/python2.4/site-packages/setuptools-0.6c9-py2.4.egg
Extracting setuptools-0.6c9-py2.4.egg to /usr/lib/python2.4/site-packages
Adding setuptools 0.6c9 to easy-install.pth file
Installing easy_install script to /usr/bin
Installing easy_install-2.4 script to /usr/bin
Installed /usr/lib/python2.4/site-packages/setuptools-0.6c9-py2.4.egg
Processing dependencies for setuptools==0.6c9
Finished processing dependencies for setuptools==0.6c9
Trac 0.11.5ja のインストール
現時点で最新の日本語版である 0.11.5ja をインストールします。日本語版はインタアクト株式会社のサイトからダウンロードします。
インストール時に prefix を指定せずデフォルトに任せると /usr/bin, /usr/lib, /usr/share に散らばってインストールされるので、私は --prefix= を指定して /usr/local/ 配下にリビジョン番号付でインストールし、環境設定やシンボリックリンクでパスを通しています。
prefix指定なしのデフォルトの場所にシンボリックリンクを作成します。
$ unzip Trac-0.11.5.ja1.zip
$ cd Trac-0.11.5.ja1
# mkdir -p /usr/local/trac0.11.5.ja1/lib/python2.4/site-packages/
# ln -s /usr/local/trac0.11.5.ja1 /usr/local/trac
# export PYTHONPATH=/usr/local/trac/lib/python2.4/site-packages
# python ./setup.py install --prefix=/usr/local/trac0.11.5.ja1
なお、0.10 までは ライブラリ類は /usr/local/trac/lib/python2.4/site-packages/trac/ にまとめてインストールされていたのですが、0.11 からは Genshi も含めて、/usr/local/trac/lib/python2.4/site-packages/ 配下にバージョン番号付でインストールされるようになりました。
# ln -s /usr/local/trac/bin/trac-admin /usr/bin/trac-admin
# ln -s /usr/local/trac/bin/tracd /usr/bin/tracd
# ln -s /usr/local/trac/share/man/man1/trac-admin.1 /usr/share/man/man1/trac-admin.1
# ln -s /usr/local/trac/share/man/man1/tracd.1 /usr/share/man/man1/tracd.1
# ln -s /usr/local/trac/share/man/man1/tracdb2env.1 /usr/share/man/man1/tracdb2env.1
# ln -s /usr/local/trac/share/trac /usr/share/trac
そのためシンボリックリンクでの対応は逆に面倒ですので、/usr/local/trac/lib/python2.4/site-packages に PYTHONPATH を通しておきます。
これで、trac のインストールが完了しました。
$ ls -l /usr/local/trac/lib/python2.4/site-packages/
total 284
-rw-r--r-- 1 root root 231009 Oct 10 15:06 Genshi-0.5.1-py2.4-linux-i686.egg
drwxr-xr-x 4 root root 4096 Oct 10 15:06 Trac-0.11.5.ja1-py2.4.egg
-rw-r--r-- 1 root root 309 Oct 10 15:06 easy-install.pth
-rw-r--r-- 1 root root 60 Oct 10 15:06 setuptools.pth
-rw-r--r-- 1 root root 2362 Oct 10 15:06 site.py
-rw-r--r-- 1 root root 1825 Oct 10 15:06 site.pyc
-rw-r--r-- 1 root root 1815 Oct 10 16:12 site.pyo
mod_python のインストール
mod_python 3.2 系は apache 2.2 で動作しないので、3.3 系を使用します。そして、実はtracのインストールの山場はここなのではないか、と思うくらいハマりポイントがあるのが mod_python のインストールです。
libexpat のバージョン
まず一つめのハマりポイント。expat-devel パッケージがインストールされてない場合、apache 同梱の libexpat.so が使用されますが、このバージョンが古いために実行時に mod_python がエラーとなってしまうようです(error_log には "Objects/stringobject.c:117: PyString_FromString: Assertion `str != ((void *)0)' failed."と書かれていました)。バージョンを見ると、
expat-devel がインストール済であることを確認し、必ずインストールしておきましょう。
$ strings /usr/local/apache2/lib/libexpat.so | grep expat_
expat_1.95.2
$ rpm -qa | grep expat
expat-1.95.8-8.2.1
expat-devel-1.95.8-8.2.1
mod_python のバージョン
ハマりポイントその二。apr と mod_python の特定のバージョンの組み合わせ(apr 1.3.2 と mod_python 3.3.1 ?) の場合、ビルドエラーになってしまいます。
- mod_pythonのインストールでconnobject.c:142: error: request for member `next' in something not a structure or union
- APR 1.3.2 と mod_python 3.3.1 の組み合わせでビルドエラー
- Build failure in 3.3.1 (issues.apache.org/jira)
mod_python のビルド/インストール
これで mod_python が無事インストールできました。$ svn co http://svn.apache.org/repos/asf/quetzalcoatl/mod_python/trunk $ cd trunk $ ./configure --with-apxs=/usr/local/apache2/bin/apxs $ make # make install
httpd.conf の変更
mod_python.so を有効にし、また trac 用の設定ファイルを include するように httpd.conf を変更します。
LoadModule python_module modules/mod_python.so
Include conf/extra/httpd-trac.conf
extra/httpd-trac.conf の作成
trac 用の設定ファイル extra/httpd-trac.conf を作成します。ここでは trac ディレクトリは /home/trac とします。また、trac認証には apache の基本認証を使用し、またパスワードファイルは /home/trac に設置します。
/usr/local/apache2/bin/htpasswd を使用し、trac を使用するユーザを .htpasswd に登録しておきます。
<Location /trac>
SetEnv PYTHON_EGG_CACHE /tmp/python_egg_cache
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /home/trac
PythonOption TracUriRoot /trac
PythonDebug On
</Location>
<LocationMatch /trac/[-_[:alnum:]]+/login>
AuthType Basic
AuthName "Trac"
AuthUserFile /home/trac/.htpasswd
Require valid-user
</LocationMatch>
環境変数の設定の作成
apache から、それぞれのライブラリを使用できるよう、apacheの起動スクリプトに環境変数を設定しておきます。
また、後述の trac-admin コマンドをターミナルから実行する際にも上記のパス設定が必要なので、root の .bashrc にも記述しておいた方がいいでしょう。
export PYTHONPATH=/usr/local/trac/lib/python2.4/site-packages
export PATH="$PATH":/usr/local/pgsql/bin:/usr/local/pgsql/lib
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":$PGLIB
pyPgSQL のインストール
Python から PostgreSQL へのデータベース・アクセスに、ここでは pyPgSQL を使用します。
root ユーザにに PostgreSQL ライブラリ等へのパスを通した後(通ってないとエラーとなります)、ビルド、インストールします。
$ wget http://sourceforge.net/projects/pypgsql/files/pypgsql/2.5.1/pyPgSQL-2.5.1.tar.gz/download
$ tar zxvf pyPgSQL-2.5.1.tar.gz
$ cd pyPgSQL-2.5.1
これで pyPgSQL のインストールが完了しました。
# export PATH=/usr/local/pgsql/include:$PATH
# export PATH=/usr/local/pgsql/bin:$PATH
# python setup.py build
# python setup.py install
mxDateTime のインストール
これをインストールしておかないと、プロジェクト環境作成時に下記のメッセージで落ちてしまいます。
eGenix.comのサイトから取得してインストールします。なお、UCS2版とUCS4版のどちらをインストールするかは、下記コマンドで確認します。
Creating and Initializing Project
Failed to create environment. You need to install mxDateTime
(http://www.egenix.com/files/python/eGenix-mx-Extensions.html)
インストールスクリプトを実行して、インストールします。
$ python -c "import sys;print(sys.maxunicode<66000)and'UCS2'or'UCS4'"
$ unzip egenix-mx-base-3.1.2.linux-i686-py2.4_ucs4.prebuilt.zip
$ cd egenix-mx-base-3.1.2.linux-i686-py2.4_ucs4.prebuilt
# python setup.py install
Mercurial プラグインのインストール
setuptoolを使用して Mercurial プラグインをインストールします。
$ svn co http://svn.edgewall.com/repos/trac/sandbox/mercurial-plugin-0.11
$ cd mercurial-plugin-0.11/
$ python setup.py bdist_egg
# python setup.py install
プロジェクト環境の作成
プロジェクト環境作成の例として、ここでは test という名称のプロジェクト環境と作成します。
Mercurial リポジトリの作成
まず Mercurial リポジトリを作成します。ここでは /home/hg 配下を Mercurial リポジトリのディレクトリとします。また、Mercurial の操作は hg ユーザにて行うものとします。
これで hg リポジトリが作成されました。
$ su - hg
$ cd /home/hg
$ mkdir test
$ cd test/
$ hg init
データベースの作成
tracが使用するデータベースを作成します。ここでは、"trac_test" という名前で作成し、接続ユーザは "trac"、パスワードは "foo" としています。
$ su - postgres
$ createdb trac_test
$ psql trac_test
trac_test=# CREATE USER trac WITH PASSWORD 'foo';
CREATE ROLE
trac_test=#
プロジェクト環境の作成
ベースディレクトリは /home/trac とし、その下に各プロジェクトを作成することにします。また、PostgreSQLへのパスが通ってないと作成時にエラーとなるため、パスを通しておきましょう。
# mkdir -p /home/trac/test
# export PATH="$PATH":/usr/local/pgsql/bin:/usr/local/pgsql/lib
# export POSTGRES_HOME=/usr/local/pgsql
# export PGLIB=$POSTGRES_HOME/lib
# export PGDATA=$POSTGRES_HOME/data
# export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":$PGLIB
プロジェクト環境が作成されました。まず trac ディレクトリの所有者をを apache 実行ユーザに変更し、管理者アカウントを設定しておきましょう。# export PYTHONPATH=/usr/local/trac/lib/python2.4/site-packages # trac-admin /home/trac/test initenv Project Name [My Project]> Test Project Database connection string [sqlite:db/trac.db]> postgres://trac:foo@localhost/trac_test Repository type [svn]> hg Path to repository [/path/to/repos]> /home/hg/test : : --------------------------------------------------------------------- Project environment for 'Test Project' created. You may now configure the environment by editing the file: /home/trac/test/conf/trac.ini If you'd like to take this new project environment for a test drive, try running the Trac standalone web server `tracd`: tracd --port 8000 /home/trac/test Then point your browser to http://localhost:8000/test. There you can also browse the documentation for your installed version of Trac, including information on further setup (such as deploying Trac to a real web server). The latest documentation can also always be found on the project website: http://trac.edgewall.org/ Congratulations!
これで、apache + mod_python 経由で trac にアクセスできるようになりました。# chown -R daemon. /home/trac/test/ # trac-admin /home/trac/test permission add admin TRAC_ADMIN
Mercurial プラグインの有効化
この状態では、まだコンポーネントが有効になっていないため Mercurial プラグインが使用できず、画面にエラーが表示されます。
Warning: リポジトリと同期できません (サポートされていないバージョン管理システム "hg" です: 適切なコンポーネントが見つかりません。該当するプラグインが有効に設定されているか確認してください。)。詳細は Trac のログを参照してください。
管理画面「プラグイン」のコンポーネントにチェックを入れて有効にして、設定完了です。
これで、Trac の「リポジトリブラウザ」で Mercurial が使用できるようになりました。
0 件のコメント:
コメントを投稿