Apache выбирают, когда сайту нужен .htaccess — например, для старых PHP-проектов, которые сами настраивают перенаправления. Для новых проектов обычно достаточно Nginx. Не запускайте оба сервера на порту 80 одновременно.
Установка
$ apt update$ apt install -y apache2$ systemctl enable --now apache2$ ufw allow 'Apache Full'Виртуальный хост
$ mkdir -p /var/www/example.com$ echo '<h1>example.com на Apache</h1>' > /var/www/example.com/index.html$ chown -R www-data:www-data /var/www/example.com$ nano /etc/apache2/sites-available/example.com.conf<VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com <Directory /var/www/example.com> AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/example.com-error.log CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined</VirtualHost>AllowOverride All разрешает .htaccess в каталоге сайта. Если он не нужен, поставьте None — Apache не будет искать этот файл на каждом запросе.
$ a2ensite example.com.conf$ a2dissite 000-default.conf$ a2enmod rewrite$ apache2ctl configtest$ systemctl reload apache2HTTPS
$ apt install -y certbot python3-certbot-apache$ certbot --apache -d example.com -d www.example.com$ certbot renew --dry-runCertbot создаст файл example.com-le-ssl.conf с блоком для порта 443 и добавит перенаправление с HTTP.
Проверьте результат
$ apache2ctl -S$ curl -I https://example.com$ systemctl status apache2 --no-pagerapache2ctl -S покажет, какие виртуальные хосты загружены и какой из них используется по умолчанию.
Частые ошибки
- «Address already in use» при запуске — порт 80 занят Nginx. Остановите один из серверов или переведите Apache на другой порт за Nginx.
- .htaccess игнорируется — не включён mod_rewrite или стоит
AllowOverride None. - Открывается стандартная страница Apache — не отключён 000-default.conf или ServerName не совпадает с доменом.