pepponの日記 このページをアンテナに追加 RSSフィード

2007-01-16

Proxy + バックエンド(Catalyst + mod_perl)で

今までフロントエンドでApache2.2でバックエンドでApache2.0(Catalyst+mod_perl)で動かしていましたが。 なんか微妙に動作がおかしいので、いろいろとサイトとか見てまわった。

うちの場合のHttpd.confは以下のようになる。

フロントエンド(Apache2.2)のhttpd.conf

#### mysite ####
<VirtualHost X.X.X.X>
    ServerName www.example.com
    DocumentRoot /home/mysite/public_html
    ErrorLog /home/mysite/error.log
    CustomLog /home/mysite/access.log combined env=!no_log
    AddDefaultCharset off
     RewriteEngine     On
     RewriteLog        /home/mysite/rewrite_log
     RewriteLogLevel   0
     RewriteRule ^(.*)\.css - [L]
     RewriteRule ^(.*)\.gif - [L]
     RewriteRule ^(.*)\.png - [L]
     RewriteRule ^/(.*)$ http://127.0.0.1:8888/$1 [P]
     ProxyPassReverse / http://127.0.0.1:8888/
     RewriteRule ^proxy:.* - [F]
</VirtualHost>

バックエンド(Apache2.0+mod_perl)のhttpd.conf

### mysite
略
PerlSwitches -I/home/mysite/mysite/lib -I/home/その他たくさん

LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1

<VirtualHost 127.0.0.1:8888>
  PerlModule mysite
  PerlSwitches -I/home/mysite/mysite/lib
  ServerName   www.example.com
  DocumentRoot  "/home/mysite/mysite/root"
  <Location />
    SetHandler          modperl
    PerlResponseHandler mysite
  </Location>
  ErrorLog /home/mysite/mod_error.log
  CustomLog /home/mysite/mod_access.log combined
</VirtualHost>

こんな感じにしてて複数のVirtualHostで複数のCatalystあぷ動かしていたんだけど、たくさんのmod_perlおなじApacheで動かすのはやばいんでしょうか。

あとこちらのサイトをみまして。

http://d.hatena.ne.jp/webdoraku/20061117/p2

PerlOptions +Parentってのをみたんでやろうとしたら、

Syntax error on line 90 of /usr/local/httpd_mp2/conf/httpd.conf:
PerlOption `Parent' requires an ithreads enabled Perl

とエラー

ithreadsが有効になってないから? うちのperlは5.8.0だけど 有効になってないのか?

うーん ようわからん。 つづく・・

その後なんかえらい苦労してLighttpdを入れて試してみた。

(Catalyst::Plugin::Charsets::Japaneseがまともにうごいてるっぽい! 注:普通はまともに動きます。 http://d.hatena.ne.jp/peppon/20061221/1166687273 )

でも、その他いろいろな問題は解決せずつーか、プログラム側の問題だって事で。

それがわかっただけでも嬉しい。 が、lightyいろいろと苦労したー。。

server.usernameではまった。

lighttpdrootで起動しちゃうので、server.usernameを指定したけど、今度は立ち上がらない罠。 でsu してユーザーに変えてmyapp_fastcgi.plを動かしたらcatalystセッション書き込み属性が無かったためでした。 orz

追記:それでもだめした。

で、パーミッションとかいろいろ変えてみたり、さんざんはまったあげく、公式サイトのusernameを見てみた。

http://trac.lighttpd.net/trac/wiki/server.usernameDetails

NOTE: requires root-permissions

root権限ないとだめなの? なんかいろんなサイトでusernameがroot以外っぽくかいてあったりするんだけど・・・ 起動ユーザーがrootの必要があるだけなのか?