手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 Apache の基本設定 – Web サーバーの土台を作る

関連する記事

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.confwww-options.conf の確認
  • ログ確認、PHP-FPM 連携、TLS / リバースプロキシへ進む前の土台
対象 OSUbuntu 26.04 Server
Web サーバーApache HTTP Server
サービスapache2.service
主な設定先/etc/apache2//etc/apache2/sites-available//etc/apache2/conf-available/
設定検証sudo apache2ctl -t
参考書籍
参考書籍
Apache Cookbook
Apache の設定、VirtualHost、認証、リバースプロキシ、運用確認を実例で確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見る
このリンクは Amazon アソシエイトリンクです。

Apache の役割を確認する

Apache は、静的ファイル配信だけでなく、VirtualHost、認証、アクセス制御、モジュールによる機能追加に強い Web サーバーです。Nginx と同じく前段の Web サーバーとして使えますが、設定構造やモジュールの扱いは Apache 独自です。

  • VirtualHost でサイトごとの設定を分ける
  • a2enmoda2dismod でモジュールを管理する
  • a2ensitea2dissite でサイトを有効化する
  • conf-availableconf-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 -t

ServerName を設定する

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.service

default 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 -S

document root の Options を確認する

document root のディレクトリ制御では、OptionsAllowOverrideRequire を確認します。不要なディレクトリ一覧表示を避け、必要な範囲だけ公開するのが基本です。

コマンド
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 の応答ヘッダーや古い機能は、必要に応じて共通設定で抑制します。最初に確認したい代表例は ServerTokensServerSignatureTraceEnable です。

コマンド
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_fcgisetenvif を有効化し、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 ProdServerSignature OffTraceEnable Off を確認している
  • TLS、リバースプロキシ、WAF は基本設定が安定してから追加する

まとめ

Ubuntu 26.04 の Apache 基本設定では、パッケージ導入、サービス起動、設定ファイル構成、ServerName、VirtualHost、document root、設定検証、ログ確認を順番に押さえます。

基本設定が安定していれば、次に TLS、リバースプロキシ、WAF、PHP-FPM 連携などを追加しやすくなります。まず apache2ctl -tapache2ctl -S で、設定が意図どおり読まれていることを確認するのが大切です。

関連する記事
Ubuntu 26.04 Apache の基本設定 – Web サーバーの土台を作る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る