Apache:インストールとバーチャルホスト
VPSへのApacheのインストール、バーチャルホストとモジュールの設定、ポート80でのNginxとのよくある競合のトラブルシューティングを説明します。
更新日 2026年8月23日
.htaccess や古い CMS、アプリケーション開発者が用意した既成のガイドが必要な場合は Apache を選びます。Nginx よりメモリを多く消費しますが、小さなサイトを 1 つ動かす VDS-1 では気にならないでしょう。
インストール
apt update && apt install -y apache2 # Debian, Ubuntu
dnf install -y httpd && systemctl enable --now httpd # AlmaLinux, CentOS Stream
サービス名は異なります。Debian と Ubuntu では apache2、RHEL 系では httpd です。設定ディレクトリも異なり、/etc/apache2 と /etc/httpd になります。
確認します。
systemctl status apache2
curl -I http://127.0.0.1
バーチャルホスト
ファイル /etc/apache2/sites-available/example.ru.conf:
<VirtualHost *:80>
ServerName example.ru
ServerAlias www.example.ru
DocumentRoot /var/www/example.ru
<Directory /var/www/example.ru>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.ru-error.log
CustomLog ${APACHE_LOG_DIR}/example.ru-access.log combined
</VirtualHost>
有効化と確認:
a2ensite example.ru
a2dissite 000-default
apachectl configtest && systemctl reload apache2
AllowOverride All は、実際に .htaccess を使う場合にのみ必要です。使わない場合は None を設定してください。そうすれば Apache はリクエストのたびに各ディレクトリでこれらのファイルを探さなくなります。
モジュール
a2enmod rewrite headers ssl
systemctl restart apache2
有効になっているモジュールの一覧を表示するには apache2ctl -M を実行します。すべてを有効にしないでください。どのモジュールもすべてのワーカープロセスに読み込まれます。
PHP には、古くなった mod_php ではなく PHP-FPM を使用してください: PHP-FPM。
Apache と Nginx の併用
どちらのサーバーもデフォルトでポート 80 をリッスンするため、2 つ目は起動せずに Address already in use を出力します。選択肢は 2 つあります。
- どちらか一方のサーバーだけを残す。
- Nginx を前面に置き、Apache を
Listen 127.0.0.1:8080に切り替えてプロキシする — リバースプロキシを参照してください。
ポートを使用しているプロセスを確認するには:
ss -tulpn | grep :80
よくあるエラー
| 症状 | 原因 |
|---|---|
AH00558: Could not reliably determine ... server's fully qualified domain name | ServerName が設定されていません。警告ですが、設定しておきましょう |
.htaccess が機能しない | Directory ブロック内の AllowOverride None |
| 編集後にサービスが起動しない | 構文エラーです。リロードの前に必ず apachectl configtest を実行してください |
| ディレクトリで 403 | Require all granted がない、または www-data に権限がない |
ログ: /var/log/apache2/(Debian、Ubuntu)または /var/log/httpd/(AlmaLinux)。
編集のたびに設定をコピーしてください:
cp file file.bak。仮想マシンでは、1 時間前に何を変更したかを思い出そうとするより、ロールバックするほうが簡単です。