Webサーバー構築メモ — Cent OS 5.7

サーバー構築を構築しています。経験があまりないので、メモとして今回の問題点と解決策をまとめます。

【環境】
Cent OS 5.7
Apache 2.2.3
PHP 5.2.10

【問題1】
.htaccessでmod_rewriteを使ってリダイレクトをしようとしても動きませんでした。
エラーログ(/var/log/httpd/error_log)を確認すると、下記のエラーがありました:

Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /XXX/XXX/XXX

→ 解決策: /etc/httpd/conf/httpd.confの<Directory>セクションの設定をします。
(1)<Directory>セクションのOptionにFollowSymLinksをつけなければなりません。
そうしないと、上記のエラーが出てきます。
(2)<Directory>セクションのAllowOverrideをNoneに設定してはいけません。
Noneに設定してしまうと、.htaccessでの上書きが出来なくなります。AllかFileInfoに設定します。
↓↓大体は下記の感じです↓↓

<Directory "/XXX/XXX/XXX/">
  Options FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>

詳細は下記サイトを参照してください。
Apache HTTP サーバ

【問題2】
複数ドメインのDocumentRootの設定
例えば、httpd.confのDocumentRootは”/var/www/html”だとします。
そうすると、直接ipアドレスでアクセスしてくると、/var/www/htmlがルートになります。
→ ただ、事前に取得しておいたドメインexample.comでアクセスすると、/var/www/htmlではなく、/var/www/htmlの下の「aaa」というディレクトリーを見るように設定したいです。
つまり、「http://www.example.com」 ⇒ 「/var/www/html/aaa」にしたいです。
→ 解決策: /etc/httpd/conf/httpd.confの<VirtualName>セクションの設定をします。
例えば、一番簡単な設定は下記のようです↓↓

NameVirtualHost *:80
<VirtualHost *:80>
  DocumentRoot /var/www/html/aaa
  ServerName www.example.com
</VirtualHost>

もしhttps(SSL)にも対応したい場合には、443番ポートなので、下記のも必要です↓↓

NameVirtualHost *:443
<VirtualHost *:443>
  DocumentRoot /var/www/html/aaa
  ServerName www.example.com:443
</VirtualHost>

他にもいろいろ設定できますので(CustomLogやErrorLogやServerAdminなど)、下記サイトを参照してください。
Apache バーチャルホスト説明書 – Apache HTTP サーバ
※注1:CustomLogを設定する時、ログのフォーマット「LogFormat」の設定も必要です。
例えば:

LogFormat "%h %v %l %u %t \"%r\" %>s %b" commonvhost
NameVirtualHost *:80
<VirtualHost *:80>
  DocumentRoot /var/www/html/aaa
  ServerName www.example.com
  CustomLog /etc/httpd/logs/example.com-access_log commonvhost
</VirtualHost>

LogFormatの詳細は、下記サイトを参照して下さい。
ログファイル – Apache HTTP サーバ

【問題3】
PHPのDOMのインストール
今回の件はDOMが必要ですが、インストールされていません。
↓↓下記のようにyumで簡単にインストールできました↓↓

yum install php-xml