Подробный гайд: Установка и настройка Nginx на ALT Server
Примечание:
ALT Server использует пакетный менеджер apt-rpm (фронтенд apt-get), систему инициализации systemd и по умолчанию firewalld. Пакет nginx в ALT собираются из оригинальных исходников, поэтому структура конфигов и команды управления идентичны upstream-версии.
1. Подготовка системы
1. Обновите репозитории и установленные пакеты:
sudo apt-get update
sudo apt-get upgrade -y
2. Убедитесь, что порты 80/443 свободны (нет конфликта с Apache/httpd, который может быть предустановлен):
sudo ss -tulpn | grep -E ':80|:443'
Если видите httpd или apache2, остановите и отключите его:
sudo systemctl stop httpd
sudo systemctl disable httpd
2. Установка Nginx
sudo apt-get install nginx -y
Проверка версии и сборки:
nginx -v
nginx -V # покажет флаги компиляции и пути
В ALT Server пакет nginx устанавливает минимальный набор модулей. Если нужны дополнительные (например, mod_http_geoip, mod_http_v2, mod_mail), установите nginx-full или соберите из nginx-src (репозиторий sisyphus или p10/p11).
3. Запуск, автозагрузка и базовая проверка
sudo systemctl enable --now nginx
sudo systemctl status nginx
Проверьте синтаксис конфигурации:
sudo nginx -t
Откройте в браузере http://<IP_СЕРВЕРА>. Должна появиться стандартная страница Welcome to nginx!.
Логи:
- Ошибки:
/var/log/nginx/error.log - Доступ:
/var/log/nginx/access.log
4. Настройка виртуальных хостов (Server Blocks)
В ALT Server по умолчанию используется директория /etc/nginx/conf.d/ для подключения дополнительных конфигов.
4.1. Создайте директорию для сайта
sudo mkdir -p /var/www/example.com/html
sudo chown -R nginx:nginx /var/www/example.com
sudo chmod -R 755 /var/www/example.com
4.2. Создайте конфиг хоста
sudo nano /etc/nginx/conf.d/example.com.conf
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
# Логирование отдельно для хоста
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
}
4.3. Примените изменения
sudo nginx -t && sudo systemctl reload nginx
Важно:
Никогда не делайте restart в продакшене без крайней необходимости. reload перечитывает конфиг без обрыва соединений.
5. Настройка SSL/TLS (Let's Encrypt)
5.1. Установка Certbot
В ALT p10/p11/Sisyphus пакеты доступны в основном репозитории:
sudo apt-get install certbot certbot-nginx -y
(Если пакет не найден, используйте python3-module-certbot-nginx или установите вручную из EPEL/Sisyphus)
5.2. Получение сертификата
sudo certbot --nginx -d example.com -d www.example.com
Certbot автоматически:
- Подтвердит права на домен (HTTP-01 challenge)
- Изменит ваш конфиг, добавив
listen 443 ssl, пути к сертификатам и редирект с 80 на 443 - Настроит автообновление через
systemd-таймер
5.3. Проверка автообновления
sudo systemctl status certbot-renew.timer
sudo certbot renew --dry-run
6. Настройка брандмауэра
ALT Server по умолчанию использует firewalld.
sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Проверка:
sudo firewall-cmd --list-all
Если у вас nftables или iptables, откройте порты явно:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo service iptables save # или nftables аналог
7. Управление и полезные команды
| Команда | Описание |
|---|---|
sudo nginx -t |
Проверка синтаксиса конфигов |
sudo systemctl reload nginx |
Перезагрузка конфигов без разрыва сессий |
sudo systemctl restart nginx |
Полный перезапуск службы |
sudo systemctl stop/start nginx |
Остановка/запуск |
sudo nginx -s quit |
Корректное завершение рабочих процессов |
sudo nginx -s reopen |
Перезапуск лог-файлов (после ротации) |
journalctl -u nginx -f |
Просмотр логов в реальном времени |
8. Диагностика типовых проблем
| Ошибка | Причина | Решение |
|---|---|---|
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) |
Порт занят другим процессом | sudo ss -tulpn \| grep :80 → остановите конфликтующую службу или измените listen |
403 Forbidden |
Неправильные права или нет index файла |
sudo chown -R nginx:nginx /var/www/..., проверьте autoindex off и наличие index.html |
502 Bad Gateway (при проксировании) |
Бэкенд не отвечает или недоступен | Проверьте proxy_pass, статус бэкенда, SELinux/AppArmor (в ALT обычно отключены) |
nginx.service failed после reload |
Синтаксическая ошибка | sudo nginx -t → исправьте строку из вывода ошибки |
| Сертификат не обновляется | Блокировка файрволом или DNS | Проверьте доступность .well-known/acme-challenge/ извне |
9. Особенности ALT Server
- Пакетный менеджер:
apt-getработает с RPM-базами. Команды идентичны Debian, но под капотомapt-rpm.
2. Структура конфигов:
- Главный:
/etc/nginx/nginx.conf - Дополнительные:
/etc/nginx/conf.d/*.conf - Модули:
/etc/nginx/modules/- Пользователь и группа:
nginx:nginx(неwww-dataкак в Debian) - Документация:
/usr/share/doc/nginx/иman nginx
- Пользователь и группа:
5. Репозитории:
p10/p11— стабильные ветки (рекомендуется для продакшена)sisyphus— rolling, самые свежие версии- Ротация логов: Настраивается через
/etc/logrotate.d/nginx(включено по умолчанию)
- Ротация логов: Настраивается через
Чек-лист после установки
- [ ]
nginx -t→syntax is ok - [ ]
systemctl is-active nginx→active - [ ] Файрвол открыт на 80/443
- [ ] Страница отдаётся по HTTP
- [ ] SSL настроен и валиден (
https://your-domain) - [ ]
certbot renew --dry-runпроходит успешно - [ ] Логи пишутся в
/var/log/nginx/ - [ ] Права на web-директории:
nginx:nginx,755/644