Skip to content
VDS · ウェブサイトとウェブサーバー

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 nameServerName が設定されていません。警告ですが、設定しておきましょう
.htaccess が機能しないDirectory ブロック内の AllowOverride None
編集後にサービスが起動しない構文エラーです。リロードの前に必ず apachectl configtest を実行してください
ディレクトリで 403Require all granted がない、または www-data に権限がない

ログ: /var/log/apache2/(Debian、Ubuntu)または /var/log/httpd/(AlmaLinux)。

編集のたびに設定をコピーしてください: cp file file.bak。仮想マシンでは、1 時間前に何を変更したかを思い出そうとするより、ロールバックするほうが簡単です。