Ubuntu 22.04 で Apache HTTP Server を構築する基本手順です。この記事では、Apache のインストール、VirtualHost、DocumentRoot、待ち受けポート、設定確認、サービス再読み込みまでを扱います。
TLS、PHP、HTTP/2、WAF は後続の記事で扱うため、ここではまず HTTP の基本的な Web サーバーとして動作する状態を作ります。
Apache HTTP Server ポケットリファレンス
Apache HTTP Server の設定、ディレクティブ、モジュール、運用項目を確認したい場合の参考書籍です。古い 2.0 / 2.2 系対応書籍のため、価格や在庫、現在の Apache 2.4 との差分はリンク先や公式ドキュメントで確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
関連する Apache 記事
Apache の基本設定、TLS、PHP、HTTP/2、WAF は役割が分かれます。必要な機能を順番に追加していくと、設定の責務を切り分けやすくなります。
- Ubuntu 22.04 Apache 基本構築 – VirtualHost と DocumentRoot を整理する
- Ubuntu 22.04 Apache TLS – 内部 CA 証明書で HTTPS を有効化する
- Ubuntu 22.04 Apache PHP 有効化 – libapache2-mod-php の設定と確認
- Ubuntu 22.04 Apache Web サーバー構築 HTTP/2 有効化
- Ubuntu 22.04 Apache Web サーバー構築 WAF 有効化
Apache 基本構築で確認するもの
| 項目 | 役割 |
|---|---|
| apache2 パッケージ | Apache HTTP Server 本体 |
| DocumentRoot | 公開するファイルの配置場所 |
| VirtualHost | サイト単位の設定 |
| ports.conf | Apache が待ち受けるポート |
| a2ensite / a2dissite | サイト設定の有効化と無効化 |
| apache2ctl configtest | 設定構文の確認 |
Apache をインストールする
sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y apache2サービス状態を確認する
systemctl status apache2 --no-pager
ss -ltnp | grep ':80'Apache が起動していれば、80 番ポートで待ち受けます。まずはローカルから HTTP 応答を確認します。
curl -I http://127.0.0.1/DocumentRoot を作成する
サイト用の DocumentRoot を作成します。ここでは server.example.local という内部向けサイトを例にします。
sudo install -d -m 0755 /var/www/server.example.local
sudo tee /var/www/server.example.local/index.html <<'EOF'
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>server.example.local</title>
</head>
<body>
<h1>server.example.local</h1>
</body>
</html>
EOFVirtualHost を作成する
サイトごとの設定は /etc/apache2/sites-available/ に作成し、a2ensite で有効化します。
sudo tee /etc/apache2/sites-available/server.example.local.conf <<'EOF'
<VirtualHost *:80>
ServerName server.example.local
ServerAdmin webmaster@example.local
DocumentRoot /var/www/server.example.local
<Directory /var/www/server.example.local>
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/server.example.local-error.log
CustomLog ${APACHE_LOG_DIR}/server.example.local-access.log combined
</VirtualHost>
EOFサイトを有効化する
sudo a2dissite 000-default.conf
sudo a2ensite server.example.local.conf
sudo apache2ctl configtest
sudo systemctl reload apache2a2dissite 000-default.conf は必須ではありませんが、デフォルトサイトと自分で作った VirtualHost を混在させたくない場合は無効化しておくと見通しがよくなります。
名前解決を用意する
検証用にクライアント側の /etc/hosts へ名前を追加するか、内部 DNS へ登録します。
sudo tee -a /etc/hosts <<'EOF'
192.0.2.10 server.example.local
EOF動作確認する
curl -I http://server.example.local/
curl http://server.example.local/ログを確認する
sudo tail -n 20 /var/log/apache2/server.example.local-access.log
sudo tail -n 20 /var/log/apache2/server.example.local-error.log運用上の注意
- サイトごとに VirtualHost ファイルを分ける
- DocumentRoot とログファイル名をサイト名に合わせる
- 設定変更後は
apache2ctl configtestを実行してから reload する - TLS、PHP、HTTP/2、WAF は基本設定が安定してから追加する
まとめ
Ubuntu 22.04 の Apache 基本構築では、パッケージのインストール、DocumentRoot、VirtualHost、サイト有効化、設定検査、HTTP 応答確認を順に行います。
Apache は機能を追加しやすい一方で、設定の責務が混ざると分かりにくくなります。まず HTTP の基本サイトを安定させ、その後に TLS、PHP、HTTP/2、WAF を追加する流れにすると管理しやすくなります。


