Apache

Apache 2.2.xでネームベースのVirtual Hostの設定

More than 1 year has passed since last update.

ここのところDocumentRootじゃないと動かない環境をテストすることが多いのでVirtual Hostの設定メモ。


前提


  • CentOS 6.x。別に他の環境でも同じ。

  • Apacheはもう入ってるということで。


やること

大きくは2つ。


  • /etc/httpd/conf/httpd.confの編集(1行)

  • /etc/httpd/conf.d/virtual.confの編集(ファイル名は何でも良い)


httpd.confの設定

まず、そもそもVirtualHostを使いますよ!という宣言をApacheの設定ファイルであるhttpd.confにする。

と入っても簡単。ServerName www.example.com:80 (変わってるかも)

ServerName www.example.com:80


#ServerName www.example.com:80

となっているところをコメントアウト。NameVirtualHost *:80

#NameVirtualHost *:80


NameVirtualHost *:80

となっているところをコメントイン。httpd.confの設定は以上。

これで、Apacheは、俺はVirtualHostを運用している!と認識します。


既に運用していたサーバに上記の設定をすると、今までのDocumentRootは原則無効になります。

新しくVirtualHostとして、既存のサイトも設定してあげる必要があります。



virtual.confの設定

ファイルの名前はなんでもいい。

Apacheは起動時に/etc/httpd/conf.d/以下にある*.confファイルを全て読み込む。

なので、ファイル名はhoge.confとしても、foo.confとしてもいい。ここではvirtual.confとする。

なお、バーチャルホストが増えるようなら、www.aaa.com.conf, www.bbb.com.conf という感じで、ドメイン毎にファイルを用意するもの良い。

そこに、こんな感じで書く。

#1つめのサイト

<VirtualHost *:80>
ServerName www.hoge.com
ServerAlias main.com
DirectoryIndex index.html index.php
AddDefaultCharset UTF-8
DocumentRoot /var/www/html/
<Directory "/var/www/html/">
AllowOverride All
Options FollowSymLinks -Indexes
</Directory>
</VirtualHost>

#2つ目のサイト
<VirtualHost *:80>
ServerName test.hoge.com
DirectoryIndex index.html index.php
AddDefaultCharset UTF-8
DocumentRoot /var/www/test/
<Directory "/var/www/test/">
AllowOverride All
Options FollowSymLinks -Indexes
</Directory>
</VirtualHost>

という感じ。後は3つあっても、4つあっても同じ。

必要に応じて、各種Logの位置などもいじります。Override等は<Directory></Directory>で設定します。


コンテンツの準備

DocumentRootに指定したディレクトリが無いと、Apacheが起動時(再起動時)に怒ります。

先に、ディレクトリを作成し、適切なパーミッションを設定の上、index.htmlファイルを用意しておきます。


Apacheの(再)起動

sudo service httpd restart

起動してないならstartで。


テスト

DNSを適切に設定し、しばらく経ってアクセスして、それぞれのコンテンツが見えればOK。

DNSが無い。もしくは持ちきれない人は、ローカル環境の/etc/hostsなどを設定すればいいでしょう。


  • windowsだと、windows¥system32¥drivers¥etc¥hosts(うろ覚え。確かその辺)。

  • Macだと、hosterを使ったほうが早いでしょう。

以上。