Apache+SVN設定

もう最初からどれくらいたったのだろう。何をしたかったのかだいぶ忘れてきた。が、しかし!ここまでくればあともう少し!(だと思いたい・・・

どこまでいったんだっけな。そう、subversion を入れ直したところまでだ。

Apachesvn を使えるように、httpd.conf を編集。メインでもvirtualホストでもどっちでも好きな方に。svn専用のヴァーチャルホストを付けてやるのがいいかもしれない。先ほど作ったモジュールを読み込むようにし、Locationを設定する。

        # モジュール読み込み
        LoadModule dav_svn_module modules/mod_dav_svn.so
        
            DAV 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.so
        
            SetHandler 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トラッキングWikiSVN で巷ではやってるぽい trac を導入してみる。

Macのソフトウェア管理ツールの MacPorts というのをインストールして、それでtracをインストールすればよさそうだ。(MacPostsのインストールはそのうち記事に)

インストールは至って簡単。tracを指定すれば関連するアプリやライブラリも勝手に入れてくれる。

# port install trac

各種Blogによると、かなり問題ありそうだったが、やってみると意外と問題なく、インストール終了。
関連するsvnとかclearsilverとかpythonとかいろいろ正常にインストールされたっぽい。

tracの設定をしようと、trac-adminで環境を初期化。すると、途中でsvnリポジトリパスを聞かれる。まだ用意していなかったので、先にsvnのセットアップからすることに。

svnセットアップにつづく

ターミナルで日本語が表示されるようにする

svnをインストールすると、helpが日本語で表示され、エスケープされてしまって読めない。。おそらくEUCになっているものと思われる。LANGとついでに、lessでも表示されるように~/.profileに設定。

export LANG=ja_JP.UTF-8
export LESSCHARSET=utf-8

あと、mac用のターミナルの設定 > ぐぐる

svnセットアップ

tracインストールからの続き。

svnMacPortstrac をインストールしたときに一緒に入れてくれたので設定だけ。と思ったのが甘かった。。。
まず、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、もしくはApacheWebDAVか。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!
Error: Target org.macports.activate returned: Image error: Another version of this port (subversion @1.4.5_0) is already active.
Error: Status 1 encountered during processing.

途中で怒られた。どうやら既に別の 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設定 へつづく。