Устранение неполадок
Статья помогает найти причину, если сервер ТехноДок не запускается, не отправляет письма или не применяет HSTS. Неполадки интеграции с КАСКАД описаны в разделе «Устранение неполадок» статьи «КАСКАД».
Журналы сервера
Сервер записывает журналы в каталог logs каталога установки, например /opt/SMS-Automation/TechnoDoc/logs. Каждый день сервер начинает новый файл, дата стоит в его имени:
startup-error-ГГГГММДД.log— ошибка, из-за которой сервер не запустился. Файл появляется только при такой ошибке;log-ГГГГММДД.log— журнал работающего сервера.
Если сервер запущен скриптом run из терминала, те же записи выводятся в терминал. Журналы работающего сервера можно выгрузить кнопкой «Экспортировать логи» на вкладке «Сервер» формы «Администрирование».
Сервер не запускается
Откройте последний файл startup-error-*.log и найдите запись Не удалось запустить сервер. Текст ошибки под ней называет причину.
Порт занят
Признак. В записи об ошибке есть строка Failed to bind to address http://0.0.0.0:8003: address already in use.
Причина. Порт 8003 занимает другая программа. Часто это второй экземпляр ТехноДок: сервер уже работает службой, а его запускают ещё раз скриптом run.
Проверка. Найдите программу, которая занимает порт.
Linux:
sudo ss -ltnp 'sport = :8003'
Столбец Process показывает имя программы и идентификатор её процесса.
Windows:
netstat -ano | findstr :8003
Последний столбец строки с состоянием LISTENING — идентификатор процесса. Имя программы покажет команда tasklist /FI "PID eq <идентификатор>".
Решение. Остановите программу, которая занимает порт, или задайте ТехноДок другой порт:
- Откройте файл
data/application.conf. - Раскомментируйте в секции
[Kestrel:Endpoints:Http]ключUrlи укажите свободный порт, напримерUrl = http://0.0.0.0:8010. - Перезапустите сервер.
Порт HTTPS задаётся ключом Url секции [Kestrel:Endpoints:Https], как описано в статье «Безопасное соединение».
Нет прав на исполнение
Признак. В Linux скрипт run.sh завершается ошибкой Permission denied, а файл startup-error-*.log не появляется.
Причина. Архив распаковали в Windows и скопировали файлы на Linux, и права на исполнение не сохранились.
Решение. Верните права командой:
sudo chmod +x /opt/SMS-Automation/TechnoDoc/bin/Sms.TechnoDoc \
/opt/SMS-Automation/TechnoDoc/bin/chromium/linux/chrome-headless-shell \
/opt/SMS-Automation/TechnoDoc/scripts/*.sh \
/opt/SMS-Automation/TechnoDoc/scripts/service/*.sh
Письма не отправляются
Откройте вкладку «Журнал писем» формы «Администрирование» и найдите письмо по теме или адресу получателя. Дальнейшие действия зависят от того, есть ли письмо в журнале и в каком оно состоянии.
Письма нет в журнале
Причина. Отправка писем выключена, или письмо отправлял пользователь и отправка не удалась. Письмо, которое отправляет правило отчёта, при ошибке остаётся в журнале и ждёт повторной отправки. Письмо, которое отправляет пользователь, при ошибке в журнал не попадает: ТехноДок показывает пользователю сообщение об ошибке.
Проверка. Откройте вкладку «Журнал событий» и выберите категорию «Почта». Запись с текстом Отправка писем по почте отключена означает, что отправка выключена. Запись с текстом не удалось отправить. Причина: … называет ошибку SMTP-сервера.
Решение. Включите «Разрешить отправку писем по почте» на вкладке «Почтовый клиент» или устраните ошибку, как описано в разделе «Письмо не удалось отправить».
Письмо долго ожидает отправки
Причина. Не выполняется периодическая задача «Отправка почты», которая повторяет отправку.
Проверка. На вкладке «Сервер» найдите задачу «Отправка почты» и проверьте её состояние и время последнего запуска.
Решение. Если задача в состоянии «Отключена», включите её: задайте в файле data/application.conf в секции [Mail:Jobs:SendMailsJob] ключ IsEnabled = True и перезапустите сервер. Если вкладка сообщает, что планировщик задач отключён, задайте тот же ключ в секции [JobScheduler]. Чтобы отправить ожидающие письма сразу, нажмите кнопку в столбце «Выполнить» задачи «Отправка почты».
Письмо не удалось отправить
Причина. SMTP-сервер недоступен или отклоняет подключение ТехноДок.
Проверка. Откройте вкладку «Журнал событий» и выберите категорию «Почта». Текст после слова Причина называет ошибку.
Решение. Проверьте настройки на вкладке «Почтовый клиент»:
- При ошибке подключения нажмите «Проверить соединение»: кнопка проверяет, что сервер ТехноДок достигает SMTP-сервера по адресу и порту. Если соединения нет, проверьте адрес, порт и брандмауэр между серверами.
- При ошибке входа проверьте «Логин отправителя» и «Пароль отправителя».
- При ошибке шифрования проверьте «Использовать SSL». Для порта 465 настройка должна быть включена. Для портов 587 и 25 её выключают: ТехноДок сам переходит на шифрование STARTTLS, если SMTP-сервер его поддерживает. Если у SMTP-сервера самоподписанный сертификат, выключите «Проверять корректность сертификата сервера».
Письма в состоянии «Не удалось отправить» ТехноДок больше не отправляет. Отправьте отчёт повторно после исправления настроек.
HSTS не действует
При запуске сервер проверяет настройки HSTS и записывает предупреждения в файл log-*.log. Откройте файл за день последнего запуска сервера.
Адрес HTTPS не задан
Признак. В журнале есть запись HSTS не включен, т.к. порт HTTPS не задан.
Причина. Ключ EnableHsts включён, но в секции [Kestrel:Endpoints:Https] не задан ключ Url. Сервер не отправляет заголовок Strict-Transport-Security.
Решение. Включите HTTPS, как описано в разделе «Включение HTTPS» статьи «Безопасное соединение».
Перенаправление выключено
Признак. В журнале есть запись HSTS включен, но перенаправление запросов отключено. Клиенты впервые подключившиеся по HTTP не будут перенаправлены на HTTPS.
Причина. Точка подключения по HTTP открыта, а ключ EnableRedirection выключен. Браузер, который ещё не получал заголовок, выполняет первый запрос по HTTP и остаётся на небезопасном соединении.
Решение. Включите перенаправление, как описано в разделе «Включение перенаправления на HTTPS», или закройте точку подключения по HTTP: закомментируйте ключ Url в секции [Kestrel:Endpoints:Http].
Заголовок не отправляется
Признак. Предупреждений в журнале нет, но в ответах сервера нет заголовка Strict-Transport-Security.
Причина. Сервер отправляет заголовок не на каждый запрос. Заголовок не отправляется:
- в ответ на запросы по HTTP: политика передаётся только по безопасному соединению;
- если в адресе запроса указан порт, например 8004;
- для узлов
localhost,127.0.0.1и[::1].
Решение. Задайте для HTTPS порт 443, как описано в разделе «Включение HSTS», и проверяйте заголовок запросом по HTTPS на имя или адрес сервера без порта.