CentOS 7 の Apache httpd 2.4 に VirutalHost の設定をする手順

投稿者 : OSCA

[PR] "出川哲朗の充電させてもらえませんか?"で登場したロケ地を紹介するファンサイト「あの場所へ行こう!」はこちら。

 本稿では 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 を実現する方法について解説しました。

Apache httpd 入門へ戻る

Apacheのトップへ戻る

著者 : OSCA

OSCA

Java, PHP 系のWEBエンジニア。 WEBエンジニア向けコミュニティ「WEBエンジニア勉強会」を主催。 個人として何か一つでも世の中の多くの人に使ってもらえるものを作ろうと日々奮闘中。
@engineer_osca