Чек-лист: Фаза 5 — веб-сервер и SSL для lms.cdto.life
Проект: Установка Moodle 4.5 (LTS) на lms.cdto.life
Задачи Redmine: #6, #47, #48, #49
План: moodle-installation-plan.md
Промежуточная версия: INTERMEDIATE-WORKING-VERSION-2026-02-12.md
Текущее состояние (на 12.02.2026)
Фаза 5 реализована в промежуточной рабочей версии 2026-02-12: виртуальный хост, маршрутизация и доступ по HTTPS работают.
1. Виртуальный хост lms.cdto.life в контейнере moodle — задача #47
Конфиг в репозитории: config/nginx/moodle-lms-cdto-life.conf
| Проверка | Действие | Статус |
|---|---|---|
| 1.1 | Конфиг содержит server_name lms.cdto.life, root /var/www/moodle, PHP-FPM (php8.1-fpm.sock), map X-Forwarded-Proto → HTTPS |
✅ В репозитории |
| 1.2 | В контейнере moodle конфиг задеплоен в /etc/nginx/sites-available/, symlink в sites-enabled |
Проверить: lxc exec moodle -- ls -la /etc/nginx/sites-enabled/ |
| 1.3 | Nginx в контейнере перезагружен после деплоя | lxc exec moodle -- systemctl reload nginx при изменении конфига |
Деплой конфига в контейнер moodle (при необходимости):
lxc file push config/nginx/moodle-lms-cdto-life.conf moodle/etc/nginx/sites-available/moodle
lxc exec moodle -- ln -sf /etc/nginx/sites-available/moodle /etc/nginx/sites-enabled/
lxc exec moodle -- nginx -t && lxc exec moodle -- systemctl reload nginx
- [ ] Виртуальный хост настроен и активен в контейнере moodle
2. Маршрутизация в Nginx/HAProxy (BBB) — задача #48
Точка входа: трафик 80/443 приходит в контейнер BBB-CONT22-1 (HAProxy → Nginx:8443).
| Проверка | Конфиг | Статус |
|---|---|---|
| 2.1 | HAProxy: acl host_lms hdr(host) -i lms.cdto.life и use_backend nginx-8443 if ... host_lms |
✅ config/snapshots/haproxy-bbb-2026-01-23.cfg |
| 2.2 | Nginx в BBB: server_name lms.cdto.life на 127.0.0.1:8443, proxy_pass http://10.218.14.104:80, X-Forwarded-Proto https | ✅ config/nginx/bbb-https-routing.conf |
| 2.3 | Конфиги задеплоены в BBB-CONT22-1 (haproxy.cfg, nginx sites) | Проверить на сервере при изменении |
- [ ] Маршрутизация lms.cdto.life → 10.218.14.104:80 через BBB настроена
3. SSL для lms.cdto.life — задача #49
Где терминация SSL: в контейнере BBB-CONT22-1 на порту 443 (HAProxy: bind *:443 ssl crt /etc/haproxy/certs/).
| Вариант | Описание |
|---|---|
| A | В /etc/haproxy/certs/ в BBB уже есть сертификат, включающий lms.cdto.life (SAN или отдельный файл) — тогда HTTPS для lms.cdto.life работает без предупреждений. |
| B | Используется общий сертификат (например denkart.cdto.group или school.cdto.life) — браузер может показывать предупреждение о несовпадении имени. Выпустить отдельный сертификат Let's Encrypt для lms.cdto.life и добавить в HAProxy. |
Выпуск Let's Encrypt для lms.cdto.life (если нужен отдельный сертификат):
- HTTP-01 (порт 80 доступен): на хосте выполнить
sudo /home/cdto/DENKART/scripts/issue-lms-cdto-life-cert.sh
Скрипт освобождает порт 80 в BBB, запускает certbot --standalone, копирует сертификат в/etc/haproxy/certs/lms.cdto.life.pemи перезагружает HAProxy. - DNS-01 (порт 80 недоступен): пошагово в ssl-lms-cdto-life.md (ручной DNS или плагин Cloudflare).
См. также: ssl-lms-cdto-life.md, ssl-school-cdto-life.md.
- [ ] SSL для lms.cdto.life: сертификат валиден ИЛИ предупреждение зафиксировано для последующей настройки
4. Проверка доступности
- Открыть https://lms.cdto.life в браузере — главная или страница входа Moodle.
-
Проверить: http://lms.cdto.life → редирект на https://lms.cdto.life (блок server 80 в bbb-https-routing.conf).
-
[ ] https://lms.cdto.life открывается без циклического редиректа
- [ ] Страница входа Moodle отображается
Связанные документы: План установки Moodle 4.5, Промежуточная рабочая версия 2026-02-12, Отчёт по маршрутизации.