Page 1 of 212 »

trac-post-commit-hookをDreamHostで使う

8 Jun 2008 In: メモ

SVNのログでチケットの操作ができるとっても便利なtrac-post-commit-hookですが、DreamHostで使うには難がありました。
最大の難点は post-commit が dhapacheというユーザーで実行されるということで、これが数々の問題を引き起こします。
色々と実験して解決策を見つけたのでポストします。
なお、解決策は SQLite を使っている場合と MySQL を使っている場合で異なります。

SQLite と MySQL の共通 post-commit

コミット後にスクリプトを実行するため、/home/***/svn/projectid/hooks に post-commit という名前のファイルを作成します。
このファイルがコミット後に実行されるわけですが、dhapache によって実行されるため環境変数の再設定が必要になります。
それなので、.bash_profile などから必要な変数をコピーします。
そして、trac のソースの contrib ディレクトリから trac-post-commit-hook を post-commit と同じディレクトリにコピーします。
さらにsvn_commit_jp.mdから svnlog2utf8 を取得してパスの通るところに置いて実行権を与えます。

post-commitの例(パスなどは適宜変えてください):

#!/bin/sh

HOME='/home/***'
export PYTHONPATH="$HOME/local/lib/python: $HOME/local/lib/python/site-packages"
export LD_LIBRARY_PATH="$HOME/local/lib"
export PYTHON_EGG_CACHE="$HOME/tmp"
export PATH="$HOME/local/bin:$PATH"

REPOS="$1"
REV="$2"

LOG=`svnlook log -r $REV $REPOS | svnlog2utf8`
AUTHOR=`svnlook author -r $REV $REPOS | svnlog2utf8`
TRAC_ENV="$HOME/trac_sites/projectid/"
TRAC_URL="http://trac.example.com/projectid/"

python $REPOS/hooks/trac-post-commit-hook \
  -p "$TRAC_ENV"  \
  -r "$REV"       \
  -u "$AUTHOR"    \
  -m "$LOG"       \
  -s "$TRAC_URL"

SQLiteの場合

SQLiteの場合は dhapache が trac のディレクトリの /db/trac.db(デフォルト) へアクセスする権限を持っていないため、エラーになります。
この場合は trac.db に「chmod o+rw」するしか方法がないと思います。書き込み権限を与えるのはやだなと思うときはMySQLの移行も考えてください(MySQLへのパスワードも dhapache が読み取れる必要があるので同じっていえば同じですが)。

MySQLの場合

MySQLの場合は、上で設定した「PYTHON_EGG_CACHE」の値が dhapache が書き込みできるディレクトリを指定していて、trac.ini を読み込めればOKです。

SQLite から MySQLへの移行

SQLite から MySQLへの移行は SqliteToPgScript を使うと便利です。
SqliteToPgScript でMySQLインポートしたら、trac.ini の database の指定を「mysql://user:password@host/database」のようにすればOKです。

DreamHostにはPHPが元々入ってますが、PECLなどの拡張ライブラリが使用できません。
加えてバージョンが古いのです。そこでPHPを自分でコンパイルしてインストールしました。

参考にしたのは、Installing PHP5 - DreamHost

基本は上のページのスクリプトでインストールできるのですが、インストール場所を変えるためと依存パッケージを新しくするために書き直しました。
変更点は以下の通りで、

  • PHP 5.2.6
  • インストール先を $HOME/local に変更
  • php.iniの場所を ${HOME}/etc/php5 に変更
  • パッケージを最新のものに変更
  • パッケージのURLを修正

などです。

まず PHP5インストールスクリプト をダウンロードして中身を解凍し、php5-install.sh の中の INSTALLDIR などを好きなように設定します。
初期状態でインストールした場合は /home/*****/local/bin/php がPHPバイナリとなります。
php5-install.sh を実行し、問題が無ければPHPが指定した場所へインストールされます。
後はサイト毎のfcgiファイルでexecの部分を「exec /home/*****/local/bin/php-cgi」と指定すればFastCGIでカスタムPHPが動きます。
「php-cgi」が要で、CLI版を指定してしまうとFastCGIが動きません。

