2004/05/04
文書操作
ZopeとXoopsの共存
Zopeは8080番ポートを使うため、アドレスが「http://hoge.com:8080/fuga」のようになるが、ポート指定するのが気持ち悪いというか見栄えが悪いように思えるので、Apacheのバーチャルホストを設定してやってこれを回避したい。
・Zopeの設定
Zopeの Root Folder にVirtual Host Monsterを追加する(IDは vhm とした)。
・Apacheの設定
mod_rewrite と mod_proxy が有効になっていることを確認し、バーチャルホストのディレクティブを設定する。
・Gentoo Linux & Apache 2.x の設定例
/etc/apache2/conf/apache2.conf
/etc/apache2/conf/vhosts/vhosts.conf
これでめでたく http://hoge.com でZopeにアクセスできる。Root Folder 以外のフォルダに誘導したい場合は、RewriteRule の後尾の部分を「(略)/VirtualHostRoot/FolderName/$1 [P,L]」のようにすればよい。
しかし一方でウチのPCではXoops(日本公式)も動いているので、リクエストすべてをZopeに持っていくわけにもいかない。
方針としては「Xoopsサイトに来るリクエスト以外のリクエストはすべてZopeに渡す」という風にする。ということで mod_rewrite の RewriteCond を設定し、リクエストされたアドレスをチェックしたときに、Xoopsサイトの名前があった場合は Zope に渡さないという風にする。
Xoopsサイトのアドレスを http://hoge.com/xoops1 および http://hoge.com/xoops2 とすると次のようになる。
・%{REQUEST_URI}
→リクエストされたアドレスをチェック
・!^/(xoops1|xoops2).*
→正規表現。「!」は否定。「^/(xoops1|xoops2).*」は xoops1 または xoops2 という言葉を含むことを表す。すなわち全体としては、xoops1 または xoops2 という言葉を含まない、ということを示す。この条件に当てはまったリクエストを RewriteRule に基づいて書き換える。
これで http://hoge.com/xoops1/ などXoopsに関係したアドレスはそのままに、それ以外のリクエストをZopeに渡すようになった。めでたしめでたし。
Zopeの Root Folder にVirtual Host Monsterを追加する(IDは vhm とした)。
・Apacheの設定
mod_rewrite と mod_proxy が有効になっていることを確認し、バーチャルホストのディレクティブを設定する。
・Gentoo Linux & Apache 2.x の設定例
/etc/apache2/conf/apache2.conf
...
LoadModule proxy_module modules/mod_proxy.so
...
LoadModule rewrite_module modules/mod_rewrite.so
...
Include conf/vhosts/vhosts.conf
...
/etc/apache2/conf/vhosts/vhosts.conf
<VirtualHost hoge.com>
ServerAdmin webmaster@hoge.com
ServerName hoge.com
RewriteEngine on
RewriteRule ^/(.*) http://localhost:8080/VirtualHostBase/http/hoge.com/VirtualHostRoot/$1 [P,L]
</VirtualHost>
これでめでたく http://hoge.com でZopeにアクセスできる。Root Folder 以外のフォルダに誘導したい場合は、RewriteRule の後尾の部分を「(略)/VirtualHostRoot/FolderName/$1 [P,L]」のようにすればよい。
しかし一方でウチのPCではXoops(日本公式)も動いているので、リクエストすべてをZopeに持っていくわけにもいかない。
方針としては「Xoopsサイトに来るリクエスト以外のリクエストはすべてZopeに渡す」という風にする。ということで mod_rewrite の RewriteCond を設定し、リクエストされたアドレスをチェックしたときに、Xoopsサイトの名前があった場合は Zope に渡さないという風にする。
Xoopsサイトのアドレスを http://hoge.com/xoops1 および http://hoge.com/xoops2 とすると次のようになる。
<VirtualHost hoge.com>
ServerAdmin webmaster@hoge.com
ServerName hoge.com
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/(xoops1|xoops2).* # この行を追加 #
RewriteRule ^/(.*) http://localhost:8080/VirtualHostBase/http/hoge.com/VirtualHostRoot/$1 [P,L]
</VirtualHost>
・%{REQUEST_URI}
→リクエストされたアドレスをチェック
・!^/(xoops1|xoops2).*
→正規表現。「!」は否定。「^/(xoops1|xoops2).*」は xoops1 または xoops2 という言葉を含むことを表す。すなわち全体としては、xoops1 または xoops2 という言葉を含まない、ということを示す。この条件に当てはまったリクエストを RewriteRule に基づいて書き換える。
これで http://hoge.com/xoops1/ などXoopsに関係したアドレスはそのままに、それ以外のリクエストをZopeに渡すようになった。めでたしめでたし。
- 固定リンク
- ¦
- コメント (0)
- ¦
- トラックバック (0)
- トラックバック用URL:
- http://nagosui.org/Nagosui/COREBlog2/1/tbping

