今回は、1つのサーバーで複数のドメイン名を利用できるようにし、複数のサイトを運用できるようにする方法を書き留めておきます!
これは、自分のパソコンのLAMP環境で色々試したいとき、勉強したいときにドメイン名が一つだと不便だなと思ったところから、色々調べた内容です、
方法は、色々あるようですが、プログラム超初心者のための方法である、バーチャルホストの設定による方法を採用しました。
まず、バーチャルホストとは何か?
バーチャルホストとは、1台のサーバーで複数のドメインのWebサイトを運営することを可能にする、apache(httpd)の機能のことである。
この機能を利用することで、ドメイン毎にサーバーやIPアドレスを用意する手間・コストが省ける。
『 Apacheでのバーチャルホストの設定』
以下、手順となります。
●Apache(httpd)の設定ファイルを開く
vim /etc/httpd/conf/httpd.conf
●Apacheが外部からリクエストを受け付けるポート番号を指定するListenディレクティブを検索
/Listen
「
Listen 80」が検索結果として見つかるはずです。
通常、リクエストを受け付けるポート番号は初期設定として80番が指定されています。
ですが、Apacheが受け付けることができるポートの数は複数設定可能ですので、下記の書式で複数設定します。
Listen [IPアドレス:]ポート番号 [プロトコル]
例えば、下記のように他のポート番号と重複がなければ適当で、、
Listen 80
Listen 8080
Liseten 1287
●バーチャルホストディレクティブを追加
<VirtualHost [IPアドレス:]ポート番号>
ServerName ホスト名
DocumentRoot コンテンツディレクトリ
ServerAdmin 管理者メールアドレス(省略するとデフォルト値)
ErrorLog エラーログファイル名(省略するとデフォルト値)
TransferLog アクセスログファイル名(省略するとデフォルト値)
</VirtualHost>
上記がバーチャルホストディレクティブの基本構造となります。
このブロックをListenしたポートの数ごとに記述していきます。
最低でもDocumentRootディレクティブの記述は必須のようです(当たり前?参照するディレクトリが分かりませんもんね、、)。
ちなみに、私は、とりあえず、3つのサイトを下記のように設定しました。
サイト1:Wired Zend Frameworkの練習サイト
Listen 80
<VirtualHost *:80>
DocumentRoot /var/www/wzfsample/public
SetEnv APPLICATION_ENV "development"
<Directory /var/www/wzfsample/public>
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
Options FollowSymLinks
</Directory>
</VirtualHost>
サイト2:Laravelの練習サイト
Listen 81
<VirtualHost *:81>
DocumentRoot /var/www/laravel/public
SetEnv APPLICATION_ENV "development"
<Directory /var/www/laravel/public>
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
Options FollowSymLinks
</Directory>
</VirtualHost>
サイト3:素のPHPの練習サイト
Listen 82
<VirtualHost *:82>
DocumentRoot /var/www/test
Options Indexes FollowSymLinks
</VirtualHost>
ちなみに、下記が上記3サイトの設定の留意点です。
*サイトのディレクトリは、「
/var/www/」以下に集約する。
一箇所にまとめておいた方が、見通しが良いだろうと思います。
*シムリンクを使用したいので、全てのサイトに「
Options Indexes FollowSymLinks」を追加(参照:
『Sambaにおけるリンクの効用~プログラム超初心者のためのLinuxコマンド~』)。
*サイト1と2はフレームワークを使用しているので、設定を追加しています。
●Apache(httpd)の設定ファイルを保存して閉じる
「Esc」 → 「:wq」 → 「Enter」
●Apache(httpd)の再起動
service httpd restart
以上で設定は終了です。
この設定で、それぞれのサイトを下記のURLで表示します。
サイト1:Wired Zend Frameworkの練習サイト
http://192.168.56.101/
サイト2:Laravelの練習サイト
http://192.168.56.101:81/
サイト3:素のPHPの練習サイト
http://192.168.56.101:82/
つまり、初期設定のポート番号80番を持つサイトは「
http://IPアドレス/」で、80番以外のポート番号のサイトは「
http://IPアドレス:ポート番号/」で表示させることができます。
以上です!
【参考サイト】
『 Apacheでのバーチャルホストの設定』
『バーチャルホストによる複数サイトの同時運用』
『サーバ名とポート番号(ServerName, Listen)』
『CentOSリンク集 TOP > 未分類 > バーチャルホスト』