2007年4月15日日曜日

Tracインストール手順メモ.

 と言う事で、無事TracをApache上で動かす事も出来ましたので、Tracのインストール方法(ソースベース)をメモ.

1. Install環境の確認.



 OS … Fedora Core6(Linux)
     Ubuntu 6.10 Desktop 日本語版(Linux)
     Debian GNU/Linux 3.1 r5(Linux)
  ※FCは必要な環境のいくつかが最初からRPMで入っているケースが多いので、
   2つのディストリビューションで試してみました.
  ※本当はUbuntuで試したかったんですが、何せCD-Rドライブがいかれている
   ので諦めました orz

 今回の主な環境(Python以外ソースから)
  ・Trac … Trac 0.10.3.1日本語版
  ・Webサーバ … Apache
    ※Apacheに関しての記述を飛ばせばtracdでもOK.
  ・データベース … SQLite
  ・バージョン管理 … Subversion

 今回は以上の環境でインストールしてみます.
 他の環境では以下のサイトが役に立つでしょう.

  【Trac全般】
   ・discypus.jp
    ※メニューの「Bug Tracking」から
  【Windows】
   ・探し中…
  【Linux】
   ・パッケージ(RPM)でインストール[導入が楽なのでオススメ]
     ・kazfの日記
   ・積み重ねた日々
  【その他】
   ・探し中…



2. 必要なファイルのダウンロード.



 Tracを動かす場合、以下の環境が必要になります.
 括弧内はlightmaterialが試したバージョンです.
 ※今回はPython以外すべてソースから入れました.
 ・Trac日本語版 [ver 0.10.3.1-ja-1]
 ・Python [ver 2.4.4 / 2.3.5(Debian)]
   → Pythonがデフォルトで入っていない環境を再現出来なかったので、インストール方法は割愛.
 ・SQLite [ver 3.3.6]
 ・PySQLite [ver 2.3.3]
 ・Apache [ver 2.2.4]
 ・mod_python [ver 3.3.1]
 ・Subversion [ver 1.4.3]
   → Python bindingsが有効化(導入)されている必要がある
 ・ClearSilver [ver 0.10.4]

 次の環境はオプション.

 ・setuptools [ver -.-.-]
   → インストールしておいた方がいいと思います.
 ・Trac Web Admin Plugin [ver 0.1.2dev_r4240](Python2.4版)
   ※↑2007-05-13確認
   → trac-adminでの操作をWeb画面上から操作可能にするPlugin.
 ・TraM [ver 0.1]
   ※↑2007-06-10追記
   → 複数プロジェクトの管理をサポートするPlugin.

 以下未確認オプション.
 これからインストールしてみます.

 ・docutils [ver ?]

 今回はこれらのファイル(未確認オプション除く)を
  /sources
 以下に保存したと言う前提で書きます.
 環境に応じ、読みかえる必要があります.



3. Pythonをインストール.



 まぁ、大抵の環境ではPythonが既に導入されているので、このセクションは不要だと思います.
 と言いますか、Pythonが入っていない環境を再現できませんでしたw
 ちなみに、readmeなんかには「rpm版の場合はpython-develとpython-xmlが必要かもね」的な事が書いてありますが、python-xmlを探す事が出来ませんでした(今の所無くても問題ありませんが、何かの拍子に要求されるかも)ので、今回はメモをパス.

 Pythonが導入されていれば、以下のコマンドで確認(起動)できます.

