VirtualHost を使用すると apache のサービスと、IP が一つで複数のドメインを管理することができます。
VirtualHost を使用しないでapache を運用すると DocumentRoot は1つ(htdocs) でディレクトリごとにサービスを
使用することになります。
たとえば、
デフォルトの設定の場合、apache をインストールしたディレクトリの htdocs 以下がそれになります。
おそらく 初期設定のままapache を立ち上げてアクセスすると
It works!
と表示されると思います。
他のサービスをしようしたい場合、おそらく以下にディレクトリを作成してサービスを分けることになると思います。
また、ドメインを複数使用したい場合でもディレクトリは同じディレクトリでセッティングも同じになってしまいます。
そこで VirtualHost を使用することで複数のドメインとドメインごとのセッティング、ドメインごとのフォルダ分けが可能となります。
今回は、基本的な設定方法をご紹介します。おそらく本格的に複数の媒体を運営されている方はメンテナンス等も考慮して
直接 httpd.conf には記述せず Include を使用すると思います。
また、今回は /usr/local/apache2 にインストールされているとします。
設定方法
まず、httpd.conf を編集します。
# sudo su
# cd /usr/local/apache2/conf/
# vi httpd.conf
#下記を httpd.conf の最終行に追加する。
NameVirtualHost * #IP、ポートを指定、今回は全てのIPポートが対象の設定
<VirtualHost *:80> #80番ポートを指定
ServerName example.net #サービス対象のドメインを指定します。FQDN(完全修飾)で記述します。ドメインがマッチした場合のみ設定が有効です。
DocumentRoot /home/www/example/htdocs #ドキュメントROOTを指定します。/usr/local/apache2/htdocs/ にexample フォルダを作成してそこを指定しても良いでしょう。 #今回はディレクトリをドメインごとに分けることが目的だと思いますのでぜひ設定しましょう。
ErrorLog /home/www/example/log/error_log #エラーログを個別に指定したい場合は指定します。デフォルトを同じで問題ない場合は設定はいりません。
CustomLog /home/www/example/log/access_log combined #アクセスログを個別に指定したい場合は指定します。デフォルトを同じで問題ない場合は設定はいりません。
</VirtualHost>
<VirtualHost *:443> #2個目のドメインを設定する場合、設定を羅列する。
ServerName test.example.com
DocumentRoot /home/www/exampletest/htdocs
ErrorLog /home/www/exampletest/log/error_log
CustomLog /home/www/exampletest/log/access_log combined
</VirtualHost>
apache を再起動します。
# /usr/local/apache2/bin/apachectl configtest ←httpd.confの設定チェック エラーの場合、設定を見直しましょう。
# /usr/local/apache2/bin/apachectl restart ←設定に問題がない場合再起動を行います。
起動後に、設定したドメインでアクセスできることを確認しましょう。