Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Review Boardを使ってみようと

公式サイトInstalling on Linuxを参考に、手近なApache 2.0サーバにReview Board 1.0 beta 2を入れてみた。
500エラーが返ってきた。
エラーログを確認すると

Client does not support authentication protocol requested by server; consider upgrading MySQL client

とある。
「古いMySQLクライアントで新しい認証プロトコルを要求するMySQLサーバに接続しようとしている」らしい。
このサーバには、もともと「Apache 2.0」「MySQL 3」「Python 2.3」がセットで入っているのだが、それとは別に「MySQL 5」「Python 2.6」もインストールしていて、MySQLサーバは5のもののみが動作している。
Review BoardはPython 2.6にインストールしており、Python 2.6はMySQL 5のクライアントを使うように設定してある。
実際、Python 2.6のインタプリタで

>>> import MySQLdb
>>> MySQLdb._mysql.get_client_info()

とした場合はちゃんと5系の値を返す。
そして、Apache(+mod_python)ではなくrunserverで動かした場合、少なくともデータベース関連ではエラーを出さずに動作する。
にもかかわらず、Apacheで動かした場合は上記のエラーが出て動かない。
試しにmod_python上で MySQLdb._mysql.get_client_info() をしてみたところ、案の定というかなんというか、3系の値を返されてしまった。
しばらく試行錯誤してみたものの、どうしても解決策が見つからなかったので、諦めて「SQLite」を使うことにした。
SQLiteはこのサーバには入っていないので、「SQLite3をインストール」→「sqlite3をimportするためにPythonを再インストール」し、実行。
今度は500エラーはでない。が――Webページも出てこない(延々レスポンス待ち)。
流れを見るに、どうもDBに接続するところで止まってしまっているらしい。
らしいが……よくわからん。
これもまた、runserverでは正常に動作する。
もしかしたらmod_pythonが悪いのか?とmod_wsgiに変えてみたが、結果は両データベースともmod_pythonの時と同じ。
ならばもうApacheを変えてみるしかないと、「Apache 2.2」を別途入れ、mod_wsgiで動かしてみた。

動いた!\(^o^)/
しかもMySQLでもSQLiteでもどちらでも動作する。
何かあのApacheに強力な呪縛でもあったのか……

まあいい。とにかく動くようになったんだし、試しに使ってみよう。
リポジトリやらグループやらを設定し、TortoiseSVNで適当にパッチを作って「Create Review Request」。
……何も起こらない。
いや、ボタンは反応しているのだが、レビューが追加されない。
「なんだまたApache関連の問題か?('A`)
などと思ってしまったが、調べたらこれは普通にReview Boardの問題だった。おのれ。
とりあえずinfo['origInfo']やinfo['newInfo']に「リビジョン」や「作業コピー」という文字列が含まれていたら、それを元の英単語にreplaceするようにしておけば動く(これらの文字列がローカライズされていることを想定していないため、UnicodeDecodeErrorが食われてレビューの追加とページの遷移に失敗している)ようなので、今のところはそれですませておこう……

スポンサーサイト

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://idlysphere.blog66.fc2.com/tb.php/195-021afbeb
この記事にトラックバックする(FC2ブログユーザー)

Appendix

タグ

Blog内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。