コンテンツにスキップ

HTTPサイトの設定

Debian系でApache HTTP Serverをインストールし、www.example.comをHTTPで公開する。


項目 値
OS Debian 13.x
サイト名 www.example.com
ドキュメントルート /var/www/html
VirtualHost設定 /etc/apache2/sites-available/www.example.com.conf
HTTPポート TCP 80

www.example.com がDNSまたはクライアントの/etc/hostsでApacheサーバーのIPアドレスへ解決できるようにする。


Terminal window
sudo apt update
sudo apt install apache2

サービス状態を確認する。

Terminal window
systemctl status apache2

起動していない場合は起動する。

Terminal window
sudo systemctl enable --now apache2

enable --nowは、自動起動を有効にすると同時にサービスを起動する。既に起動済みなら、状態確認だけでよい。


Debianの既定ドキュメントルートである/var/www/htmlへ確認用ファイルを配置する。

Terminal window
sudo install -d -o root -g root -m 755 /var/www/html
Terminal window
cat <<'EOF' | sudo tee /var/www/html/index.html
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>www.example.com</title>
</head>
<body>
<h1>www.example.com</h1>
</body>
</html>
EOF

Apacheの子プロセスは、ファイルの内容を読み取り、親ディレクトリをたどれる権限が必要である。この例ではディレクトリを755、HTMLファイルをteeの既定権限で作成する。


/etc/apache2/sites-available/www.example.com.confを作成する。

/etc/apache2/sites-available/www.example.com.conf
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/html
<Directory /var/www/html>
AllowOverride None
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/www.example.com-error.log
CustomLog ${APACHE_LOG_DIR}/www.example.com-access.log combined
</VirtualHost>

この構成では、www.example.comを/var/www/htmlへ対応付け、.htaccessによる上書きを使わずに公開する。エラーログとアクセスログは、このサイトの処理をほかのVirtualHostから分けて確認できる名前にする。各ディレクティブの役割とVirtualHostの選択順序はVirtualHostと設定セクションを参照する。


Terminal window
sudo a2ensite www.example.com.conf

a2ensiteはsites-enabledへシンボリックリンクを作り、次回の設定読み込み対象にする。

既定の000-default.confを使用しない場合は、任意で無効化できる。

Terminal window
sudo a2dissite 000-default.conf

000-default.confを残しても、Host: www.example.comがこのVirtualHostのServerNameと一致すればwww.example.com.confが選択される。


Terminal window
sudo apache2ctl configtest

期待する結果は次のとおり。

Syntax OK

構文が正しいことを確認してからreloadする。

Terminal window
sudo systemctl reload apache2

VirtualHostの認識結果を確認する。

Terminal window
sudo apache2ctl -S

TCP 80の名前ベースVirtualHostにwww.example.comと設定ファイルのパスが表示されることを確認する。


Terminal window
curl -I http://www.example.com/

期待する結果は200 OKである。

HTTP/1.1 200 OK

DNSをまだ用意していない場合は、--resolveで接続先だけを指定できる。

Terminal window
curl -I \
--resolve www.example.com:80:192.0.2.10 \
http://www.example.com/

--resolveはwww.example.comというHostヘッダーを維持したまま、指定したIPアドレスへ接続する。192.0.2.10はApacheサーバーの実際のIPアドレスへ置き換える。


Terminal window
sudo apache2ctl configtest
sudo apache2ctl -S
sudo apache2ctl -M
systemctl status apache2
journalctl -u apache2
sudo tail -f /var/log/apache2/www.example.com-error.log
sudo tail -f /var/log/apache2/www.example.com-access.log

apache2ctl -SはVirtualHostの選択、apache2ctl -Mは有効なモジュール、サイト別ログは実際のリクエスト処理を確認するために使う。