6. Настройка
Раздел содержит прикладные настройки сопровождения SaaS-инфраструктуры: мониторинг служб, просмотр журналов, обновления, безопасность и регламент обслуживания.
6.1. Состав настройки
| Направление | Что настраивается | Результат |
|---|---|---|
| Службы | автозапуск SSH, Nginx, PHP-FPM, Apache, Redis | сервисы запускаются после перезагрузки |
| Журналы | логи Nginx, Apache, Redis, backup | администратор видит ошибки и события |
| Firewall | разрешены только нужные порты | внешний доступ ограничен |
| Обновления | регламент обновления пакетов | обновления выполняются контролируемо |
| Backup | cron-задача и проверка архивов | резервные копии создаются по расписанию |
| Документация | фиксация параметров сервера | состояние инфраструктуры описано |
6.2. Автозапуск служб
Включить автозапуск основных служб:
sudo systemctl enable ssh
sudo systemctl enable nginx
sudo systemctl enable php*-fpm
sudo systemctl enable apache2
sudo systemctl enable redis-server
Проверить состояние служб:
sudo systemctl status ssh
sudo systemctl status nginx
sudo systemctl status php*-fpm
sudo systemctl status apache2
sudo systemctl status redis-server
Ожидаемый результат:
active (running)
6.3. Настройка firewall
Разрешить только необходимые внешние порты:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Проверить правила:
sudo ufw status verbose
| Порт | Назначение | Доступ |
|---|---|---|
22/tcp |
SSH | внешний доступ администратора |
80/tcp |
HTTP | редирект на HTTPS |
443/tcp |
HTTPS | основной web-доступ |
8080/tcp |
Apache backend | не открывать во внешнюю сеть |
6379/tcp |
Redis | не открывать во внешнюю сеть |
6.4. Настройка Nginx
Проверить конфигурацию сайта:
sudo nano /etc/nginx/sites-available/saas-app
Минимальная рабочая конфигурация HTTPS + PHP-FPM:
server {
listen 80;
server_name saas-node-01.local 192.168.1.50;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name saas-node-01.local 192.168.1.50;
root /var/www/saas-app/public;
index index.php index.html;
ssl_certificate /etc/nginx/ssl/saas-app.crt;
ssl_certificate_key /etc/nginx/ssl/saas-app.key;
access_log /var/log/nginx/saas-app.access.log;
error_log /var/log/nginx/saas-app.error.log;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Проверить и применить:
sudo nginx -t
sudo systemctl reload nginx
Если используется PHP 8.3 или другая версия, заменить
/run/php/php8.2-fpm.sock на фактический socket из каталога
/run/php/
.
6.5. Настройка PHP-FPM
Определить установленную версию PHP-FPM:
ls /run/php/
systemctl status php*-fpm
php -v
Проверить основные параметры PHP:
php -i | grep "memory_limit"
php -i | grep "upload_max_filesize"
php -i | grep "post_max_size"
php -i | grep "max_execution_time"
При необходимости открыть файл настройки PHP-FPM:
sudo nano /etc/php/8.2/fpm/php.ini
Рекомендуемые значения для учебного стенда:
memory_limit = 256M
upload_max_filesize = 32M
post_max_size = 32M
max_execution_time = 60
Применить изменения:
sudo systemctl restart php*-fpm
sudo systemctl status php*-fpm
6.6. Настройка Apache
Проверить, что Apache используется как внутренний backend:
sudo nano /etc/apache2/ports.conf
Ожидаемая строка:
Listen 127.0.0.1:8080
Проверить виртуальный хост:
sudo nano /etc/apache2/sites-available/saas-app.conf
Проверить конфигурацию и перезапустить службу:
sudo apache2ctl configtest
sudo systemctl restart apache2
sudo systemctl status apache2
Ожидаемый результат:
Syntax OK
active (running)
6.7. Настройка Redis
Открыть конфигурацию Redis:
sudo nano /etc/redis/redis.conf
Проверить параметры:
bind 127.0.0.1 ::1
protected-mode yes
Перезапустить Redis:
sudo systemctl restart redis-server
sudo systemctl status redis-server
redis-cli ping
Ожидаемый результат:
PONG
Проверить порт Redis:
sudo ss -tulpn | grep 6379
Ожидаемый адрес:
127.0.0.1:6379
6.8. Настройка журналов
Проверить журналы Nginx:
sudo tail -n 50 /var/log/nginx/saas-app.access.log
sudo tail -n 50 /var/log/nginx/saas-app.error.log
Проверить журналы Apache:
sudo tail -n 50 /var/log/apache2/saas-app.access.log
sudo tail -n 50 /var/log/apache2/saas-app.error.log
Проверить журналы Redis и PHP-FPM:
sudo journalctl -u redis-server -n 50
sudo journalctl -u php*-fpm -n 50
Проверить журнал backup:
tail -n 50 /opt/saas/logs/backup.log
tail -n 50 /opt/saas/logs/backup-cron.log
6.9. Настройка ротации журналов
Создать файл logrotate для журналов проекта:
sudo nano /etc/logrotate.d/saas-app
Содержимое файла:
/var/log/nginx/saas-app.*.log
/var/log/apache2/saas-app.*.log
/opt/saas/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
Проверить конфигурацию logrotate:
sudo logrotate -d /etc/logrotate.d/saas-app
6.10. Настройка резервного копирования
Проверить наличие backup-скрипта:
ls -l /opt/saas/scripts/backup-saas.sh
Проверить ручной запуск:
bash /opt/saas/scripts/backup-saas.sh
ls -lh /opt/saas/backups
Проверить cron-задачу:
sudo crontab -l
Ожидаемая строка:
30 2 * * * /opt/saas/scripts/backup-saas.sh >> /opt/saas/logs/backup-cron.log 2>&1
6.11. Регламент обновлений
Перед обновлением выполнить backup:
bash /opt/saas/scripts/backup-saas.sh
Проверить список доступных обновлений:
sudo apt update
apt list --upgradable
Установить обновления:
sudo apt upgrade -y
После обновления проверить службы:
sudo systemctl status nginx
sudo systemctl status php*-fpm
sudo systemctl status apache2
sudo systemctl status redis-server
Проверить приложение:
curl -k -I https://localhost
curl -k https://localhost
6.12. Регламент изменения конфигурации
Перед изменением конфигурационных файлов создавать копию:
sudo cp /etc/nginx/sites-available/saas-app /etc/nginx/sites-available/saas-app.bak
sudo cp /etc/apache2/sites-available/saas-app.conf /etc/apache2/sites-available/saas-app.conf.bak
sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.bak
После изменения проверять конфигурацию:
sudo nginx -t
sudo apache2ctl configtest
redis-cli ping
Если проверка успешна, применить изменения:
sudo systemctl reload nginx
sudo systemctl restart apache2
sudo systemctl restart redis-server
6.13. Документирование параметров сервера
Создать файл с параметрами стенда:
nano /opt/saas/data/server-info.txt
Заполнить:
Hostname:
IP-address:
OS:
Nginx version:
PHP version:
PHP-FPM socket:
Apache port:
Redis address:
Backup script:
Backup schedule:
Responsible person:
Last update date:
Команды для заполнения:
hostname
hostname -I
cat /etc/os-release
nginx -v
php -v
ls /run/php/
sudo ss -tulpn | grep -E '8080|6379'
sudo crontab -l
6.14. Итоговая таблица настройки
| Параметр | Команда проверки | Ожидаемый результат | Статус |
|---|---|---|---|
| SSH | systemctl status ssh |
active (running) |
выполнено / не выполнено |
| Nginx | nginx -t |
test is successful |
выполнено / не выполнено |
| PHP-FPM | systemctl status php*-fpm |
active (running) |
выполнено / не выполнено |
| Apache | apache2ctl configtest |
Syntax OK |
выполнено / не выполнено |
| Redis | redis-cli ping |
PONG |
выполнено / не выполнено |
| Firewall | ufw status verbose |
открыты только 22, 80, 443 | выполнено / не выполнено |
| Backup | backup-saas.sh |
архив создан | выполнено / не выполнено |
| Cron | crontab -l |
есть задача backup | выполнено / не выполнено |
| Журналы | tail, journalctl |
нет критических ошибок | выполнено / не выполнено |
6.15. Итог
Настройка считается выполненной, если:
- службы включены в автозапуск;
- firewall разрешает только необходимые внешние порты;
- Nginx корректно обрабатывает HTTPS и PHP;
- PHP-FPM работает;
- Apache работает на локальном backend-порту;
- Redis доступен только локально;
- backup запускается вручную и по cron;
- журналы доступны для диагностики;
- параметры сервера зафиксированы в документации.