Archive from 3月, 2015
3月 17, 2015 - コンピューター    plone4とapache2の連携でいろいろはまった はコメントを受け付けていません

plone4とapache2の連携でいろいろはまった

ploneとapacheの連携見直しをしていたらまともに動かなくて丸一日はまった。1つのサーバに2つのドメインを割り当てて、そえぞれVIrtualHostでアクセスされたURLごとに振り分けて別々のDocumentRootを見に行くようにしている。既に動いているWordPressなどへのアクセスはそのまま通し、それ以外についてはPloneで作ったサイトが見えるようにしようとしたのだが、連携させるとエラーになる。

httpd-vhost.confでは、

<VirtualHost *:80>

ServerAdmin apj@cm.kj.yamagata-u.ac.jp

ServerName cml-office.org

ServerAlias www.cml-office.org

DocumentRoot “/home/WWW/cml-office”

ErrorLog “logs/cml-office-error_log”

CustomLog “logs/cml-office-access_log” common

<Directory “/home/WWW/cml-office”>

Options FollowSymLinks MultiViews ExecCGI

AllowOverride All

</Directory>

RewriteEngine On

 

RewriteRule ^/archive – [L]

RewriteRule ^/v2log – [L]

RewriteRule ^/memolog – [L]

RewriteRule ^/action – [L]

……のように、そのままアクセスさせたいディレクトリをまず全部書いてから、

RewriteRule ^/(.*) http://localhost:8080/VirtualHostBase/http/www.cml-office.org:80/official/VirtualHostRoot/$1 [L,P]

で、トップページへのアクセスをPloneで作ったofficialというインスタンスを表示させるように設定したのだけど、これがinternal server errorで落ちる。rewriteの失敗かと思って、ログをとってみることにした。

ログの取り方は、 apache2.4以降は、config中に

LogLevel alert rewrite:trace3

と書く。

tail -f error_log|fgrep ‘[rewrite:’

で、関連部分のみ抜き出す、という方法でできる。で、やってみたのだけど目立ったエラーが出ていない。きちんと動いている別サーバのログと比べても問題があるように見えない。

結局、apache側で、

LoadModule alias_module modules/mod_alias.so

LoadModule rewrite_module modules/mod_rewrite.so

LoadModule proxy_module modules/mod_proxy.so

あたりを入れただけでは足りなくて、

LoadModule proxy_html_module modules/mod_proxy_html.so

LoadModule proxy_http_module modules/mod_proxy_http.so

も有効にしておかないとダメらしい。この2つが有効であるようにしてからは意図通りに動くようになった。

なお、Plone側は、ZMIで、/に行って、右上のプルダウンからVirtual Host Monsterを選んでAddしておく必要がある(が、普通にインストールすると入ってるような……)。