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-архив создаётся;
- восстановление файлов проверено;
- в журналах нет критических ошибок.