我正在尝试让一个Flask+SocketIO应用程序作为一个服务在ubuntu16.04上运行,在一个虚拟环境中。我的服务器每天凌晨3点重新启动(超出我的控制范围),所以我需要它在启动时自动启动。在
运行脚本本身可以正常工作:$ python main.py
(29539) wsgi starting up on http://127.0.0.1:8081
我可以判断它是工作的,因为它在为页面提供服务(通过遵循this Stack Overflow answer设置的nginx服务器,尽管我不认为这是相关的)
这是我的/etc/systemd/system/opendc.service:
^{pr2}$
所以当我试着用$ 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
那么这里有什么问题?在