このあとPECLなどを使う場合はパスが通っている必要があるので .bash_profile などに「export PATH=$HOME/local/bin:$PATH」などと指定しておきます。

スクリプトが途中で止まる・・・などあったらコメント下さい。

DreamHostにTracをインストール

11 May 2008 In: 一般

大体は以下のサイトを参考にしてインストールしました。

インストール中に気づいたことは、自分で入れた Python と DreamHost に入っている Python を区別しなければいけないということ。

普通に python とタイプすると、DreamHost の Python が起動するので、意図したディレクトリに格納されない場合がありました。Python のインストールが終わった時点で自分の Python をエイリアスしておくといいと思います。「alias python="/home/*****/local/bin/python"」などです。

あと、上記サイトにあるように、Subversion のインストール時に APR と APR-Util をインストールしておかないと止まります。

trac をサブディレクトリに配置して運用する場合は、.htaccess の「RewriteEngine On」の後に「RewriteBase /projectid/」などを指定しておく必要があります。

trac入れるのって面倒くさいですね・・・

最近Dreamhostが重い・・・

4 Apr 2008 In: 一般

最近どうにもDreamhostが重いです。SSHのパス補完も重いです。初期の頃は調子良かったのですが。

ロードアベレージを見ると143.13とかいってます。

サポートに何か言うべきですかね・・・

DreamHost移行メモ part4(WordPress)

3 Mar 2008 In: メモ

さて、4ポスト目でやっとWordPressの引越しです(WordPressのエンコードはUTF-8を想定しています)。

まずはWordPressの本体ファイルの移動です。これは元ディレクトリを圧縮してDreamHost側で展開しました。新しくDreamHostの方でインストールしたものに上書きしてもよかったのですが、コアファイルに色々と手を加えていて面倒くさいので元のデータをそのまま送っちゃいました。

次は、データベース。これが厄介で苦労しました。まず、コントロールパネルでデータベースを作成します。そうしたら、phpMyAdminかMySQLクライアントを使い、作成したデータベースに以下のSQLを発行します。

ALTER DATABASE database_name CHARACTER SET utf8;

database_nameは置き換えてください。そして、元のWordPressのデータベースをダンプします。その後、ダンプしたSQLファイルの先頭に次の分を追加します。コレ重要。

set names utf8;

この文を入れないと復元した時に文字化けを起こします。修正したSQLを新しいデータベースに適応します。

次にphpMyAdminを使って復元したデータベースのwp_optionsテーブルのoption_nameカラムのsiteurlとhome(option_idは1と40)のoption_valueを新しいURLにセットします。

最後にwp-config.phpのデータベースの設定を新しいものに書き換えれば終了です。これでWordPressの管理画面にアクセスできます。

私の場合はこの作業だけで正常に動いたため、問題ありませんでしたが、プラグインが問題を起こす場合もあるので、そのときはプラグインをはずして1つずつ調べていく必要があるかもしれません。

また、プラグインや外部サービスの設定で前のURLを引きずっているものがある場合は新しいURLにセットしなおす必要があります。私が修正したものを挙げておきます。

  • XML Sitemap Generatorの設定変更
  • WP-SlimStat-ExのGeo SlimStat(APIキー変更)
  • FeedBurnerのURL変更
  • ImageManagerのパス変更
  • ダウンロード系プラグイン
  • QRコード

その他、前の環境の設定のままのものは変更しておきます。これでWordPressの引越しは完了です。

DreamHost移行メモ part3

1 Mar 2008 In: メモ

今回はPHP5 FastCGI & PHP.ini のための設定です。WikiではCustom PHP.iniPHP FastCGIに分かれていますが一緒にやっちゃいます。もちろん、パネルでFastCGIをオンにしておきます。

