本稿では CentOS 7 の標準 yum リポジトリからインストールできる Apache httpd 2.4 に名前ベースの VirtualHost の設定をする手順について解説します。
前提
本稿では、 CentOS 7 に yum で Apache httpd 2.4 がインストールされていることを前提に解説をします。 まだインストールされていない場合は、別稿「Apache httpd 2.4 を CentOS 7 に yum でインストールする手順」を参考にインストールしてください。
また本稿では、例としてホスト名 sample.myhost.com を VirtualHost 設定することとします。 ホスト名はご自身が設定しようとしているホスト名に置き換えて読み進めてください。
設定方針
それでは CentOS 7 に Apache httpd 2.4 をインストールし終えた状態のファイルとフォルダの構成を確認しながら、ここでの設定内容を決めて行きたいと思います。 VirtualHost とは、1台のコンピュータ上で2つ以上のウェブサイトを扱うための設定です。 取り扱うウェブサイトを追加するには、そのウェブサイトのコンテンツを配置するディレクトリを決定する作業が必要です。
ドキュメントルート
CentOS7 の Apache httpd 2.4 では、インターネットに公開するコンテンツを配置するドキュメントルート(DocumentRoot)ディレクトリは /var/www/html に設定されています。 ここでは sample.myhost.com ドメインのコンテンツ配置フォルダとして、新たに /var/www/sample.myhost.com フォルダを追加することとします。
VirtualHostの設定
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 するようになっています。
httpd.conf ファイルの抜粋
Include conf.modules.d/*.conf
(略)
IncludeOptional conf.d/*.conf
ここでは conf/conf.d ディレクトリに新たな VirtualHost の設定を保存するようにしたいと思います。 上記のように conf/conf.d 内の、拡張子が .conf のファイルは全て読み込むようにデフォルトで設定されていますので、新たな設定は .conf という拡張子のファイルを作成して配置すれば読み込まれます。
設定
それでは上の方針に従い設定をしていきましょう。
ドキュメントルート用ディレクトリを作成する
まずはコンテンツを配置するためのドキュメントルート(DocumentRoot)ディレクトリを作成しましょう。 上の方針の通り、/var/www/sample.myhost.com フォルダを作成します。 また、作成したフォルダの所有者を apache ユーザーに変更します。
# cd /var/www
# mkdir sample.myhost.com
# chown apache:apache sample.myhost.com
また、仮のトップページとして “This is sample.myhost.com” と書かれただけを配置しておきます。
# cd /var/www/sample.myhost.com
# echo "This is sample.myhost.com" > index.html
# chown apache:apache index.html
VirtualHost の設定を作成する
まずは conf/httpd.conf に名前ベースの VirtualHost の待受けをすることを宣言します。 ここでは全ての80番ポートへのアクセスに対して有効になるように、次のように追記します。 追記する場所はどこでも良いですが、私は Listen 80 の記述の後に追記します。
Listen 80
NameVirtualHost *:80
次に sample.myhost.com の VirtualHost 設定を追加します。 まずは空の設定ファイルだけを作ってしまいます。 ファイル名は何でも良いですが、拡張子は .conf である必要があります。 ここでは、sample.myhost.com.conf にしました。
# cd /etc/httpd/conf.d
# touch sample.myhost.com.conf
作成したファイルに VirtualHost の最低限の設定をします。 ファイルを開いて次のように記述します。
<VirtualHost *:80>
DocumentRoot /var/www/sample.myhost.com
ServerName sample.myhost.com
</VirtualHost>
これで設定は完了です。 次のように Apache httpd の設定をリロードします。
# systemctl reload httpd
設定したホスト http://sample.myhost.com にアクセスして、「This is sample.myhost.com」という画面が表示されることを確認してください。
ログの設定をする
設定は必須ではありませんが、ログの設定について解説します。 VirtualHost の設定をした場合、全てのウェブサイトのアクセスログが1つのログファイルに出力されるよりは、ウェブサイト毎にアクセスログが出力された方が何かと便利です。 先ほど設定した VirtualHost 設定の中に、次のようにログの設定を追記します。
<VirtualHost *:80>
DocumentRoot /var/www/sample.myhost.com
ServerName sample.myhost.com
ErrorLog logs/sample.myhost.com-error_log
CustomLog logs/sample.myhost.com-access_log common
</VirtualHost>
設定するログファイルの名前は何でも良いですが、ドメイン名を含んでいると分かりやすいでしょう。
おわりに
本稿では CentOS 7 に yum でインストールした Apache 2.4 で、名前ベースの VirtualHost を実現する方法について解説しました。