5. Проверка

Раздел содержит команды для проверки готовности учебной SaaS-инфраструктуры после выполнения практических работ.

5.1. Состав проверки

Направление Что проверяется
ОС и сеть версия ОС, hostname, IP-адрес, gateway, DNS
Службы SSH, Nginx, PHP-FPM, Apache, Redis
Порты 22, 80, 443, 8080, 6379
Web-доступ HTTP, HTTPS, редирект HTTP → HTTPS
PHP выполнение PHP-кода через Nginx/PHP-FPM
Redis доступность Redis и работа тестовых ключей
Backup создание архива и восстановление данных

5.2. Проверка операционной системы

hostname
hostnamectl
cat /etc/os-release
uptime

Ожидаемый результат:

  • hostname соответствует имени сервера, например saas-node-01;
  • ОС — Debian 12 или Ubuntu Server LTS;
  • сервер работает без аварийной перезагрузки.

5.3. Проверка сетевой конфигурации

hostname -I
ip a
ip route
cat /etc/resolv.conf

Проверить доступность gateway и DNS:

ping -c 4 8.8.8.8
ping -c 4 debian.org
ping -c 4 ubuntu.com

Ожидаемый результат:

  • у сервера есть IP-адрес;
  • есть маршрут default via ...;
  • ping по IP работает;
  • ping по доменному имени работает.

5.4. Проверка служб

sudo systemctl status ssh
sudo systemctl status nginx
sudo systemctl status php*-fpm
sudo systemctl status apache2
sudo systemctl status redis-server

Ожидаемый результат для каждой службы:

active (running)

5.5. Проверка портов

sudo ss -tulpn
Порт Сервис Ожидаемое состояние
22/tcp SSH доступен для администрирования
80/tcp Nginx доступен, выполняет редирект на HTTPS
443/tcp Nginx доступен для HTTPS
127.0.0.1:8080 Apache доступен только локально
127.0.0.1:6379 Redis доступен только локально

5.6. Проверка firewall

sudo ufw status verbose

Ожидаемые разрешённые порты:

22/tcp
80/tcp
443/tcp

Порты 8080 и 6379 не должны быть открыты во внешнюю сеть.

5.7. Проверка Nginx

Проверить конфигурацию:

sudo nginx -t

Ожидаемый результат:

syntax is ok
test is successful

Проверить HTTP:

curl -I http://localhost

Ожидаемый результат:

HTTP/1.1 301 Moved Permanently

Проверить HTTPS:

curl -k -I https://localhost
curl -k https://localhost

Ожидаемый результат:

  • HTTPS возвращает HTTP-ответ;
  • страница содержит текст тестового PHP-приложения;
  • ошибок 502/503 нет.

5.8. Проверка PHP

php -v
php -m
systemctl status php*-fpm

Проверить PHP через веб-сервер:

curl -k https://localhost | grep "SaaS PHP backend is running"

Ожидаемый результат:

SaaS PHP backend is running

5.9. Проверка Apache

sudo apache2ctl configtest
sudo systemctl status apache2
curl http://127.0.0.1:8080

Ожидаемый результат:

  • apache2ctl configtest возвращает Syntax OK;
  • служба apache2 активна;
  • Apache отвечает только на 127.0.0.1:8080.

5.10. Проверка Redis

redis-cli ping

Ожидаемый результат:

PONG

Проверить запись и чтение ключа:

redis-cli set verification_key "Redis works"
redis-cli get verification_key
redis-cli del verification_key

Проверить порт Redis:

sudo ss -tulpn | grep 6379

Ожидаемый результат:

127.0.0.1:6379

5.11. Проверка журналов

sudo tail -n 30 /var/log/nginx/saas-app.access.log
sudo tail -n 30 /var/log/nginx/saas-app.error.log
sudo tail -n 30 /var/log/apache2/saas-app.access.log
sudo tail -n 30 /var/log/apache2/saas-app.error.log
sudo journalctl -u redis-server -n 30

Ожидаемый результат:

  • в журналах нет критических ошибок;
  • нет повторяющихся ошибок 502, 503, permission denied ;
  • Redis запускается без ошибок.

5.12. Проверка резервного копирования

Запустить backup вручную:

bash /opt/saas/scripts/backup-saas.sh

Проверить архив:

ls -lh /opt/saas/backups
LATEST_BACKUP=$(ls -t /opt/saas/backups/saas-backup-*.tar.gz | head -n 1)
echo $LATEST_BACKUP

Проверить содержимое архива:

tar -tzf "$LATEST_BACKUP" | grep "var/www/saas-app"
tar -tzf "$LATEST_BACKUP" | grep "etc/nginx/sites-available/saas-app"
tar -tzf "$LATEST_BACKUP" | grep "etc/apache2/sites-available/saas-app.conf"
tar -tzf "$LATEST_BACKUP" | grep "dump.rdb"

5.13. Проверка восстановления

Распаковать последний backup во временный каталог:

rm -rf /opt/saas/restore-test/*
tar -xzf "$LATEST_BACKUP" -C /opt/saas/restore-test

Проверить восстановленные файлы:

ls -la /opt/saas/restore-test
ls -la /opt/saas/restore-test/var/www/saas-app
ls -la /opt/saas/restore-test/etc/nginx/sites-available
ls -la /opt/saas/restore-test/etc/apache2/sites-available

Ожидаемый результат:

  • файлы приложения восстановлены;
  • конфигурация Nginx восстановлена;
  • конфигурация Apache восстановлена;
  • Redis dump присутствует в восстановленных данных.

5.14. Проверка производительности

Базовая проверка нагрузки:

uptime
free -h
df -h
htop

Проверка времени ответа:

curl -k -o /dev/null -s -w "time_total: %{time_total}\nhttp_code: %{http_code}\n" https://localhost

Ожидаемый результат:

  • HTTP-код — 200;
  • время ответа фиксируется в отчёте;
  • CPU, RAM и диск не находятся в критическом состоянии.

5.15. Итоговая таблица проверки

Проверка Команда Ожидаемый результат Статус
ОС cat /etc/os-release Debian / Ubuntu Server выполнено / не выполнено
Сеть ip route есть default route выполнено / не выполнено
DNS ping debian.org домен разрешается выполнено / не выполнено
SSH systemctl status ssh active (running) выполнено / не выполнено
Nginx nginx -t test is successful выполнено / не выполнено
HTTPS curl -k -I https://localhost HTTP-ответ выполнено / не выполнено
PHP php -v PHP 8.x выполнено / не выполнено
Apache apache2ctl configtest Syntax OK выполнено / не выполнено
Redis redis-cli ping PONG выполнено / не выполнено
Backup backup-saas.sh архив создан выполнено / не выполнено
Restore tar -xzf файлы восстановлены выполнено / не выполнено

5.16. Итог

Инфраструктура считается проверенной, если:

  • сервер доступен по сети;
  • SSH работает;
  • firewall включён;
  • Nginx принимает HTTP/HTTPS-запросы;
  • PHP-приложение открывается через HTTPS;
  • Apache отвечает на локальном backend-порту;
  • Redis отвечает PONG;
  • backup-архив создаётся;
  • восстановление файлов проверено;
  • в журналах нет критических ошибок.