最初にPHPのコピーを置くフォルダを作ります。WikiのCustom PHP.ini ではドメインのディレクトリの下に置いてますが、複数サイトで共有しようとおもうのでホームに作ります。

mkdir $HOME/cgi-bin

そして関連ファイルをコピーします。

cp /dh/cgi-system/php5.cgi $HOME/cgi-bin/php5.cgi
cp /etc/php5/cgi/php.ini $HOME/cgi-bin/php.ini

コピーした先のphp.iniを編集します。編集内容はお好みで。そして、ファイルの最後の方にでも「date.timezone="Asia/Tokyo"」の記述を入れます。これでPHPがタイムゾーンを日本と認識してくれます。

ここからFastCGIの設定です。まずはFastCGIのラッパーを作ります。php5-wrapper.fcgiという名前でドメインのディレクトリごとに配置します。Wikiではdispatch.fcgiにするとメモリーを多く使ってもkillされなくなると書いてあります(このWordPessはphp5-wrapper.fcgiでもkillされません。よほどのことがないとkillされない模様。)。中身は以下のようにします。

#!/bin/sh
export PHP_FCGI_CHILDREN=2
exec /home/username/cgi-bin/php5.cgi

usernameは置き換えてください。作成したら実行権を与えます。

chmod u+x php5-wrapper.fcgi

そしてドメインのディレクトリのルートに以下の.htaccessを用意します。

AddHandler fastcgi-script fcg fcgi fpl
AddHandler php5-fastcgi .php
Action php5-fastcgi /php5-wrapper.fcgi

これでPHP5&FastCGIで動くようになります。

最後にPHPのバイナリをアップデートするcronを回します。適当な場所にphp-copy.shとでもして以下のファイルを作成します。

#!/bin/sh
CGIFILE="$HOME/cgi-bin/php5.cgi"
rsync -a /dh/cgi-system/php5.cgi "$CGIFILE"

あとは crontab -e で「@weekly /home/username/php-copy.sh」などとしておきます。

これでPHPに関する設定は完了です。次はWordPressの引越しをメモします。

DreamHost移行メモ part2

25 Feb 2008 In: メモ

さてpart1に続いてサイトの設定を行っていきます。

まず私がやったのは、管理パネルで Domains -> Manage Domains -> Add New Domain / Sub-Domain からサブドメインを追加しました。最初は申し込み時に指定したドメインがリストに入っていると思います。初期設定はPHPのバーションが4になっているので注意してください。

次にSSHアカウントを設定します。Users -> Manage Users でユーザーを選択または作成して設定画面に入り、User Account Type:の項目をShell accountに変えます。
Change user setting
シェルはお好みで。

これで、SSHでアクセスできるようになるのでSSHでの設定を行います。管理パネルにはメールやMySQLなど他の設定もありますので、一通り見ておくといいでしょう。

私はbashを使っていますのでbash固有の設定になるところもあるかと思いますが、SSHで行ったことをメモしておきます。

まずは.bash_profileを書き換え。.bashrc、.aliasは使えないみたい?です。

export TZ='Asia/Tokyo'
export LANG='ja_JP'
export EDITOR='/usr/bin/vim'

こんな感じにしました。LANGは効果があるのか不明ですが、TZはタイムゾーンをあわせるのに重要です(php.iniのところでも設定します)。WordPress移行のところで後述しますが、サーバーがアメリカにあるため、タイムゾーンを日本に正しく設定しておかなければなりません。EDITORは crontab -e でvimを起動するためのものです。

次はDreamHost Wikiに書いてあることを行っていきますが、記事が長くなるのでポストを分けます。

Page 1 of 212 »

About this blog

Regenが更新するブログです。

WordPressやPHPが主な内容です。

毎日更新はできませんが、できるだけポストしていきます。


8 月 2008
« 7 月 «-»

12
3456789
10111213141516
17181920212223
24252627282930
31

携帯サイト

QR code

WordPress Powered

PHP Powered

MySQL powered

website stats

フィードメーター - Regen Press

Creative Commons License

あわせて読みたいブログパーツ