ApacheへVirtualhostの設定
ApacheへのVirtualhostの設定方法メモ。
構築済みの環境
MacOS Mojave 10.14.5
VirtualBox 6.0.0
Vagrant 2.2.3
CentOS Linux release 7.6.1810
Apache/2.4.6
PHP 7.2.19
mysql5.7.26
ドキュメントルート
ドキュメントルートとはWebサイト上の公開ファイルを格納するディレクトリのことを指します。
ドキュメントルートの設定に当たって、Apacheのバーチャルホストという機能を利用します。
バーチャルホスト
バーチャルホストとは、1つのWebサーバーで複数のホスト名を運用するための仕組みを指すようです。
ブラウザからWebサーバにアクセスする際URLを指定します。
そのURLによってドキュメントルートを切り替える仕組みがバーチャルホストです。
ドキュメントルートの設定
CentOS7 の Apache httpd 2.4 では、インターネットに公開するコンテンツを配置するドキュメントルートディレクトリは/var/www/html に設定されています。
ここではドキュメントルートを/var/www/study.comに設定します。
まずはディレクトリを作成し、ディレクトリの所有者を自分自身のユーザに設定します。
$ cd /var/www
$ sudo mkdir /var/www/study.com
$ sudo chown apache:apache /var/www/study.com
仮のトップページとして “Hello World!” の記載を配置。
$ cd /var/www/study.com
$ sudo touch index.html
$ sudo vi index.html
<h1>Hello, World!</h1>
バーチャルホストの設定
Apache 2.4 の設定ファイルは /etc/httpd/conf/httpd.conf というファイルが大元となっており、個別のモジュールなどの設定は /etc/httpd/conf.d や /etc/httpd/conf.modules.d ディレクトリに設定が保存されています。 httpd.conf から、 conf/conf.d や conf/conf.modules.d フォルダの設定を Include するようになっています。
ここでは conf/conf.d ディレクトリに新たなバーチャルホストの設定を保存するようにしたいと思います。 上記のように conf/conf.d 内の、拡張子が .conf のファイルは全て読み込むようにデフォルトで設定されていますので、新たな設定は .conf という拡張子のファイルを作成して配置すれば読み込まれます。
study.comのバーチャルホスト設定を追加します。 まずは空の設定ファイルだけを作ってしまいます。 ファイル名は何でも良いですが、拡張子は .conf である必要があります。 ここでは、vhosts.conf にしました。
$ cd /etc/httpd/conf.d
$ sudo touch vhosts.conf
作成したファイルに VirtualHost の最低限の設定をします。 ファイルを開いて次のように記述します。
$ sudo vi vhosts.conf
<VirtualHost *:80>
DocumentRoot /var/www/study.com
ServerName study.com
<Directory "/var/www/study.com">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
/etc/hostsにドメインを設定
$ sudo vi /etc/hosts
127.0.0.1 study.com //追加
Apacheを再起動
$ sudo systemctl reload httpd
Apacheの文法テスト
$ sudo service httpd configtest
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using study.com. Set the 'ServerName' directive globally to suppress this message
Syntax OK
'ServerName'ディレクティブをグローバルに設定してください。
となっているので、以下のようにhttpd.confファイルを設定。
$ sudo vi /etc/httpd/conf/httpd.conf
~
# ServerName example.com:80
ServerName study.com:80 //コメントアウトを外してドメインを指定
再度文法テスト
$ sudo systemctl reload httpd
$ sudo service httpd configtest
Syntax OK
Mac側のhostsファイルに設定追加
$ sudo vi /private/etc/hosts
password //Macのパスワード入力
192.168.33.10 study.com //追加
vagrantを再起動
$ vagrant reload
以上で設定は完了です。
設定したホストhttp://study.com/にアクセスして、「Hello World!」という画面が表示されることを確認してください。
備考
最初バーチャルホストのIP名をstudy.localhostにして進めたところ、Mac側のhosts設定がうまく反映されませんでした。
IP名をstudy.comとして進めたところ、Mac側の設定も上手く反映されました。
深く検証してませんがおそらくMac側の設定の問題だと思うので、同じようなハマりに遭遇した方は参考にしてもらえればと。
参考