Подробный гайд: Apache HTTP Server на ALT Linux
Данный гайд охватывает установку, настройку, безопасность и обслуживание Apache в современных стабильных ветках ALT Linux (p10/p11). Все команды выполняются от имени пользователя с правами sudo.
1. Установка Apache
ALT Linux использует пакетный менеджер apt (на базе apt-rpm).
Apache в репозиториях называется apache2.
sudo apt-get update
sudo apt-get install apache2
Проверка версии:
apache2 -v
# или
httpd -v
В ALT Linux пакет apache2 уже включает базовые модули и утилиты a2enmod/a2ensite.
2. Запуск и управление службой
Apache управляется через systemd.
sudo systemctl start apache2
sudo systemctl enable apache2
sudo systemctl status apache2
Проверка доступности веб-сервера:
curl -I http://localhost
# или откройте в браузере http://<IP-адрес-сервера>
Настройка брандмауэра (если используется firewalld)
sudo apt-get install firewalld
sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
3. Структура конфигурации
| Путь | Назначение |
|---|---|
/etc/apache2/httpd.conf |
Главный конфигурационный файл |
/etc/apache2/conf-enabled/ |
Дополнительные параметры (Security, Charset, и т.д.) |
/etc/apache2/mods-available/ и /mods-enabled/ |
Доступные и включённые модули |
/etc/apache2/sites-available/ и /sites-enabled/ |
Виртуальные хосты |
/var/www/ |
Корневая директория сайтов |
/var/log/apache2/ |
Логи доступа и ошибок |
Проверка синтаксиса конфигурации перед перезагрузкой:
sudo apache2ctl configtest
# или
sudo httpd -t
4. Настройка виртуальных хостов
Создадим сайт example.com:
sudo mkdir -p /var/www/example.com/public_html
sudo chown -R apache:apache /var/www/example.com
sudo chmod -R 755 /var/www/example.com
Создаём конфигурацию:
sudo nano /etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
<Directory /var/www/example.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>
Активируем и перезагружаем:
sudo a2ensite example.com.conf
sudo apache2ctl graceful
# или
sudo systemctl reload apache2
a2ensite/a2dissite и a2enmod/a2dismod работают в ALT Linux из коробки. Если команда не найдена, убедитесь, что установлен пакет apache2.
5. Настройка HTTPS (SSL/TLS)
Вариант A: Самоподписанный сертификат (для тестов)
sudo mkdir -p /etc/apache2/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/apache2/ssl/apache.key \
-out /etc/apache2/ssl/apache.crt \
-subj "/C=RU/ST=Moscow/L=Moscow/O=Test/CN=example.com"
Добавьте в конфигурацию виртуального хоста:
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/example.com/public_html
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
<Directory /var/www/example.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Вариант B: Let's Encrypt (рекомендуется)
sudo apt-get install certbot python3-certbot-apache
sudo certbot --apache -d example.com -d www.example.com
Certbot автоматически создаст конфигурацию, настроит редирект HTTP→HTTPS и добавит cron для автообновления.
Включите модуль SSL (если не активен):
sudo a2enmod ssl
sudo systemctl reload apache2
6. Интеграция с PHP
ALT Linux предоставляет PHP через отдельные пакеты.
sudo apt-get install php php-common php-cli php-fpm
sudo a2enmod proxy_fcgi setenvif
sudo systemctl enable --now php-fpm
В конфиге виртуального хоста добавьте:
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost/"
</FilesMatch>
Альтернатива:
apache2-mod_php(модульmod_php). Установитеsudo apt-get install apache2-mod_php, затемsudo a2enmod php. FPM предпочтительнее для production.
Проверка:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/example.com/public_html/info.php
Откройте http://example.com/info.php.
7. Безопасность и рекомендации
7.1. Базовая настройка httpd.conf
ServerTokens Prod
ServerSignature Off
TraceEnable Off
7.2. Отключение листинга директорий
Убедитесь, что в <Directory> указано Options -Indexes.
7.3. Заголовки безопасности
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>
7.4. Права и владелец
sudo chown -R apache:apache /var/www/
sudo find /var/www/ -type d -exec chmod 755 {} \;
sudo find /var/www/ -type f -exec chmod 644 {} \;
7.5. Дополнительные модули (опционально)
sudo apt-get install apache2-mod_security2 apache2-mod_evasive
sudo a2enmod security2 evasive
8. Логи и диагностика
| Лог | Путь |
|---|---|
| Ошибки Apache | /var/log/apache2/error.log |
| Доступы | /var/log/apache2/access.log |
| Системный журнал | journalctl -u apache2 -f |
Полезные команды:
sudo apache2ctl status # Требует mod_status
sudo apachectl -S # Показать конфигурацию виртуальных хостов
sudo ss -tulnp | grep :80 # Проверить занятость порта
При включённой MAC-политике (SELinux/SMACK) в ALT Linux могут потребоваться дополнительные разрешения. По умолчанию в стабильных ветках они отключены.
9. Обновление и обслуживание
sudo apt-get update
sudo apt-get upgrade apache2
sudo systemctl reload apache2
Резервное копирование конфигурации:
sudo tar -czf ~/apache2-backup-$(date +%F).tar.gz /etc/apache2/
Мониторинг нагрузки:
sudo apt-get install apache2-utils
ab -n 1000 -c 50 http://localhost/
Примечания по ALT Linux
| Особенность | Значение |
|---|---|
| Пакет | apache2 |
| Служба | apache2.service |
| Пользователь/группа | apache:apache |
| Конфигурация | /etc/apache2/ (Debian-подобная структура) |
| Репозитории | p10 / p11 (стабильные), Sisyphus (rolling) |
| Менеджер пакетов | apt-get / apt (на базе apt-rpm) |
| Брандмауэр по умолчанию | Отключен (рекомендуется firewalld или iptables) |
Чек-лист перед production
- [ ] Проверен синтаксис:
apache2ctl configtest - [ ] Включён HTTPS (Let's Encrypt)
- [ ] Отключён
ServerSignatureиServerTokens - [ ] Права на
/var/www/корректны - [ ] Настроен ротатор логов (
logrotateуже включён по умолчанию) - [ ] Резервная копия
/etc/apache2/создана - [ ] Мониторинг подключён (Prometheus, Zabbix, или
apachectl status)