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
上記の例に含まれる主要なディレクティブの役割は以下の通りである。
ServerAdmin
: サーバー管理者の連絡先メールアドレスを指定する。ServerName
: このVirtualHostが主に応答するホスト名(FQDN)を指定する。ServerAlias
:ServerName
以外の別名となるホスト名を指定する。DocumentRoot
: ウェブサイトのファイルが配置されているサーバー上の物理パスを指定する。Apacheユーザー(通常www-data
)が読み取り可能である必要がある。ErrorLog
/CustomLog
: エラーログおよびアクセスログの出力先ファイルを指定する。ログファイルはデフォルトで/var/log/apache2/
ディレクトリに保存される。
ブロック: 特定のディレクトリに対するアクセス制御や設定オプションを定義する。例では、ディレクトリインデックス表示やシンボリックリンクの許可、.htaccess
ファイルによる設定上書きの不許可、全ての接続元からのアクセス許可を設定している。
複数のVirtualHostが同じIPアドレスとポートにマッチするように設定されている場合、Apache2は設定ファイル群の中で最初に記述されているVirtualHostを、そのIPアドレスとポートに対するデフォルトのVirtualHostとして扱う点に注意が必要である。
これらの設定を適切に行い、Apache2サービスをリロードまたは再起動することで、Ubuntu 24.04 LTS上のApache2で指定したIPアドレスに基づいて異なるWebサイトを運用できるようになる。