前回の記事ではWebサーバーのインストールと必要な設定を行いました。今回はバーチャルホストの設定について説明いたします。
バーチャルホストとは?
サーバーを持っているとそのサーバーで複数のドメインを運用したくなる時があります。そうした時にサーバーをたくさん借りるといろいろ大変なので1つのIPアドレスで、複数のドメインを持てると便利になります。具体的に説明するとこんな感じになります。
- http://hoge1.com でリクエスト → /var/www/hoge1.com/index.htmlのファイルを表示
- http://hoge2.com でリクエスト → /var/www/hoge2.com/index.htmlのファイルを表示
なおバーチャルホストを設定するためには、あらかじめIPアドレスと任意のIPアドレスを結びつけるための名前解決をする(DNSの設定)必要があります。その方法については、こちらの記事をご覧ください。
バーチャルホストの設定方法
SSH接続でリモートサーバーに接続して、作業用ユーザーからroot権限をもつユーザに昇格した上で以下のコマンドを実行します。
バーチャルホスト用のドキュメントルートディレクトリを作成
# cd /var/www
まずデフォルトでドキュメントルートディレクトリに設定されている、/var/www/htmlディレクトリの親ディレクトリである、/var/wwwまで移動します。
# mkdir hoge1.com # chown apache:echizenya hoge1.com
その位置で1つ目のバーチャルホストである、hoge1ディレクトリを作成し、そのディレクトリのユーザーとグループ名を変更します。
# cd /var/www/hoge1.com # vi index.html Hello World from hoge1.com # chown apache:echizenya index.html
ブラウザで”http://hoge1.com”にアクセスしたときに”Hello World from hoge1.com”と表示される、index.htmlを作成します。
バーチャルホストの設定
# vi /etc/httpd/conf/httpd.conf Listen 80 NameVirtualHost *:80 ← 追記
Apacheの設定ファイル(/etc/httpd/conf/httpd.conf)にバーチャルホストの待受けをすることを宣言します。全ての80番ポートへのアクセスに対して有効になるように追記をします。
# cd /etc/httpd/conf.d # vi hoge1.com.conf <VirtualHost *:80> DocumentRoot /var/www/hoge1.com ServerName hoge1.com ErrorLog logs/hoge1.com-error_log CustomLog logs/hoge1.com-access_log common </VirtualHost>
hoge1.comのバーチャルホストを設定します。”/etc/httpd/conf.d”ディレクトリの下に新たに”hoge1.com.conf”ファイルを作成します(”/etc/httpd/conf”の下ではないことに注意してください)。ErrorLogとCustomLogは任意で記述します。ドメインごとにアクセスログを出力させたい場合、そのドメイン名を含むように記述します。
Apacheの再起動
# systemctl restart httpd.service
最後にApacheを再起動します。再起動後に”http://hoge1.com”にアクセスすると、Hello World from hoge1.comと表示されます。また”hoge2.com”のバーチャルホストを追加で設定したい場合、同様の作業を繰り返します。