お金プログラム ~だれでもノマド~

ノマド的な稼ぎ方、投資、IT系(プログラミング)に関するブログです。

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

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

 

f:id:toyo--104:20180610001649p:plain

 

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

また、今回は、

・OS: Linux CentOS7

・Apahche:バージョン2.4

で進めます。

 

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

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

 

http://localhost:80

⇒/var/www/html をドキュメントルートに。

 

http://localhost:8080

⇒/var/www/html2 をドキュメントルートに。

 

まずは、フォルダをドキュメントルート用フォルダを作ります

ドキュメントルートのディレクトリを作って

mkdir /var/www/html2

 

index.htmlを作ります。

vi /var/www/html2/index.html

 

中身は、「This is HTML"2" Site」と表示されるように書きました。

 

※もうひとつの80番ポートの「/var/www/html」のindex.htmlでは、「This is HTML"1" Site」と表示されるように、index.htmlが作ってあります。

 

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

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

 

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

vi /etc/httpd/conf/httpd.conf

 

以下を追記しましょう。

Listen 8080

 

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

f:id:toyo--104:20180609234512p:plain

 

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

 

f:id:toyo--104:20180610000019p:plain

 

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

 

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

 

f:id:toyo--104:20180609235828p:plain

 

This is HTML"2" Site.」と表示されました。成功ですね!

 

まとめ:応用すれば、複数サイトの運営に使えるよ 

うまくできたでしょうか。

今回はポート番号でURLが変わる例でしたが、<VirtualHost *:80><VirtualHost *:8080>の部分を変更すれば、複数サイトの運営に使えますよ。

 

たとえば、

<VirtualHost www.abc.com:80>

<VirtualHost blog.abc.com:80>

のように書けば、「www.abc.com」はホームページ用のドキュメントルートを設定、「blog.abc.com」はブログ用のドキュメントルートを設定、なんて使い方もできます。

 

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