Skip to content

📄 Apache2

1. Описание

Apache HTTP Server (или просто Apache) — это мощный, гибкий и широко используемый веб-сервер с открытым исходным кодом. В данном документе описаны основные шаги по установке, настройке и управлению Apache2 на операционной системе Ubuntu/Debian.


2. Установка Apache2

2.1 Обновление системы

sudo apt update && sudo apt upgrade -y

2.2 Установка Apache2

sudo apt install apache2 -y

2.3 Проверка статуса

sudo systemctl status apache2

Если сервис работает, вы увидите статус active (running).


3. Базовая настройка

3.1 Структура директорий Apache2

  • /var/www/html — корневая директория сайта по умолчанию.
  • /etc/apache2/apache2.conf — главный конфигурационный файл.
  • /etc/apache2/sites-available/ — конфигурации виртуальных хостов.
  • /etc/apache2/sites-enabled/ — активированные сайты.
  • /etc/apache2/mods-available/ — доступные модули.
  • /etc/apache2/mods-enabled/ — активные модули.
  • /var/log/apache2/ — логи сервера (access.log, error.log).

3.2 Перезагрузка и перезапуск

sudo systemctl reload apache2
sudo systemctl restart apache2

4. Настройка виртуального хоста

4.1 Создание директории сайта

sudo mkdir -p /var/www/example.com/public_html

4.2 Создание конфигурации

Создайте файл:

sudo nano /etc/apache2/sites-available/example.com.conf

Пример содержимого:

<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

4.3 Активация сайта

sudo a2ensite example.com.conf
sudo systemctl reload apache2

5. Работа с модулями

Apache поддерживает модульную архитектуру. Некоторые популярные модули:

  • mod_rewrite — ЧПУ
  • mod_ssl — HTTPS
  • mod_headers, mod_expires — кэширование
  • mod_deflate — сжатие

5.1 Включение/отключение модулей

sudo a2enmod rewrite headers deflate ssl
sudo a2dismod ssl
sudo systemctl restart apache2

6. Настройка брандмауэра (UFW)

Разрешить доступ через порты 80 и 443:

sudo ufw allow 'Apache Full'

Проверить:

sudo ufw status

7. Настройка SSL/TLS с Let’s Encrypt

7.1 Установка Certbot

sudo apt install certbot python3-certbot-apache

7.2 Получение сертификата

sudo certbot --apache -d example.com -d www.example.com

Certbot автоматически обновит конфигурацию Apache для HTTPS.

7.3 Автоматическое обновление сертификатов

sudo systemctl status certbot.timer

8. Логирование и диагностика

8.1 Логи

  • Access log: /var/log/apache2/access.log
  • Error log: /var/log/apache2/error.log

8.2 Анализ ошибок

tail -f /var/log/apache2/error.log

9. Полезные команды

Команда Описание
sudo systemctl status apache2 Проверка статуса сервера
sudo apachectl configtest Проверка конфигурации
sudo a2ensite example.com Активировать сайт
sudo a2dissite example.com Деактивировать сайт
sudo a2enmod ssl Включить модуль
sudo a2dismod ssl Выключить модуль

10. Безопасность

  • Отключите тестовую страницу Apache:
    bash sudo rm /var/www/html/index.html
  • Используйте .htaccess для защиты каталогов паролем: bash sudo htpasswd -c /path/.htpasswd username

Пример использования в .htaccess:

AuthType Basic
AuthName "Restricted Content"
AuthUserFile /path/.htpasswd
Require valid-user

📎 Приложения