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へのパスが通ってないと作成時にエラーとなるため、パスを通しておきましょう。
trac-admin コマンドを使用してプロジェクト環境を作成します。対話型で作成が進行しますので、それぞれ記入していきます。# 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 のログを参照してください。管理画面「プラグイン」のコンポーネントにチェックを入れて有効にして、設定完了です。

0 件のコメント:
コメントを投稿