Apache+SVN設定
もう最初からどれくらいたったのだろう。何をしたかったのかだいぶ忘れてきた。が、しかし!ここまでくればあともう少し!(だと思いたい・・・
どこまでいったんだっけな。そう、subversion を入れ直したところまでだ。
Apache で svn を使えるように、httpd.conf を編集。メインでもvirtualホストでもどっちでも好きな方に。svn専用のヴァーチャルホストを付けてやるのがいいかもしれない。先ほど作ったモジュールを読み込むようにし、Locationを設定する。
# モジュール読み込み LoadModule dav_svn_module modules/mod_dav_svn.soDAV svn # SVNリポジトリの親ディレクトリを指定 SVNParentPath /var/svn # Basic認証 AuthType Basic AuthName "Please Enter Your Password" AuthUserFile /Users/www/.svnpasswd Require valid-user Order Deny,Allow Deny from all Allow from all
細かい認証の設定とか、SSLにするとかは、マニュアル 日本語版が詳しい。一つだけここでいうならば、SVNPath よりも SVNParentPath が便利だよ、くらいか。svnのセットアップで作ったようなリポジトリの親を指定しておくと、後からリポジトリを追加したときも、apacheの設定変更は不要。
あと、Apacheのログをアクセス解析等してる場合は、CustomLog設定で、svnのアクセスログはわけといたほうがよい。
設定ファイルをチェックして、起動
# apachectl -t Syntax OK # apachectl restart
http://www.example.com/svn/test とかにアクセスして、アクセスできること、Basic認証がかかっていることを確認。
いよいよ tracの設定!!
trac設定 再び
ようやく、tracの設定まできました。最初の頃は気軽に考えてたけど、こんなに時間がかかるとは思いもしなかった。しかし、ついに最終章!無事うごくのか!?
trac-adminで設定しているところから、随分大回りして戻ってきました。引数にプロジェクトのディレクトリ(あらかじめ作っておく)を指定して、initenvで初期化。
# trac-admin /Users/www/trac/project initenv
いろいろ聞かれますが、大体デフォルトでOK。設定終わると、グワーっとテンプレートファイルがプロジェクトにコピーされます。
Congratulations!
と、出ればインストール完了。tracに付属でついてる簡易Webサーバーで動作確認。
# tracd --port 8000 /Users/www/trac/project
http://myhost.mydomain:8000/ なんかにアクセスすると表示されます。
が、、、 なんかエラーが出てる。。。 does not appear to be a Subversion repository. とか言われてるな。設定ファイル ${project_dir}/conf/trac.ini を確認してみても repository_dir はあってる。http://XXXX/svn/project でちゃんとアクセスできるし。
散々悩んだあげく、解決しました!repository_dir はほんとにsvn リポジトリのリアルパスなんですね。てっきりアクセスするリポジトリパスだとばかり思ってました・・・。それを直すとあっさり起動。
その間 svn の認証設定がいけないのかと AuthzSVNAccessFile を追加したりしてみましたが、全然関係なかったですね・・・
さて、日本語パッチでも当てようかと思ったら、日本語版って、パッチじゃなくてフルセットなんですね。。。インタアクトのページから持ってきて、もう一回 trac-admin を実行。無事 日本語版 動きました。
あとは、これを Apache で動かすと本日のミッション終了。Apache で動かすのは、cgiで動かすのと、mod_python で動かす2通りあるらしい。調べみると、mod_python はインストールされていないが port で簡単にインストールできそうだ(懲りてない)。
# port install mod_python
難なく終了。以下 httpd.conf 設定ファイル例
############################################################# # Trac用セッティング ############################################################# LoadModule python_module modules/mod_python.soSetHandler mod_python PythonInterpreter main_interpreter PythonHandler trac.web.modpython_frontend PythonOption TracEnv /Users/www/trac PythonOption TracUriRoot /trac AuthType Basic AuthName "Please Enter Your Password" AuthUserFile /Users/www/.htpasswd Require valid-user Order allow,deny Allow from all
apacheを再起動してアクセスしてみると、X-MAC-JAPANESE がなんら、というエラーメッセージ。これはよく出るらしい。というか、MAC OS X 10.4 + python 2.5.1 ではどうしても出てしまうとか。(参考:http://weblog.metareal.org/category/trac/)
しかし、コンパイルし直すのもめんどくさいので、とりあえず強制的に utf-8 を返すように修正。(参考:http://d.hatena.ne.jp/kazuki_t/20061120/1164030702)
これで無事 すべて解決!
やっと終わり!!
tracインストール
Issueトラッキング + Wiki + SVN で巷ではやってるぽい trac を導入してみる。
Macのソフトウェア管理ツールの MacPorts というのをインストールして、それでtracをインストールすればよさそうだ。(MacPostsのインストールはそのうち記事に)
インストールは至って簡単。tracを指定すれば関連するアプリやライブラリも勝手に入れてくれる。
# port install trac
各種Blogによると、かなり問題ありそうだったが、やってみると意外と問題なく、インストール終了。
関連するsvnとかclearsilverとかpythonとかいろいろ正常にインストールされたっぽい。
tracの設定をしようと、trac-adminで環境を初期化。すると、途中でsvnのリポジトリパスを聞かれる。まだ用意していなかったので、先にsvnのセットアップからすることに。
svnセットアップにつづく
svnセットアップ
tracインストールからの続き。
svnは MacPorts で trac をインストールしたときに一緒に入れてくれたので設定だけ。と思ったのが甘かった。。。
まず、svn helpをみようとすると激しく文字化け。というか、文字がエスケープされている。UTF-8にしたはずなのに?環境変数 LANG を確認してみると何も設定なし。設定なしだとEUCでも吐くのか?svnは。
macのターミナルの設定と、環境変数にUTF-8を設定してやるとちゃんと表示されるようになった。>別記事参照
やっとリポジトリ作成。リポジトリの場所は /var/svn 以下にプロジェクト毎とか作るイメージ。 例では、testとprojectの二つを作ってみる。
# mkdir -p /var/svn/test /var/svn/project # svnadmin create /var/svn/test # svnadmin create /var/svn/project
新規プロジェクトをimportしようとして、はた、と止まる。URLどうするか。。。
svn単体の独自プロトコルか、svn+ssh、もしくはApacheのWebDAVか。svn+sshが一番理想なのだが、パスワード認証を許可せず、公開鍵認証のみ場合、クライアントから接続が激しくめんどくさい。。。
ファイルのオーナーがすべてapacheになってしまう&データが平文で流れるのはしょうがないが、Apache経由でやろう。
が、、よく考えてみると、今使っているApacheは1.3。SVN on WebDAVが使えるのは Apache2からだ。めんどくせぇ。。まあ、せっかくの機会なのでApche2にバージョンアップすることになったのだった。
Apache2のインストールその1 へつづく。
なかなかtracまでたどり着かないなぁ。。。
Apache2のインストール
tracのインストール から、svnセットアップ を経て、まだまだ続く長い道のり。
Apache2 は MacPorts さえ入っていれば、簡単一発インストール。
# port install Apache2
/opt/local/apache2 にインストールされるので、設定ファイルとかを再度設定。内容は以前と同じ。ただし、ファイルをコピーするとApache2用のモジュールとかが入らなそうなので、書き直し。設定した内容を確認。Syntax OKがでればOK
# /opt/local/apache2/bin/apachectl -t Syntax OK
起動は LaunchDaemonを使うようになったらしい。launchctlで起動して、OS起動時に起動するように設定。
# launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
単に再起動ならこれでよい。
# /opt/local/apache2/bin/apachectl restart
ここまできて、svnの設定をhttpdに書こうと思ったら、mod_dav_svn が無いことに気がつく。。。普通に MacPosts で subversion をインストールしただけじゃ Apache のモジュールはインストールされないらしい。くそ、もう一回入れ直しかよ。2マス戻る気分。
めげずに subversion 再インストール
subversion 再インストール
trac をインストールすると勝手に入れてくれる subversion には Apache用モジュールが無かった!! なんでだよ!! そんなイジメにもめげず再インストールをがんばるのであった。
Apacheモジュール付きの subversion をインストールするには variant を指定する必要があるとか。subversionのパッケージを確認すると、いくつかvariantがあるのがわかる。
# port info subversion subversion 1.4.5, devel/subversion (Variants: universal, mod_dav_svn, no_neon, no_bdb, mac_os_x_server_mod_dav_svn, tools, bash_completion, darwin_7) http://subversion.tigris.org/ ・・・
しょうがないので、mod_sav_svn 付きで subversion を入れ直す。
# port install subversion +mod_dav_svn ・・・ Warning: subversion requests to install files outside the common directory structure!
-
-
- > Installing subversion 1.4.5_0+mod_dav_svn
- > Activating subversion 1.4.5_0+mod_dav_svn
-
途中で怒られた。どうやら既に別の subversion があるらしい。知ってるよ!!! install じゃなくて upgrade がよかったのか?もしくは一度削除してからなのか?
とりあえず手動で 元のを deactivate して、新しいものを activate してみるが、こんなんでいいのか?
# port deactivate subversion # port activate subversion 1.4.5_0+mod_dav_svn
/opt/local/apache2/modules をみると、ちゃんと mod_dav_svn.so が入っている。成功!
Apache+SVN設定 へつづく。