Ubuntu 26.04 で Web サーバーを構成する場合、Apache は VirtualHost、モジュール、ディレクトリ単位の制御、PHP-FPM 連携、TLS、リバースプロキシなどを組み合わせて使えます。
この記事では、Ubuntu 26.04 に Apache を導入し、サービス、設定ファイル、default site、document root、セキュリティ関連の基本設定、ログ確認までを一通り確認します。
- Apache の役割と Nginx / PHP-FPM との分担
- パッケージ導入、サービス起動、設定検証
ServerName、default site、document root の基本security.confとwww-options.confの確認- ログ確認、PHP-FPM 連携、TLS / リバースプロキシへ進む前の土台
| 対象 OS | Ubuntu 26.04 Server |
|---|---|
| Web サーバー | Apache HTTP Server |
| サービス | apache2.service |
| 主な設定先 | /etc/apache2/、/etc/apache2/sites-available/、/etc/apache2/conf-available/ |
| 設定検証 | sudo apache2ctl -t |
Apache の役割を確認する
Apache は、静的ファイル配信だけでなく、VirtualHost、認証、アクセス制御、モジュールによる機能追加に強い Web サーバーです。Nginx と同じく前段の Web サーバーとして使えますが、設定構造やモジュールの扱いは Apache 独自です。
- VirtualHost でサイトごとの設定を分ける
a2enmodとa2dismodでモジュールを管理するa2ensiteとa2dissiteでサイトを有効化するconf-availableとconf-enabledで共通設定を分ける
Apache をインストールする
APT で Apache を導入し、サービスを有効化して起動します。Ubuntu ではパッケージ名が apache2、サービス名が apache2.service です。
sudo apt update
sudo apt install -y apache2
sudo systemctl enable --now apache2.service
systemctl status apache2.service --no-pager設定ファイルの構成を確認する
Apache の設定は /etc/apache2/ 配下に分かれています。サイト設定、モジュール設定、共通設定を分けて確認すると、変更箇所を追いやすくなります。
ls -l /etc/apache2/
ls -l /etc/apache2/sites-available/
ls -l /etc/apache2/sites-enabled/
ls -l /etc/apache2/conf-available/
ls -l /etc/apache2/conf-enabled/
sudo apache2ctl -tServerName を設定する
Apache では、グローバルな ServerName が未設定だと、設定検証や起動時に警告が出ることがあります。サーバーの FQDN を共通設定として置くと、警告を抑えつつ意図を明確にできます。
sudo tee /etc/apache2/conf-available/servername.conf >/dev/null <<'EOF'
ServerName www.example.com
EOF
sudo a2enconf servername
sudo apache2ctl -t
sudo systemctl reload apache2.servicedefault site と document root を確認する
標準の default site は /etc/apache2/sites-available/000-default.conf です。まずは document root とログ出力先を確認し、どの VirtualHost がリクエストを受けるかを把握します。
sudo apache2ctl -S
sudo sed -n '1,160p' /etc/apache2/sites-available/000-default.conf
ls -ld /var/www/html
ls -l /var/www/html最小の VirtualHost を作成する
サイトごとの設定を分ける場合は、document root を用意し、VirtualHost を sites-available に作成してから有効化します。ここでは例として www.example.com を使います。
sudo install -d -o www-data -g www-data -m 0755 /var/www/www.example.com/html
echo 'Apache on Ubuntu 26.04' | sudo tee /var/www/www.example.com/html/index.html >/dev/null
sudo tee /etc/apache2/sites-available/www.example.com.conf >/dev/null <<'EOF'
<VirtualHost *:80>
ServerName www.example.com
ServerAdmin webmaster@example.com
DocumentRoot /var/www/www.example.com/html
ErrorLog ${APACHE_LOG_DIR}/www.example.com-error.log
CustomLog ${APACHE_LOG_DIR}/www.example.com-access.log combined
</VirtualHost>
EOF
sudo a2ensite www.example.com.conf
sudo apache2ctl -t
sudo systemctl reload apache2.service
sudo apache2ctl -Sdocument root の Options を確認する
document root のディレクトリ制御では、Options、AllowOverride、Require を確認します。不要なディレクトリ一覧表示を避け、必要な範囲だけ公開するのが基本です。
sudo tee /etc/apache2/conf-available/www-options.conf >/dev/null <<'EOF'
<Directory /var/www/>
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
</Directory>
EOF
sudo a2enconf www-options
sudo apache2ctl -t
sudo systemctl reload apache2.service基本的なセキュリティ設定を確認する
Apache の応答ヘッダーや古い機能は、必要に応じて共通設定で抑制します。最初に確認したい代表例は ServerTokens、ServerSignature、TraceEnable です。
sudo tee /etc/apache2/conf-available/security-hardening.conf >/dev/null <<'EOF'
ServerTokens Prod
ServerSignature Off
TraceEnable Off
EOF
sudo a2enconf security-hardening
sudo apache2ctl -t
sudo systemctl reload apache2.service
curl -I http://www.example.com/PHP-FPM 連携の入口を確認する
Apache で PHP-FPM に処理を渡す場合は、proxy_fcgi と setenvif を有効化し、PHP ファイルの処理先を FPM socket に向けます。
sudo a2enmod proxy_fcgi
sudo a2enmod setenvif
sudo tee /etc/apache2/conf-available/php-fpm-8.5.conf >/dev/null <<'EOF'
<FilesMatch "\.php$">
SetHandler "proxy:unix:/run/php/php8.5-fpm.sock|fcgi://localhost/"
</FilesMatch>
EOF
sudo a2enconf php-fpm-8.5
sudo apache2ctl -t
sudo systemctl reload apache2.serviceログを確認する
Apache の切り分けでは、サービス状態、設定検証、VirtualHost 一覧、access log、error log をセットで確認します。502 や PHP の問題では、PHP-FPM 側のログも合わせて確認します。
systemctl status apache2.service --no-pager
sudo apache2ctl -t
sudo apache2ctl -S
sudo tail -n 100 /var/log/apache2/access.log
sudo tail -n 100 /var/log/apache2/error.log
journalctl -u apache2.service --no-pager -n 100公開前の確認ポイント
sudo apache2ctl -tが成功するsudo apache2ctl -Sで意図した VirtualHost が選ばれているServerNameを設定して警告を抑えている- 不要な default site や index ファイルを公開していない
ServerTokens Prod、ServerSignature Off、TraceEnable Offを確認している- TLS、リバースプロキシ、WAF は基本設定が安定してから追加する
まとめ
Ubuntu 26.04 の Apache 基本設定では、パッケージ導入、サービス起動、設定ファイル構成、ServerName、VirtualHost、document root、設定検証、ログ確認を順番に押さえます。
基本設定が安定していれば、次に TLS、リバースプロキシ、WAF、PHP-FPM 連携などを追加しやすくなります。まず apache2ctl -t と apache2ctl -S で、設定が意図どおり読まれていることを確認するのが大切です。

