まめぞうの技術メモ

IT関連で勉強したことをメモします

【Apache】virtual hostでの複数URL運営

Apache HTTP Server(httpd)では、バーチャルホストを使って、複数のURLで、別々のサイトを運営することができます。

複数URL運営

やり方を書いていきますね。

また、今回は、

  • OS: Linux CentOS7
  • Apahche:バージョン2.4

で進めます。

URL毎にドキュメントルートを分けてみる

今回は、以下のように、ポート番号で変わるURLを、ドキュメントルートをURLによって分けてみます。

事前に、8080ポートもListenするように設定を書く

事前準備ですが、今回の例では、8080ポートに来たアクセスのドキュメントルートを分けるので、8080ポートをListenする必要があります。

rootユーザーで、httpd.confを開いて

vi /etc/httpd/conf/httpd.conf

以下を追記しましょう。

Listen 8080

こんな感じの書き方です。

Listenの書き方

本題: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.」と表示されました。

site1

正しく設定が効いているようですね。

次に、8080番ポートの方にアクセスしてみます。http://localhost:8080 を叩いてみると、

site2

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」はブログ用のドキュメントルートを設定、なんて使い方もできます。

 

いろいろ試してみてくださいね。