昨夜の20時から23時頃まで、当サイトへのアクセスができなかったのは、WebサーバーをDMZへ設置するトライをしていたからでした。
WebサーバーをDMZに置くこと自体はできたのですが、LAN側からもWAN側からもそのWebサーバーにアクセスすることができません。
PE-200NEの設定は本当に難解です。 製造元のNECの方も見てみましたが、サッパリ分かりません。 結局は挫折して元に戻しました。
WebサーバーをDMZに置いた時の、静的IPマスカレードやパケットフィルタの設定例を、マニュアルに載せておいてほしいと思います。
次に今度はApacheのバーチャルホストの設定をやってみました。
まず、/usr/local/etc/apache22/httpd.conf 内の記述を
# Virtual hosts
Include etc/apache22/extra/httpd-vhosts.conf
というように有効にします。
それでは「black-pepper.giorcub.com」からやってみます。 /blackpepper というディレクトリに置いてありますので、httpd-vhosts.conf を以下のように設定しました。
<VirtualHost *:80>
ServerAdmin (管理者のメールアドレス)
DocumentRoot "/usr/local/www/apache22/data"
ServerName www.still-laughin.com
# ServerAlias www.dummy-host.example.com
ErrorLog "/var/log/www-error.log"
CustomLog "/var/log/www-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin (管理者のメールアドレス)
DocumentRoot "/usr/local/www/apache22/data/blackpepper"
ServerName black-pepper.giorcub.com
ErrorLog "/var/log/blackpepper-error.log"
CustomLog "/var/log/blackpepper-access.log" common
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/blackpepper/(.*)$ /$1 [R=301,L]
</IfModule>
</VirtualHost>
Apacheに設定を反映させてアクセスしてみると、ちゃんと「http://black-pepper.giorcub.com/blackpepper」が、「http://black-pepper.giorcub.com/」にリダイレクトされました。
これに気を良くして、今度は「shiba-log.com」にチャレンジしてみます。 「black-pepper.giorcub.com」は静的なWebページでしたが、こちらはMT5.01によるblogですのでちょっと厄介です。
まず、サブドメイン(ホスト名)が「www」から「kichiro」に変わりますので、レジストラのDNSに「kichiro」を追加します(宛先はwwwと同じ)。
それから httpd-vhosts.conf を、
<VirtualHost *:80>
ServerAdmin (管理者のメールアドレス)
DocumentRoot "/usr/local/www/apache22/data"
ServerName www.still-laughin.com
# ServerAlias www.dummy-host.example.com
ErrorLog "/var/log/www-error.log"
CustomLog "/var/log/www-access.log" common
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/mt/shiba-log/(.*)$ http://kichiro.shiba-log.com/$1
RewriteRule ^/mt/monolog/(.*)$ http://blog.still-laughin.com/$1
RewriteCond %{HTTP_HOST} ^www.shiba-log.com$
RewriteRule ^/(.*) http://www.still-laughin.com/$1
</IfModule>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin (管理者のメールアドレス)
DocumentRoot "/usr/local/www/apache22/data/mt/shiba-log"
ServerName kichiro.shiba-log.com
ErrorLog "/var/log/kichiro-error.log"
CustomLog "/var/log/kichiro-access.log" common
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/mt/shiba-log/(.*)$ /$1 [R=301,L]
</IfModule>
</VirtualHost>
と設定しました。
最初に「http://www.shiba-log.com/mt/shiba-log/」にアクセスしてきたところで、「http://kichiro.shiba-log.com/」に飛ばします。
それから「http://kichiro.shiba-log.com/」の中でも、「/mt/shiba-log/」を「/」に置換しています。
ところがここで、<$mt:Include> をSSIで挿入している部分が読み込まれないという問題が起こりました。 SSIで読み込まれるファイルパスは、mod_rewriteによる置換の対象外のようです。
これはMT5の「全般設定」の公開パスを、下記のように設定することで解決しました。 念の為、再構築しました。
これでSSIで挿入したファイルも読み込まれるようになりましたが、今度はスタイルシートが適用されません。 スタイルシート(styles.css)の中身は、
/* This is the StyleCatcher theme addition. Do not remove this block. */
@import url(/mt/mt-static/themes-base/blog.css);
@import url(/mt/mt-static/support/themes/hills-green/hills-green.css);
/* end StyleCatcher imports */
となっています。 ここで「/mt/mt-static/」は、絶対パスでは「/usr/local/www/apache22/data/mt/mt-static/」になります。
しかし、「kichiro.shiba-log.com」のドキュメントルートは「/usr/local/www/apache22/data/mt/shiba-log」ですから、「/mt/mt-static/」にアクセスすると「/usr/local/www/apache22/data/mt/shiba-log/mt/mt-static」にアクセスすることになる訳です。
解決策ですが、シンボリックリンクを張ることにしました。
www# cd /usr/local/www/apache22/data/mt/shiba-log
www# mkdir mt
www# ln -s /usr/local/www/apache22/data/mt/mt-static mt/mt-static
これでどうにか問題なさそうです。
<追記>
シンボリックリンクなんか張るよりも、せっかくmod_rewriteが動いているんだから、httpd-vhost.confのそれぞれのドメインに
RewriteRule ^/mt/mt-static/(.*)$ http://www.still-laughin.com/mt/mt-static/$1
と書いてやるのが良いようです。
あとは favicon.ico のパスが「/favicon.ico」でいいかと思ったらダメで、「/mt/shiba-log/favicon.ico」にしたらOKだったりとか、ドキュメントルートが変わるので Robot.txt は仮想サーバーごとに置かなければならなかったりとか。
これで当blogもサブドメインに移行できそうです。