gpt4 book ai didi

python - 在虚拟环境中的 Ubuntu 16.04 上将 Python 程序作为服务运行

转载 作者:行者123 更新时间:2023-12-04 18:36:02 25 4
gpt4 key购买 nike

我正在尝试在虚拟环境中让 Flask + SocketIO 应用程序作为服务在 Ubuntu 16.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 :
[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

那么这里有什么问题呢?

最佳答案

使python文件在虚拟环境中作为服务运行的经过尝试和测试的方法。

[Unit][Unit]
Description=Your own description
After=network.target

[Service]
Type=simple
Restart=always
WorkingDirectory=/home/path/to/WorkingDirectory/
VIRTUAL_ENV=/home/path/to/WorkingDirectory/venv
Environment=PATH=$VIRTUAL_ENV/bin:$PATH
ExecStart=/home/path/to/WorkingDirectory/venv/bin/python app.py
Restart=on-failure

[Install]
WantedBy=multi-user.target

我把这个放在这里,这样我就可以随时回来看它

关于python - 在虚拟环境中的 Ubuntu 16.04 上将 Python 程序作为服务运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39035233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com