Apache HTTP Server(httpd)では、バーチャルホストを使って、複数のURLで、別々のサイトを運営することができます。
やり方を書いていきますね。
また、今回は、
- OS: Linux CentOS7
- Apahche:バージョン2.4
で進めます。
URL毎にドキュメントルートを分けてみる
今回は、以下のように、ポート番号で変わるURLを、ドキュメントルートをURLによって分けてみます。
- http://localhost:80 ⇒ /var/www/html をドキュメントルートに。
- http://localhost:8080 ⇒ /var/www/html2 をドキュメントルートに。
事前に、8080ポートもListenするように設定を書く
事前準備ですが、今回の例では、8080ポートに来たアクセスのドキュメントルートを分けるので、8080ポートをListenする必要があります。
rootユーザーで、httpd.confを開いて
vi /etc/httpd/conf/httpd.conf
以下を追記しましょう。
Listen 8080
こんな感じの書き方です。
本題:virtual hostの設定ファイルを作ろう
それでは、ようやく事前準備が終わったので、virtual hostの設定ファイルを作りましょ。
rootユーザーで、virtual host用の設定ファイルを新規作成しましょう。
名前は、最後が「.conf」であれば何でもいいです。
今回は、v_host.confとしました。
vi /etc/httpd/conf.d/v_host.conf
2つのバーチャルホスト用の設定を書こう
以下のように書きました。
必要最低限の設定なので、ツッコミの余地は多分にあります。(笑)
<VirtualHost *:80> DocumentRoot /var/www/html ServerName localhost </VirtualHost> <VirtualHost *:8080> DocumentRoot /var/www/html2 ServerName localhost2 <Directory "/var/www/html2"> Options Indexes FollowSymLinks AllowOverride FileInfo Require all granted </Directory> </VirtualHost>
以下、説明です。
- VirtualHost :80 と、VirtualHost :8080 ですが、通常の80番ポートでアクセスされたときと、8080ポートでアクセスされたとき、という分岐に使っています。
- DocumentRootは、各々のドキュメントルートのパスです。
- ServerNameは、エラー発生時などに表示される設定毎の名前です。
- 8080の下のDirectoryの設定ですが、今回、新しいドキュメントルート「/var/www/html2」には、フォルダの権限設定がありませんでしたので、 追記する必要がありました。そのため、httpd.confの下の、「/var/www/html」と同じ内容でコピーしてみました。これを書かないと、ページが表示されません。
動かして確認してみよう
それでは、実際に各々のURLにアクセスして、動きを確認してみましょう。
まずは、http:/localhost(ポート80の設定の方です)から。
「This is HTML"1" Site.」と表示されました。
正しく設定が効いているようですね。
次に、8080番ポートの方にアクセスしてみます。http://localhost:8080 を叩いてみると、
「This is HTML"2" Site.」と表示されました。成功ですね!
まとめ:応用すれば、複数サイトの運営に使えるよ
うまくできたでしょうか。
今回はポート番号でURLが変わる例でしたが、「DocumentRoot」「ServerName」の部分を変更すれば、複数サイトの運営に使えますよ。
たとえば、
<VirtualHost *> DocumentRoot "/var/www/html/www" ServerName www.abc.com </VirtualHost> <VirtualHost *> DocumentRoot "/var/www/html/blog" ServerName blog.abc.com </VirtualHost>
のように書けば、「www.abc.com」はホームページ用のドキュメントルートを設定、「blog.abc.com」はブログ用のドキュメントルートを設定、なんて使い方もできます。
いろいろ試してみてくださいね。