Перейти к содержимому

Сайт на Apache с HTTPS

Установить Apache, создать виртуальный хост, включить mod_rewrite и выпустить сертификат Let’s Encrypt.

Уровень
Новичок
Время чтения
2 мин чтения
Обновлено
Проверено на
Ubuntu 22.04, Ubuntu 24.04, Debian 12
Содержание
  1. Установка
  2. Виртуальный хост
  3. HTTPS
  4. Проверьте результат
  5. Частые ошибки

Apache выбирают, когда сайту нужен .htaccess — например, для старых PHP-проектов, которые сами настраивают перенаправления. Для новых проектов обычно достаточно Nginx. Не запускайте оба сервера на порту 80 одновременно.

Установка

bash
$ apt update$ apt install -y apache2$ systemctl enable --now apache2$ ufw allow 'Apache Full'

Виртуальный хост

bash
$ 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
/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 не будет искать этот файл на каждом запросе.

bash
$ a2ensite example.com.conf$ a2dissite 000-default.conf$ a2enmod rewrite$ apache2ctl configtest$ systemctl reload apache2

HTTPS

bash
$ apt install -y certbot python3-certbot-apache$ certbot --apache -d example.com -d www.example.com$ certbot renew --dry-run

Certbot создаст файл example.com-le-ssl.conf с блоком для порта 443 и добавит перенаправление с HTTP.

Проверьте результат

bash
$ apache2ctl -S$ curl -I https://example.com$ systemctl status apache2 --no-pager

apache2ctl -S покажет, какие виртуальные хосты загружены и какой из них используется по умолчанию.

Частые ошибки

  • «Address already in use» при запуске — порт 80 занят Nginx. Остановите один из серверов или переведите Apache на другой порт за Nginx.
  • .htaccess игнорируется — не включён mod_rewrite или стоит AllowOverride None.
  • Открывается стандартная страница Apache — не отключён 000-default.conf или ServerName не совпадает с доменом.

Дочитайте до конца — статья засчитается в обучении автоматически.

  • Apache
  • apache2
  • VirtualHost
  • HTTPS
  • .htaccess

Статья помогла?