ошибка бутылки «критическая ошибка при обработке запроса:» при запуске из systemd

#python-3.x #systemd #bottle

#python-3.x #systemd #бутылка

Вопрос:

У меня есть сервер, построенный на bottle, который отлично работает при запуске из пользовательского интерфейса. Сервер появляется на порту 8088 и, похоже, связывается с внешним миром, но когда я связываюсь с приложением, все, что я получаю, это очень информативная «Критическая ошибка при обработке запроса: схема», которая является URL-адресом приложения. Мой файл systemd находится ниже:

 [Unit]
Description=Survey Service
After=multi-user.target
Conflicts=getty@tty1.service

[Service]
User=ubuntu
Type=simple
Working-directory=/home/ubuntu/survey
ExecStart=/usr/bin/python3 /home/ubuntu/survey/server.py

[Install]
WantedBy=multi-user.target
 

Я нашел несколько статей, связанных с информативным сообщением об ошибке, но ни одна из них не связана с systemd. Как я уже сказал, приложение отлично работает при запуске от имени пользователя ubuntu в каталоге проекта с помощью очень простой команды «python3 server.py » но, похоже, пропал без вести… что-то, когда systemd пытается его запустить.

Systemd сообщает, что процесс запущен, и, как я уже сказал, я могу подключиться к приложению … оно просто выходит из строя упорядоченным образом с этим сообщением, и я не понимаю, почему. Я подозреваю проблему с разрешениями, но разве «пользователь» и «Рабочий каталог» не позаботятся об этом? Все файлы, используемые приложением, находятся в этом каталоге или каталогах под ним.

Ответ №1:

По-видимому, это работает по старинке: установите systemd для запуска скрипта bash как такового:

cat /home/ubuntu/survey/server.sh

 #!/bin/bash
cd /home/ubuntu/survey/
python3 server.py
 

Работает просто отлично. Итак, теперь мой вопрос становится вопросом о systemd: в чем смысл «рабочего каталога», если он фактически не установлен в этот рабочий каталог?