2016-08-19 10 views
0

Я пытаюсь получить приложение Flask + SocketIO, работающее как служба на Ubuntu 16.04, внутри виртуальной среды. Мой сервер перезапускается каждый день в 3 часа ночи (вне моего контроля), поэтому мне нужно его автоматически запускать при запуске.Запустите программу Python как сервис на Ubuntu 16.04 внутри виртуальной среды

Запуск сценария сам по себе работает отлично:

$ python main.py 
(29539) wsgi starting up on http://127.0.0.1:8081 

Я могу сказать, что это работает, потому что он служит страниц (через сервер Nginx создан следуя this Stack Overflow answer, хотя я не думаю, что это уместно.);

Вот мой /etc/systemd/system/opendc.service:

[Unit] 
Description=OpenDC flask + socketio service 

[Service] 
Environment=PYTHON_HOME=/var/www/opendc.ewi.tudelft.nl/web-server/venv 
Environment=PATH=$VIRTUAL_ENV/bin:$PATH 
ExecStart=/var/www/opendc.ewi.tudelft.nl/web-server main.py 
Restart=always 

[Install] 
WantedBy=multi-user.target 

Так что, когда я пытаюсь получить, что происходит с помощью:

$ sudo systemctl daemon-reload 
$ sudo systemctl restart opendc 

Он больше не обслуживает страницы. Статус показывает:

$ sudo systemctl status opendc 
* opendc.service - OpenDC flask + socketio service 
    Loaded: loaded (/etc/systemd/system/opendc.service; enabled; vendor preset: enabled) 
    Active: inactive (dead) (Result: exit-code) since Fri 2016-08-19 10:48:31 CEST; 15min ago 
    Process: 29533 ExecStart=/var/www/opendc.ewi.tudelft.nl/web-server main.py (code=exited, status=203/EXEC) 
Main PID: 29533 (code=exited, status=203/EXEC) 

Aug 19 10:48:31 opendc.ewi.tudelft.nl systemd[1]: opendc.service: Service hold-off time over, scheduling restart. 
Aug 19 10:48:31 opendc.ewi.tudelft.nl systemd[1]: Stopped OpenDC flask + socketio service. 
Aug 19 10:48:31 opendc.ewi.tudelft.nl systemd[1]: opendc.service: Start request repeated too quickly. 
Aug 19 10:48:31 opendc.ewi.tudelft.nl systemd[1]: Failed to start OpenDC flask + socketio service. 

Я посмотрел (code=exited, status=203/EXEC) и сделал некоторые устранения неполадок с тем, что я нашел:

Я проверил, что main.py выполнима:

$ ls -l main.py 
-rwxr-xr-x 1 leon leon 2007 Aug 19 10:46 main.py 

И main.py имеет это первый линии, чтобы указать на Python в виртуальной среде:

#!/var/www/opendc.ewi.tudelft.nl/web-server/venv/bin/python 

Итак, в чем проблема?

+0

Там не должно быть пространство. '#!/var/www/opendc.ewi.tudelft.nl/web-server/venv/bin/python' – hjpotter92

+0

@ hjpotter92 спасибо; изменил это, но я все равно получаю ту же ошибку –

+0

@ hjpotter92 FYI, пробелы после '!' в порядке. Например, см. Http://unix.stackexchange.com/questions/276751/is-space-allowed-between-and-bin-bash-in-shebang/276845. – edwinksl

ответ

0

Я считаю, что вы ошиблись при вводе PYTHON_HOME и чем PATH = $ VIRTUAL_ENV/бен: $ PATH

вы должны использовать PATH = $ PYTHON_HOME/Bin: $ PATH

 Смежные вопросы

  • Нет связанных вопросов^_^