Apache2 の VirtualHost の設定

【概要】Ubuntu 24.04 LTS環境でApache2により複数のWebサイトを運用するには、設定ファイルを/etc/apache2/sites-available/に作成しa2ensiteコマンドで有効化する。IPベース設定では、ブロックでDocumentRootやログ出力先などを定義する。変更後はsystemctl reload apache2で反映させる。

Apache2のVirtualHost機能は、1台のサーバー上で複数の異なるドメイン名やIPアドレスに対応するWebサイトを運用するために使用される機能である。

VirtualHost設定ファイルの配置と有効化

UbuntuにおけるApache2のデフォルト設定ファイルは /etc/apache2/apache2.conf であり、VirtualHostの設定はモジュール方式で管理されている。VirtualHostの設定ファイルは通常 /etc/apache2/sites-available/ ディレクトリに配置する。

作成した設定ファイルをApache2に読み込ませるためには、その設定ファイルへのシンボリックリンクを /etc/apache2/sites-enabled/ ディレクトリに作成する必要がある。Ubuntuの標準的な設定では、この sites-enabled/ ディレクトリ内の *.conf ファイルが自動的にIncludeされるためである。

設定ファイルを /etc/apache2/sites-available/ ディレクトリに配置した後、以下の a2ensite コマンドを使用して有効化する。これにより、sites-enabled/ ディレクトリにシンボリックリンクが作成される。

sudo a2ensite your_virtualhost_file.conf

設定を無効化する場合は、以下の a2dissite コマンドを使用する。

sudo a2dissite your_virtualhost_file.conf

設定変更を反映させるためには、Apache2サービスをリロードまたは再起動する必要がある。リロードはサービスを停止せず設定を再読み込みするため、通常はこちらが推奨される。

sudo systemctl reload apache2

または

sudo systemctl restart apache2

設定を有効化する前や、Apache2をリロード/再起動する前に、以下の apache2ctl configtest コマンドで設定ファイルの構文テストを行うことが推奨される。構文エラーがあれば、エラーメッセージが表示され、サービス起動失敗を防ぐことができる。

sudo apache2ctl configtest

VirtualHost設定ファイルの記述例

/etc/apache2/sites-available/ ディレクトリに配置するVirtualHost設定ファイルの例を以下に示す。IPアドレスベースでVirtualHostを設定する場合、 ディレクティブの引数に、そのVirtualHostが応答するIPアドレスとポート番号を指定する。

IPアドレスを指定したVirtualHostが機能するためには、ApacheがそのIPアドレスとポートで接続を待機(リッスン)するように、Listen ディレクティブによって設定されている必要がある。これは通常、/etc/apache2/ports.conf ファイルまたはメイン設定ファイルで行う。

IPアドレス xxx.yyy.zzz.aaa に対応するVirtualHostの設定例


    ServerAdmin webmaster@example.com
    ServerName www.hoge.hoge.com
    ServerAlias hoge.hoge.com
    DocumentRoot /var/www/html/hoge

    ErrorLog ${APACHE_LOG_DIR}/hoge_error.log
    CustomLog ${APACHE_LOG_DIR}/hoge_access.log combined

    
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    

IPアドレス xxx.yyy.zzz.bbb に対応するVirtualHostの設定例


    ServerAdmin webmaster@example.net
    ServerName www.fuga.fuga.com
    ServerAlias fuga.fuga.com
    DocumentRoot /var/www/html/fuga

    ErrorLog ${APACHE_LOG_DIR}/fuga_error.log
    CustomLog ${APACHE_LOG_DIR}/fuga_access.log combined

    
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    

上記の例に含まれる主要なディレクティブの役割は以下の通りである。

複数のVirtualHostが同じIPアドレスとポートにマッチするように設定されている場合、Apache2は設定ファイル群の中で最初に記述されているVirtualHostを、そのIPアドレスとポートに対するデフォルトのVirtualHostとして扱う点に注意が必要である。

これらの設定を適切に行い、Apache2サービスをリロードまたは再起動することで、Ubuntu 24.04 LTS上のApache2で指定したIPアドレスに基づいて異なるWebサイトを運用できるようになる。