2026年7月12日
2026年7月12日
Apacheのインストール方法(Ubuntu/AlmaLinux・Rocky Linuxなど旧CentOS系別)
ApacheはUbuntuでは apache2、AlmaLinuxやRocky LinuxなどのRHEL系(旧CentOS系)では httpd というパッケージ名で、OS標準のパッケージ管理コマンドから1行でインストールできます。この記事では、両系統それぞれのインストールから自動起動、ファイアウォールの開放、動作確認までの手順と、設定ファイルの場所の違い、WordPressを載せる前に済ませておきたい設定、起動しないときの調べ方をまとめます。
始める前に: OSのバージョンとCentOSの現状
CentOS Linux 8は2021年末に、CentOS Linux 7は2024年6月末にサポートが終了しており、セキュリティ更新は提供されていません。これから新しくサーバーを用意するなら、RHEL互換のAlmaLinuxやRocky Linux、またはUbuntuのLTS版を選ぶのが一般的です(2026年10月現在)。CentOS Streamも選択肢ですが、RHELの次期版に先行する開発ブランチという位置づけなので、性格の違いを理解したうえで選んでください。
この記事のコマンドは、Ubuntu 22.04 LTS / 24.04 LTS、AlmaLinux 9 / Rocky Linux 9 を想定しています。これより新しい版でも基本の手順は同じですが、パッケージに含まれるApacheやPHPのバージョンは異なります。どちらの系統でも入るのはApache 2.4系です。
作業は sudo が使える一般ユーザーで行います。クラウドのVPSでは、OSのファイアウォールとは別に、管理画面側のセキュリティグループやパケットフィルターでもポート80・443を許可する必要がある場合があるので、あわせて確認してください。
Ubuntuでのインストール
パッケージを入れて起動を確認する
sudo apt update
sudo apt install apache2
systemctl status apache2
Ubuntuではインストールと同時にApacheが起動し、OS起動時の自動起動も有効になります。status の出力に active (running) と出ていれば動いています。自動起動が無効になっている場合は sudo systemctl enable --now apache2 で有効にします。
ファイアウォールを開ける
UFWを使っている場合は、Apache用に用意されたアプリケーションプロファイルで許可します。
sudo ufw app list
sudo ufw allow 'Apache Full' # 80番と443番
sudo ufw status
Apache は80番だけ、Apache Secure は443番だけ、Apache Full は両方を許可するプロファイルです。SSHで接続している場合は、UFWを有効にする前に OpenSSH も許可しておかないと、接続できなくなります。
Ubuntuの設定ファイルの構成
UbuntuのApacheは、設定を役割ごとのディレクトリに分けて、専用のコマンドで有効・無効を切り替える構成です。
/etc/apache2/apache2.conf: 全体の設定/etc/apache2/sites-available/: サイト(バーチャルホスト)の設定。a2ensite/a2dissiteで切り替え/etc/apache2/mods-available/: モジュール。a2enmod/a2dismodで切り替え/etc/apache2/conf-available/: 追加の設定。a2enconf/a2disconfで切り替え- 公開ディレクトリの初期値は
/var/www/html、ログは/var/log/apache2/ - 実行ユーザーは
www-data
AlmaLinux・Rocky LinuxなどRHEL系でのインストール
パッケージを入れて起動する
sudo dnf install httpd
sudo systemctl enable --now httpd
systemctl status httpd
RHEL系ではインストールしただけでは起動しないため、enable --now で起動と自動起動の設定を同時に行います。
firewalldでポートを開ける
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-services
--permanent を付けた設定は --reload するまで反映されません。逆に --permanent を付けずに追加すると、再起動で消えてしまいます。
RHEL系の設定ファイルの構成とSELinux
/etc/httpd/conf/httpd.conf: 全体の設定/etc/httpd/conf.d/*.conf: サイトや追加設定。ここに置いた.confファイルが読み込まれます/etc/httpd/conf.modules.d/: モジュールの読み込み設定- 公開ディレクトリの初期値は
/var/www/html、ログは/var/log/httpd/ - 実行ユーザーは
apache
RHEL系で最もつまずきやすいのがSELinuxです。初期状態で有効になっており、Apacheが読み書きできるファイルは「ラベル」で制限されています。/var/www/html 以外の場所を公開ディレクトリにしたり、WordPressのアップロード用ディレクトリに書き込ませたりするときは、ラベルの設定が必要です。
# 書き込みを許可するディレクトリにラベルを付ける(例)
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/wp-content(/.*)?"
sudo restorecon -Rv /var/www/html/wp-content
# Apache(PHP)から外部への通信を許可する(更新チェックや外部APIを使う場合)
sudo setsebool -P httpd_can_network_connect on
semanage が見つからない場合は policycoreutils-python-utils パッケージに含まれています。権限エラーが出たからといってSELinuxを無効にするのは避け、/var/log/audit/audit.log で拒否の記録を確認してから、必要なラベルや設定だけを許可してください。
動作確認
サーバー上で次のコマンドを実行し、ステータスコードが返ってくるか確認します。
curl -I http://localhost/
Ubuntuでは初期ページの /var/www/html/index.html が表示されるため 200 OK が返ります。RHEL系では公開ディレクトリが空の状態だとテストページ(/etc/httpd/conf.d/welcome.conf によるもの)が表示され、ステータスは 403 になるのが通常の動作です。続いて、手元のブラウザから http://サーバーのIPアドレス/ を開いて同じページが見えれば、ファイアウォールも通っています。
設定ファイルを編集したら、再読み込みの前に文法チェックを行う習慣をつけてください。
sudo apachectl configtest # Syntax OK と出れば問題なし
sudo systemctl reload apache2 # RHEL系は httpd
reload は接続中の通信を切らずに設定を読み直します。モジュールの追加など一部の変更では restart が必要です。
WordPressを載せる前にしておきたい設定
mod_rewriteと.htaccess: WordPressのパーマリンクは .htaccess の書き換えルールで動きます。Ubuntuでは sudo a2enmod rewrite でモジュールを有効にします。RHEL系では初期状態で読み込まれています。どちらも、公開ディレクトリに対する AllowOverride が初期値の None のままだと .htaccess が無視されるため、サイトの設定で AllowOverride All などに変更します。具体的な書き方はバーチャルホストの設定で扱います。
PHPとの連携: 現在はPHP-FPMとつなぐ構成が主流です。RHEL系では sudo dnf install php php-fpm php-mysqlnd などで入れると、/etc/httpd/conf.d/php.conf によってPHP-FPM経由で動く設定になります。Ubuntuで libapache2-mod-php を使う方法は手軽ですが、MPMがpreforkに固定されます。性能や複数のPHPバージョンの使い分けを考えるならPHP-FPMとevent MPMの組み合わせを検討してください。
バージョン情報を隠す: 初期設定ではエラーページやレスポンスヘッダーにApacheやOSの情報が出ます。ServerTokens Prod と ServerSignature Off を設定すると表示を最小限にできます。Ubuntuでは /etc/apache2/conf-available/security.conf に項目があります。これだけで攻撃を防げるわけではなく、OSのパッケージ更新を定期的に適用することのほうが重要です。
起動しないときの調べ方
起動に失敗したら、まずログを見ます。
sudo journalctl -u apache2 -n 50 --no-pager # RHEL系は -u httpd
sudo apachectl configtest
よくある原因は次のとおりです。
- 設定ファイルの文法エラー:
configtestがファイル名と行番号を示すので、その行を直します。 - ポート80がすでに使われている:
sudo ss -tlnp | grep ':80 'で、Nginxなど別のソフトがポートを使っていないか確認します。同居させる場合は片方のポートを変えるか、リバースプロキシ構成にします。 - 証明書ファイルが読めない: SSLの設定で指定したファイルのパスや権限が間違っていると起動に失敗します。RHEL系ではSELinuxのラベルも確認します。
まとめ
- Ubuntuは
apt install apache2、RHEL系はdnf install httpdでインストールし、RHEL系はsystemctl enable --now httpdで起動します。 - UFWでは
Apache Full、firewalldではhttpとhttpsのサービスを許可します。クラウド側のファイアウォールも確認します。 - 設定の場所はUbuntuが
/etc/apache2/(a2ensite等で切り替え)、RHEL系が/etc/httpd/(conf.dに配置)と大きく異なります。 - RHEL系ではSELinuxのラベル設定が必要な場面があります。無効化せず、必要な許可だけを加えます。
- 設定変更のたびに
apachectl configtestで文法を確認してからreloadします。