この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:7
ページ更新者:atom
更新日時:2026-06-11 07:07:02

タイトル: インストール方法(Ubuntu)
SEOタイトル: Ubuntu Apache インストール完全ガイド (apt / VirtualHost / SSL / PHP-FPM)

この記事の要点
  • sudo apt update && sudo apt install -y apache2 で完了。systemctl status apache2 で起動確認
  • http://localhost で Apache 標準ページが表示されれば成功
  • UFWsudo ufw allow "Apache Full" して 80/443 開放
  • VirtualHost は /etc/apache2/sites-available/ に作成、a2ensite で有効化
  • Let's Encrypt + certbot で SSL 自動取得・自動更新

Ubuntu に Apache をインストール

1. パッケージインストール

# パッケージリスト更新
sudo apt update

# Apache 本体インストール
sudo apt install -y apache2

# バージョン確認
apache2 -v
# Server version: Apache/2.4.58 (Ubuntu)

# サービス起動状況
sudo systemctl status apache2
# Active: active (running) と表示されれば OK

2. ブラウザで動作確認

サーバ上で curl http://localhost、または同一 LAN の PC から http://<サーバ IP> にアクセス。Apache の Ubuntu 標準ページが表示されれば成功です。

# サーバ自身の IP 確認
ip a | grep inet
# または
hostname -I

サービス操作(systemctl)

sudo systemctl start    apache2     # 起動
sudo systemctl stop     apache2     # 停止
sudo systemctl restart  apache2     # 再起動
sudo systemctl reload   apache2     # 設定再読込(無停止)
sudo systemctl enable   apache2     # 自動起動 ON
sudo systemctl disable  apache2     # 自動起動 OFF
sudo systemctl status   apache2     # 状態表示

# apache2ctl 経由でも可
sudo apache2ctl start
sudo apache2ctl configtest          # 設定構文チェック
sudo apache2ctl -M                  # ロード済モジュール一覧

ファイアウォール (UFW) で 80/443 開放

# UFW プロファイル一覧
sudo ufw app list
# Apache              (ポート 80)
# Apache Full         (ポート 80, 443)
# Apache Secure       (ポート 443)

# HTTP + HTTPS 両方開ける
sudo ufw allow 'Apache Full'

# 確認
sudo ufw status
# Apache Full                ALLOW       Anywhere

主要ディレクトリ構成

パス役割
/etc/apache2/apache2.confメイン設定ファイル
/etc/apache2/ports.confリッスンポート設定
/etc/apache2/sites-available/VirtualHost 定義(無効状態)
/etc/apache2/sites-enabled/有効化された VirtualHost(シンボリックリンク)
/etc/apache2/mods-available/モジュール設定
/etc/apache2/mods-enabled/有効化されたモジュール
/var/www/html/デフォルトドキュメントルート
/var/log/apache2/access.logアクセスログ
/var/log/apache2/error.logエラーログ

VirtualHost 設定

複数のドメインを 1 つの Apache でホストする仕組みです:

# 1. ドキュメントルート作成
sudo mkdir -p /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example.com
echo "

example.com

" > /var/www/example.com/html/index.html # 2. VirtualHost 設定ファイル作成 sudo nano /etc/apache2/sites-available/example.com.conf

    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/html

    
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    

    ErrorLog  ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
# 3. サイトを有効化(シンボリックリンク作成)
sudo a2ensite example.com.conf

# デフォルトサイトを無効化(任意)
sudo a2dissite 000-default.conf

# 4. 構文チェック
sudo apache2ctl configtest
# Syntax OK

# 5. 反映
sudo systemctl reload apache2

モジュール有効化(a2enmod / a2dismod)

# よく使うモジュール
sudo a2enmod rewrite      # mod_rewrite (.htaccess の RewriteRule)
sudo a2enmod ssl          # SSL/TLS
sudo a2enmod headers      # Header ディレクティブ
sudo a2enmod proxy        # リバプロ
sudo a2enmod proxy_http
sudo a2enmod proxy_fcgi   # PHP-FPM 連携

# 反映
sudo systemctl restart apache2

# 一覧
sudo apache2ctl -M

SSL/TLS: Let's Encrypt + certbot

無料 SSL 証明書を自動取得・自動更新できます:

# certbot インストール
sudo apt install -y certbot python3-certbot-apache

# Apache プラグインで証明書取得 + Apache 設定自動更新
sudo certbot --apache -d example.com -d www.example.com

# 対話で
# - メールアドレス入力
# - 利用規約に同意
# - HTTP → HTTPS リダイレクトする? → 2 (Redirect)

# 自動更新(systemd timer が標準で入る)
sudo systemctl list-timers | grep certbot
sudo certbot renew --dry-run    # 更新リハーサル

PHP との連携(PHP-FPM)

Apache で PHP を動かすには mod_php または PHP-FPM + mod_proxy_fcgi の 2 通り。現在はPHP-FPM 推奨:

# PHP 8.x + FPM インストール
sudo apt install -y php-fpm php-mysql

# 必要モジュール有効化
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.3-fpm    # バージョン読み替え

# Apache 再起動
sudo systemctl restart apache2

# 動作確認
echo "" | sudo tee /var/www/html/info.php
# ブラウザで http://localhost/info.php

ログの確認

# アクセスログをリアルタイム監視
sudo tail -f /var/log/apache2/access.log

# エラーログをリアルタイム監視
sudo tail -f /var/log/apache2/error.log

# 特定 VirtualHost のログ
sudo tail -f /var/log/apache2/example.com_error.log

# ステータスコード集計
awk '{print $9}' /var/log/apache2/access.log | sort | uniq -c | sort -rn

パーミッション

# Apache 実行ユーザ確認
ps aux | grep apache2
# www-data ユーザーで動作

# ドキュメントルート権限
sudo chown -R www-data:www-data /var/www/example.com
sudo find /var/www/example.com -type d -exec chmod 755 {} \;
sudo find /var/www/example.com -type f -exec chmod 644 {} \;

# CGI / アップロードディレクトリだけ書込許可
sudo chmod 775 /var/www/example.com/html/uploads

よくあるトラブル

症状原因対処
403 Forbidden権限 / Require / Options 設定chmod 755 + Require all granted
404 Not FoundDocumentRoot 誤り / index.html 無しパス再確認、DirectoryIndex 設定
500 Internal Server ErrorPHP エラー / .htaccess 誤記error.log 確認
外部からアクセス不可UFW / クラウドのセキュリティグループ80/443 開放
.htaccess が効かないAllowOverride NoneAllowOverride All + mod_rewrite 有効化

FAQ

Q: Apache と Nginx、どちらを選ぶ?
A: .htaccess や mod_php に慣れていれば Apache、高負荷静的配信や軽量さなら Nginx。WordPress 等の CMS は Apache が伝統的。

Q: ポート 80 を別のプロセスが使っている
A: sudo lsof -i:80 で確認し、不要なら停止。Nginx と共存させたいなら片方を別ポートに。

Q: SSL の自動更新は本当に動いている?
A: sudo systemctl status certbot.timer でタイマー有効を確認、sudo certbot renew --dry-run でリハーサル成功すれば OK。