#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: в чем смысл «рабочего каталога», если он фактически не установлен в этот рабочий каталог?