日記+コメント付きブックマーク+他人にも役に立つかもしれない情報など。
(更新情報: RSS(ツッコミ付き) / RSS(ツッコミ抜き) / LIRS)
- p (01/03)
- Thiramil (10/26)
- 久々にいまむらを食べたい通りすがり (09/28)
- Fluxadir (05/16)
- Antiprestin (11/08)
2004/03/21
_ [日記/blog][Perl] Vine Linux + mod_perl で Movable Type (2)
「Vine Linux + mod_perl + Movable Type (1)」の続き。
DB_File を試しに最新版にバージョンアップしてみたがやはりダメなので、結局 DB_File を使うことを諦めて MySQL 化する方向でなんとか解決。(後日追記: DB_File が使えない問題を解決された方がいたので参考リンク→mod_perl で DB_File が動かない@nlog(n))
以下手順覚え書き。
前提環境: Vine Linux 2.6r4 (Apache 1.3.27)、DocumentRoot は /home/httpd/html/、MT は /home/httpd/html/mt/ 下にインストールする。
■ apxs インストール
mod_perl の make に先だって、apxs が必要なので追加。
$ apt-get install apache-devel
■ mod_perl インストール
mod_perl は Vine 用のパッケージは存在しないようなのでソースをダウソ、
$ perl Makefile.PL USE_APXS=1 WITH_APXS=/usr/sbin/apxs EVERYTHING=1
$ make
$ make install
■ libapreq インストール
libapreq-1.3.tar.gz をダウソ、
$ perl Makefile.PL
$ make
$ make install
■ MySQL インストール
VinePlus からのインストールになるので、/etc/apt/sources.list の
rpm http://updates.vinelinux.org/apt 2.6/$(ARCH) updates
の行のお尻に plus を追加し、
$ apt-get install MySQL
$ apt-get install MySQL-client
データベース初期化
$ mysql_install_db
root パスワード設定
$ mysqladmin -uroot password rootpass
■ MySQL に MT 用 DB の作成
MT 用 DB 作成
$ mysqladmin -uroot -prootpass create mtdb
MT 用 DB ユーザ作成
$ mysql -uroot -prootpass mysql
mysql> GRANT ALL ON mtdb.* TO mt@localhost IDENTIFIED BY 'mtpass';
mysql> FLUSH PRIVILEGES;
■ MySQL 関連 Perl モジュールインストール
$ apt-get install perl-DBI
$ apt-get install perl-DBD-MySQL
せっかくだから Apache::DBI も使いたいところだが、Vine 向けパッケージは存在しないようなので、CPAN: Apache-DBI-0.94 から Apache-DBI-0.94.tar.gz をダウソ、
$ perl Makefile.PL
$ make
$ make install
■ Movable Type のインストールと日本語化
Movable Type 2.661 をダウソ、/home/httpd/html/mt/ に展開。
Milano::Monolog: 引き続き、MT2.661用の日本語化パッチをリリースしましたから、MovableType2.661日本語化パッチ(OS X/Unix版)をダウソ、Movable Type 日本語化手順の手順に従い日本語化。
Jcode.pm インストール。
$ apt-get install perl-Jcode
■ Movable Type で MySQL を利用する設定
mt.cfg を開き、
DataSource ./db
をコメントアウト、
ObjectDriver DBI::mysql
Database mtdb
DBUser mt
を追加。
mt-db-pass.cgi を開き、中身を mtpass に変更。
■ Apache の設定
/etc/httpd/conf/httpd.conf を開き、お尻に
PerlRequire /home/httpd/html/mt/startup.pl
<Directory /home/httpd/html/mt>
<Files *.cgi>
SetHandler perl-script
PerlSendHeader On
PerlHandler Apache::Registry
PerlModule Apache::DBI
Options +ExecCGI
</Files>
</Directory>
を追加。
/home/httpd/html/mt/startup.pl を作成し、
push @INC, qw(/home/httpd/html/mt/lib /home/httpd/html/mt/extlib);
と記述。(ここは httpd.conf 内で直接 PerlSetEnv PERL5LIB /home/httpd/html/mt/lib:/home/httpd/html/mt/extlib などと書きたかったのだが、なぜか効かなかった)
mod_perl 化によって httpd が激太り (1個約10M) するので、しょぼいマシンでいくつもプロセスが上がるとマズー。ということで、KeepAlive を On から Off に変更、StartServers を 8 から 0 に変更、MinSpareServers を 5 から 0 に変更、MaxSpareServers を 20 から 1 に変更。
以上の設定変更を行い、httpd 再起動。
■ これまで Berkeley DB で稼働してきたデータの MySQL への移行
Movable Type 2.661 Upgrade Version をダウソ、収録されている mt-db2sql.cgi を MT をインストールしたディレクトリに設置し、実行。
無事データ移行が済んだら、db ディレクトリ、mt-db2sql.cgi、mt-load.cgi は削除。
■ カレントディレクトリの初期化記述追加
ここまでで、なんとか MT が使えるようになったと思いきや、新しいブログの作成を行おうとすると、default-templates.pl が見つからないとかほざいてくるので、mt.cgi の use strict; の直後あたりに
chdir('/home/httpd/html/mt');
を追加。
■ まとめ
以上、なんとか mod_perl 化に成功した。試験環境ではレスポンスが0.5秒程度だったのが0.1秒以下に短縮され、だいぶ快適になったのを体感。本番マシンは試験環境よりさらに遅いので、より大きな効果を感じられることを期待したい。
こう、順を追ってまとめてみると大したことがないように思えるのだが、ここに至るまではかなりの試行錯誤と苦労を要した。不可解なトラブル大杉。mod_perl が流行らないのもわかるぽ。
mod_perl の最も厄介な点は、一般的によく言われる、変数の内容が初期化されないとかそういうことよりも、「カレントディレクトリがスクリプトのあるディレクトリじゃない状態で実行される」ことにある思う。
DB_File でつっかかったり、PerlSetEnv でつっかかったり、カレントディレクトリ問題でつっかったりした事例が Web 上で全く見つからないのはなぜなんですかね…。
「Vine Linux + mod_perl + Movable Type (3)」に続く。
■ 参考
にしても一体>>1はそうまでして何をしたいp
だから Pentium 133MHz のマシンで運用してる MT が糞重くて耐えられないんだYO
で、何でMTなんだ?他のツールは?
…それを言うと、今の用途ははっきりいってちゃんねる5スクリプトでも KENT のテキトーな掲示板スクリプトでも十分なんですけどネ!
さては、将来皆にMTを使わせるための布石ですね!?
そこまでは考えてなかったが、とりあえず自分はそのうち移行したいなーと思ったり思わなかったり