[??@fedora]# python
Python 2.x.x[インストールバージョン] (#1 [日付])
[GCC [GCCバージョン]] on linux2
Type "help". "copyright". "credits" or "license" for more information.
>>>

 終了する場合は[Ctrl + D]で終了出来ます.
 ちなみに「python2」でも「python2.4」でも起動出来ます.
 おそらくpython1.x系とpython2.x系を同居させた環境の為かと思います.
 ※「python2.4」は単体ファイルですが、「python2」は「python」へのシンボリックリンクです.

 ここで上手く行かない場合は…Python日本ユーザー会のサイトを確認して下さい.



4. SQLiteをインストール.



 lightmaterialのFC6環境では、最初からRPMで入っていました.
 何かの依存で入ったのかもしれませんが、最初から入っていたらこのセクションは不要です.

[??@fedora]# cd /sources
tar xvzf sqlite-3.3.15.tar.gz
cd sqlite-3.3.15
./configure
make; make install

 正常にインストールされていれば

 sqlite3
 または
 /usr/bin/sqlite3
 または
 /usr/local/bin/sqlite3

 で起動できます.



5. PySQLiteをインストール.



 PySQLiteはPythonからSQLiteを扱えるようにするアプリケーションらしい.
 PySQLiteをインストールするには、Pythonを使います.

[??@fedora]# cd /sources/
tar xvzf pysqlite-2.3.3.tar.gz
cd pysqlite-2.3.3
python ./setup.py install

 ここで以下の様なエラーが出た場合は、yumかaptitudeで「python-devel」をインストールします.

unable to open /usr/lib/python2.x/config/Makefile

 yumは分かるとして、Debianに慣れていないので一応メモ.

[??@fedora]# aptitude install python-dev

 ※rpmは「python-devel」ですが、Debianは「python-dev」

 依存関係を調べてインストールしてくれます(yumも基本的に同じです).

[??@fedora]# yum install python-devel

 リポジトリの設定によっては、yumで拾ってくれませんので、設定変更するか、自分でpython-develをダウンロードし(この辺から)、rpmでインストールします.

[??@fedora]# rpm -ihv python-devel-2.4.4-1.fc6.i386.rpm

 たぶんpython-develをインストールした後は、問題なくsetup.pyでインストール出来るでしょう.



6. Apacheをインストール.


[tracdで動かす場合は不要]

 他のサイトに山ほど情報が載っていますので、次項以降も含め、今回は単にTracをテストで動かす事を目的としたインストール、設定を行います.
 ※セキュリティに関わる事も飛ばして書いていますので注意して下さい.

[??@fedora]# cd /sources
tar xvzf httpd-2.2.4.tar.gz
cd httpd-2.2.4
./configure --enable-so --with-included-apr --enable-dav
make; make install

 ※WebDAVを有効にしておかないと、最終段階でエラーが出ました.

 エラーが出なければ、

 /usr/local/apache2/conf/httpd.conf

 ファイルを標準的な内容で編集します.
 編集後、下記コマンドで起動確認します.

[??@fedora]# /usr/local/apache2/bin/apachectl start

 ここで以下の様なエラーメッセージが出るかもしれません.

/usr/local/apache2/bin/httpd: error while Loading shared libraries: libsqlite3.so.0: cannot open shared object file: No such file or directory

 これはパスが不正でDSOモジュールとしてSQLiteが読み込めてないと言う事ですので、「libsqlite3.so.0(本体 libsqlite3.so.0.8.6)」のシンボリックリンクを「/usr/lib」に置いてあげます.

[??@fedora]# ln -s /usr/local/lib/libsqlite3.so.0.8.6 /usr/lib/libsqlite3.so.0

 Apacheを起動して何もエラーメッセージが出なければ、

 http://localhost

 にアクセスする事で、Apacheが起動している事を確認できるでしょう.



7. mod_pythonをインストール.


[tracdで動かす場合は不要? - 要確認]

 Apacheが動いたら、次はmod_pythonをインストールします.

[??@fedora]# cd /sources
tar xvzf mod_python-3.3.1.tgz
cd mod_python-3.3.1
./configure --with-apxs=/usr/local/apache2/bin/apxs
make; make install

 Pythonが見付からない様であれば、「--with-python=/[path to python]」(ソースからインストールした場合のデフォルトprefixでは「--with-python=/usr/local/lib/python2.4」、RPMパッケージなら「/usr/lib/python2.4」)を指定すると上手く行くようです.
 インストールが終わったら、Apacheの設定ファイルにmod_pythonに関する記述を追記します.

[??@fedora]# vi /usr/local/apache2/conf/httpd.conf
 LoadModule python_module /usr/local/apache2/modules/mod_python.so

 ※上記パスはmake install時にmod_pythonが以下の様に明示してくれます
  Now don't forget to edit your main config and add
   LoadModule python_module /usr/local/apache2/modules/mod_python.so

 そして、Apacheを再起動し、エラーが出ない事を確認します.

[??@fedora]# /usr/local/apache2/bin/apachectl restart

 記述内容に誤りがある場合や、正常にインストール出来ていなかった場合には、ここでエラーが出ます.
 設定内容を見直しましょう.

 次にテストファイル(*.py)を動かしてみます.
 ここでは、日本Pythonユーザー会のサンプルに沿って(多少変更あり)設置してみます.
 まず、Apacheの設定ファイルを編集します.
 Apache2.2.x系ではconfigファイルを機能毎に分離する事が推奨されていますので、以下の様にmod_python用の設定ファイルを作成します.

[??@fedora]# vi /usr/local/apache2/conf/extra/httpd-python.conf
 <Directory /[path to DocumentRoot]/pythontest>
  AddHandler mod_python .py
  PythonHandler testfile
  PythonDebug On
 </Directory>

 Apacheのhttpd.confにIncludeを追記します.

[??@fedora]# vi /usr/local/apache2/conf/httpd.conf
Include conf/extra/httpd-python.conf

 次に、実際にテストファイルを設置します.

[??@fedora]# mkdir /[path to DocumentRoot]/pythontest
vi /[path to DocumentRoot]/pythontest/testfile.py
from mod_python import apache

def handler(req):
    req.write("Hello World!")
    return apache.OK

 ※Pythonはインデントで構文を構築しています.
  インデント位置は保持する必要があります.

 ここまで設定出来たら、実際にmod_pythonが動作しているか確認します.

 http://localhost/pythontest/testfile.py

 にアクセスすると、

 Hello World!

 と表示される事でしょう.
 上手く動作している事が確認できたら、テストファイルは削除し、httpd.confに追記した「Include conf/extra/httpd-python.conf」をコメントアウト(または削除)します.



8. Subversionをインストール.



 Subversionが何であるかの説明は割愛します(一言で言えばCVSの様なバージョン管理システムです).
 検索すると、色々と詳しい事が書いてあるサイトを見つける事が出来ますし.

[??@fedora]# cd /sources
tar xvzf subversion-1.4.3.tar.gz
cd subversion-1.4.3
./configure
make; make install

 Debianでzlibが導入されていない場合、configure時に以下の様なエラーが出ます.

configure: error: subversion requires zlib

 …面倒なので時間が無いのでzlibはソースじゃなくてaptitudeでインストールしました.

[??@fedora]# aptitude install zlib1g-dev

 これで素のDebianでもconfigureが成功するかと思います.
 以下のコマンドで、正常にインストール出来ているかを確認します.

[??@fedora]# svn help
…[使用方法に関してだらだらと]…

 正常にインストール出来ている様であれば、Apacheが正常に起動するか確認します.
 エラーメッセージが表示される場合は「Apacheのconfigure時にAPR-Utilでエラーが出る.」を確認.

 本来、この後はリポジトリの作成、設定等々ありますが、必要最低限のみ記載します.

 svnadmin create --fs-type fsfs [path to repository]
 例として今回は

[??@fedora]# svnadmin create --fs-type fsfs /usr/local/svn/repos

 としてリポジトリを作成してみました.



9. Python bindingsをインストール.



 SubversionとPythonを連系させる為、SubversionのPython bindingsを導入します.
 これは、別途ファイルを用意する必要は無く(パッケージ版は分かりませんが…)、先にダウンロードしたSubversionのソースファイルの中にあります.

[??@fedora]# cd /sources/subversion-1.4.3
make swig-py
make install-swig-py

 正常にインストールが完了した場合、以下のファイルが生成されています.

 /usr/local/lib/svn-python

 また、

 /usr/lib/python2.4/site-packages/svn-python.pth

 が存在するか確認し、存在しない場合は

[??@fedora]# echo /usr/local/lib/svn-python > /usr/lib/python2.4/site-packages/svn-python.pth

 としてパスを通します.
 ※↑は「積み重ねた日々」を参照しました.



10. ClearSilverをインストール.



 テンプレートエンジンらしいですが、ClearSilverについてはよく分かりません.
 …まぁ、他のソフトウェアについても良く分かっていないんですが orz

 気をとり直して

[??@fedora]# cd /sources
tar xvzf clearsilver-0.10.4.tar.gz
cd clearsilver-0.10.4
./configure
make; make install

 Apacheのパスが見付からないとエラーが出る場合は、「--with-apache=/[path to Apache2]」と指定すると良いでしょう.
 ただ、エラーメッセージが出なかったからと言って、ClearSilverが正常にインストールできたかどうか確認する方法をlightmaterialは知りません.
 Tracをインストールし、正常に起動(アクセス)できたか否かで判断しています.



11. Tracをインストール.



 ようやくTracの出番ですw

[??@fedora]# cd /sources
unzip trac-0.10.3.1-ja-1.zip
cd trac-0.10.3.1-ja-1
python ./setup.py install

 ZIP圧縮ですので、unzipが必要です.
 これで「取り敢えずの」インストール完了.
 と、ここでワンクッション.
 今回、日本語版のTracをインストールした訳ですが、Trac0.10.3.1日本語版(trac-0.10.3.1-ja-1.zip)には少し問題があります.
 trac-adminとtracdの改行コードがCrLfであると言う事です.
 このまま起動しようとしても

[??@fedora]# trac-admin
 : そのようなファイルやディレクトリはありません
 [または日本語コンソール環境外であれば…]
 : No such file or directory

 と言うエラーが返ってきます.

 なぜそうなっているのか(敢えてCrLfにしているのか、意図せずCrLfになってしまったのか)は知りませんが、下記の方法でCrLfからLf改行に変更します.

[??@fedora]# cd path/to/trac/bin
※デフォルトprefixで入れているなら「/usr/bin」
tr -d "\r" < trac-admin > ta
mv ta trac-admin
tr -d "\r" < tracd > td
mv td tracd

 ※この操作はdiscypusさんに教えていただいたものです.
  詳しくは↓こちらから

  [エラー] trac-0.10.3.1-ja-1 の trac-admin, tracd の改行コードを修正

 上記操作が終わったら、下記のコマンドで正しくインストールされたかを確認します.

[??@fedora]# trac-admin
 trac-admin - The Trac Administration Console 0.10.3.1
 …[以下使用方法に関してだらだらと]…

 ここまで来たら後一歩です.



12. Tracの設定.



 Tracを動作させる為の各種設定を行います.

 まず、Trac用のディレクトリを作成します.
 これは好みのパスで問題無いでしょう(ApacheのDocumentRoot配下除く).
 今回は「testprj」と言うプロジェクト用のディレクトリも含め、

 /usr/local/trac/testprj

 と言うディレクトリを作成してみます(「/var/trac」などでもいいと思います).

[??@fedora]# mkdir -p /usr/local/trac/testprj

 作成したディレクトリに、Trac用のファイルを作成します.

[??@fedora]# trac-admin /usr/local/trac/testprj initenv

 # 以下、「>」の右側はテストで作成した環境.
 # 空白の場合はデフォルト値(そのままEnter)
 Project Name [My Project]> Test Project
 Database connection string [sqlite:db/trac.db]>
 Repository type [svn]>
 Path to repository [/path/to/repos]> /usr/local/svn/repos
 Templates directory [/usr/share/trac/templates]>

 作成した後は、Apacheから操作出来る様に、所有者を変更してあげます.

[??@fedora]# chown -R [apacheユーザー]:[apacheグループ] /usr/local/trac/testprj

 尚、Tracのドキュメントによると、ここでSELinuxが有効になっている環境では、許可設定を変更してあげる必要があるとの事です(が、何故かlightmaterialの環境ではSELinuxを有効にしているにも関わらず、特にPermissionエラーは出ませんでした).

[??@fedora]# chcon -R -h -t httpd_sys_content_t PATH_TO_REPOSITORY

 次にApacheのTrac用設定を行います(tracdで動かす場合は不要です).
 Apache2.2.x系ではconfigファイルを機能毎に分離する事が推奨されていますので、以下の様にTrac用の設定ファイルを作成します.

[??@fedora]# vi /usr/local/apache2/conf/extra/httpd-trac.conf
 <Location /trac>
  SetHandler mod_python
  PythonHandler trac.web.modpython_frontend
  PythonOption TracEnvParentDir /usr/local/trac
  PythonOption TracUriRoot /trac
 </Location>
 # 以下はパスワード制限する場合に必要.
 <LocationMatch "/trac/[^/]+/login">
  AuthType Basic
  AuthName "TEST"
  AuthUserFile /usr/local/trac/.htpasswd
  Require valid-user
 </LocationMatch>

 Trac用の設定ファイルを作成したら、その設定ファイルをhttpd.conf本体からインクルードする為の記述を追記します.

 Include extra/httpd-trac.conf
 ※適当な場所に記述します.分かり易く、他の設定ファイルをIncludeしている場所の前後に書く方が良いかと思います.

 そしてApacheを再起動.

[??@fedora]# /usr/local/apache2/bin/apachectl restart

 エラーが出なければ無事Tracの設定は完了です.

 tracdで動かすなら

[??@fedora]# tracd --port [適切なポート] /usr/local/trac/testprj

 でtracdを起動します.



13. オプション機能をインストール.



 必要に応じて、オプション機能をインストールします.

 ・setuptools
[??@fedora]# cd /sources
python ez_setup.py


 ・Trac Web Admin Plugin
   2007-05-13別記しました.
   →「Trac Web Admin Pluginを入れてみた.

 ・TraM
   2007-06-10別記しました.
   →「Tracのマルチプロジェクト管理用Plugin - TraM.

 @todo 他のオプション機能については、これから調査.

 これでやっと全ての準備が整いました!!!



14. Tracを使う.



 Apacheなら
  http://localhost/trac/testprj
 へアクセス.
 tracdなら
  http://localhost:[適切なポート]/trac/testprj
 へアクセスしてみると…


 これまでの道のりで誤りがなければTracの素敵な画面が表示されます!
 Debianの場合、Python上の日本語エンコードの問題で、以下のエラーが発生するかもしれません.

LookupError: unknown encoding: EUC-JP

 この場合、コーデックを入れる必要があります.

[??@fedora]# aptitude install python2.3-japanese-codecs


 後は必要に応じてtracのプロジェクト個別設定ファイル

 /[path to trac project]/conf/trac.ini
 例では
 /usr/local/trac/testprj/conf/trac.ini

 を編集するだけです.

 もしここまででエラーが出たら…どこかの設定やインストールが上手く行っていません orz


 Pythonのエラーメッセージが表示されるのであれば、ApacheのTrac用設定に誤りがある可能性が高いかと思います(ただし、Pythonのエラーメッセージ中にPermission〜とエラーが出ていたら、許可設定、権限設定の問題です).
 単にファイル構成がリストアップされた画面になった場合も(Apacheの設定でIndexesを無効にしていたら出ませんが)、ApacheのTrac用設定(と言うか、Pythoの設定ですが)に誤りがある可能性があります.

 lightmaterialが引っかかったのは、trac-adminの改行コード問題と、ApacheのTrac用設定くらいでしたので、それ以外のトラブルについては分かりませんが、検索すると色々出てきそうな気はします.


 それにしても、本当に挫けそうなほど導入が煩雑です.
 ここまで書いておいて何ですが、正直パッケージで導入する方が数段賢いですw
 少なくとも、私はソースで導入して「なんて馬鹿な事をしてしまったんだぁぁぁぁ〜〜!!! orz」と思いました、はい.

 今日はblog書く事自体に疲れました orz

0 件のコメント: