ziguzagu.org

mod_perl&リバースプロキシ

Apacheのmod_perl化とリバースプロキシの設定がすんだので作業ログをメモ。

まずは、Apache1.3.33+mod_perlのインストーる、の前にApache2+mod_perl2をインストールしてみて大失敗したメモ。やってみたのはApache2.0.54+mod_perl2.0RC5。インスコ自体は滞りなくいけたけれど、MovableTypeが自分の力ではどうやっても動作しなかったのであきらめた。

ちなみに、インストーるされていたperl(5.8.5)がithreadが有効になっていなかったので再インストーるした(mod_perl2は要ithreadらしい mpm_wokerでmod_perlな場合は要ithread)。

> make distclean
> sh Configure -Dusethreads -Dprefix=/usr
> make >& make.log &
> make test >& test.log &
### make install

まあ、結局意味はなかったんだけど…。

続いて、Apache1.3.33。

> OPTIM=-O2 ./configure --enable-shared=max --disable-rule=EXPAT
> make >& make.log &
### make install

SOAP::Liteを使うのでexpatを無効にしてインストーる。

で、これにmod_perl-1.29を入れる。

> perl Makefile.PL USE_APXS=1\
  WITH_APXS=/usr/local/apache/bin/apxs\
  EVERYTHING=1
> make >& make.log &
### make install

EVERYTHINGでいろんなものをインストールするらしい。 そしてmod_perlの設定。このApacheはプロキシの受け側になるのでその設定も。

Listen 127.0.0.1:8080
Port 8080
KeepAlive Off
<Location /perl-status.cgi>
    SetHandler    perl-script
    PerlHandler   Apache::Status
</Location>
PerlSetEnv PERL5LIB  /home/www/htdocs/mt/lib:/home/www/htdocs/mt/extlib
PerlModule Apache::Registry
<Directory /home/www/htdocs>
    SetHandler      perl-script
    PerlHandler     Apache::Registry
    Options         +ExecCGI
    PerlSendHeader  Off
</Directory>

拡張子cgiなやつらをプロキシで転送するので、perl-statusも.cgiをつける。あと、KeepAliveはいらないので切っておく。ちなみにMaxClientsは2(すくなっ!)。

これで、アプリケーションサーバーは完成。

続きまして、フロントエンドサーバーとなるApache2.0の設定。mod_proxyを有効にして、mpm_workerでインストール(64MBなメモリだけにpreforkはきつい…)。

> ./configure --with-mpm=worker\
 --enable-mods-shared=all\
 --enable-proxy\
 --enable-ssl\
 --datadir=/home/www
> make >& make.log &
### make install

そしたらば、proxyの設定。

<VirtualHost norainu.net>
    DocumentRoot  /home/www/htdocs
    ServerName    norainu.net
    ErrorLog      logs/error_log
    CustomLog     logs/access_log combined
    RewriteEngine on
    RewriteCond   %{REQUEST_FILENAME}  \.(cgi|pl)$
    RewriteRule   ^/(.*)  http://localhost:8080/$1  [P,L]
</VirtualHost>

cgiと、せっかくなので.plもプロキシに転送(ほぼAwstats専用、でもあんましはやくならない)。

ハイ、お疲れ~。あとは、ブログをNucleusからMovableTypeに移行するべし。