
CentOS8 + Apache + Nginx + MariaDBでVPSサーバーに環境構築をする(#5:バーチャルホストの設定)
これまでの記事でOSのインストールから基本的な設定、そしてウェブサーバーやデータベースサーバーなどの環境を構築してきました。今回は新たにバーチャルホストの設定を行なっていきます。バーチャルホストが使えることで、ドキュメントルートを切り分けることができ、1つのサーバー内で複数ドメインのサイトを運用することが可能になります。ここではウェブサーバーにApacheを使う前提で進めています。
(これまでの記事)
・CentOS8 + Apache + Nginx + MariaDBでVPSサーバーに環境構築をする(#1:サーバーの契約・OSのインストール)
・CentOS8 + Apache + Nginx + MariaDBでVPSサーバーに環境構築をする(#2:SSH・公開鍵認証の設定)
・CentOS8 + Apache + Nginx + MariaDBでVPSサーバーに環境構築をする(#3:ウェブサーバー・PHPのインストール)
・CentOS8 + Apache + Nginx + MariaDBでVPSサーバーに環境構築をする(#4:DBサーバー・phpMyAdminのインストール)
今回はバーチャルホストの設定についてまとめていきました。VPSサーバーは拡張性もあるので、複数のサイト運用にも適しています。サブディレクトリでサイトを切り分ける場合もありますが、別のサイトとなる場合にはドメインレベルでの切り分けが多いのではないでしょうか。1つだけのウェブサイトを運用する場合ではあまり必要ないかもしれませんが、ステージング用などのテスト環境にも使えると思いますので、導入しておくといいかもしれませんね。
1. バーチャルホストのルートディレクトリ作成
まずはデフォルトのドキュメントルートに移動し、新たに作成するバーチャルホスト用のドキュメントルートとなるディレクトリを作成していきます。# cd /var/www/html/ # mkdir directory-1 directory-2 directory-3 .......これらのディレクトリはrootユーザーで作成していることになるので、ディレクトリの所有者を「apache」に、グループを「一般ユーザー」に全て変更しておきます。
# chown -R apache:[USERNAME] directory-1 directory-2 directory-3 .......(補足)WordPressのプラグインインストールなどを管理画面から行う場合にエラーが出るときは、所有者とグループ両方apacheに設定しておきます。
# chown -R apache:apache directory-1 directory-2 directory-3 .......作成したディレクトリの権限を書き込みができるように変更します。
# chmod -R g+w directory-1 directory-2 directory-3 .......ここまでの変更内容を確認しておきます。
# ls -l drwxrwxr-x 2 apache [USERNAME] directory-1 drwxrwxr-x 2 apache [USERNAME] directory-2 drwxrwxr-x 2 apache [USERNAME] directory-3 .......これでバーチャルホスト用のドキュメントルートの作成が完了しました。この後、それぞれのドキュメントルートにホストの情報を紐づける作業を行なっていきます。
2. HTTPサーバーのバーチャルホスト設定
まずはHTTPサーバーの設定ファイルを編集していきます。「/etc/httpd/conf/」に移動し編集ファイルである「httpd.conf」のバックアップを取り、エディタで下記のように編集していきます。# cd /etc/httpd/conf/ # cp httpd.conf httpd.conf.copy # vim httpd.conf編集するところは1箇所だけで、ローカルホストに接続されるようにしていきます。 【/etc/httpd/conf/httpd.conf】
// 変更前 #ServerName www.example.com:80 ↓ // 変更後 ServerName localhost:80続いてバーチャルホスト専用の設定ファイルを新たに作成します。「/etc/httpd/conf.d/」配下に、バーチャルホストの設定ファイルとして任意の名前でファイルを作成しておきます(ここでは「vhost.conf」としています)
# cd /etc/httpd/conf.d/ # vim vhost.conf上記で作成したバーチャルホスト用の設定ファイル(vhost.conf)へ次のようにバーチャルホストの設定を必要なドメイン分作成していき保存します、ドキュメントルートには先ほど作成したディレクトリをそれぞれ指定します。 【/etc/httpd/conf.d/vhost.conf】
<VirtualHost *:80>
ServerName example.com
DirectoryIndex index.php index.html
AddDefaultCharset UTF-8
DocumentRoot /var/www/html/directory-1
ServerAlias www.example.com
<Directory "/var/www/html/directory-1">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName site2.example.com
DirectoryIndex index.php index.html
AddDefaultCharset UTF-8
DocumentRoot /var/www/html/directory-2
<Directory "/var/www/html/directory-2">
Require all granted
</Directory>
</VirtualHost>
.................
下記コマンドでhttpdを再起動し設定を反映させて、各ドメインのDNS設定を済ませた後にバーチャルホストで設定したドメインにアクセスします。そこでドキュメントルートのファイルが表示されるかを確認していきます。
# systemctl restart httpdこれでバーチャルホストの設定が完了し、複数ドメインでのウェブサイトを同じサーバーで使い分けられるようになりました。
今回はバーチャルホストの設定についてまとめていきました。VPSサーバーは拡張性もあるので、複数のサイト運用にも適しています。サブディレクトリでサイトを切り分ける場合もありますが、別のサイトとなる場合にはドメインレベルでの切り分けが多いのではないでしょうか。1つだけのウェブサイトを運用する場合ではあまり必要ないかもしれませんが、ステージング用などのテスト環境にも使えると思いますので、導入しておくといいかもしれませんね。