You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Flask应用:无法通过Systemd运行myproject.service求助

Gunicorn通过Systemd启动失败的排查与解决

问题背景

部署Flask应用时,已完成虚拟环境创建、Gunicorn和Flask安装,myproject.py与wsgi.py可正常执行。命令行直接调用虚拟环境内的Gunicorn能正常运行并访问网页:

(venv) dconran@dconran-VirtualBox:~/python/dg$ /home/dconran/python/dg/venv/bin/gunicorn --workers 3 --bind unix:myproject.sock -m 007 wsgi:app

但通过systemctl start myproject启动服务时失败,执行sudo systemctl status myproject得到错误日志。

错误日志

× myproject.service - Gunicorn instance to serve myproject
 Loaded: loaded (/etc/systemd/system/myproject.service; enabled; preset: enabled)
 Active: failed (Result: exit-code) since Fri 2025-02-14 12:40:11 GMT; 23s ago
 Duration: 12ms
 Main PID: 6526 (code=exited, status=2)
    CPU: 5ms

Feb 14 12:40:11 dconran-VirtualBox systemd[1]: Started myproject.service - Gunicorn instance to serve myproject.
Feb 14 12:40:11 dconran-VirtualBox bash[6527]: 
    /home/dconran/python/dg/venv/bin/gunicorn: line 3: import: command not found
Feb 14 12:40:11 dconran-VirtualBox bash[6528]: 
    /home/dconran/python/dg/venv/bin/gunicorn: line 4: import: command not found
Feb 14 12:40:11 dconran-VirtualBox bash[6529]: 
    /home/dconran/python/dg/venv/bin/gunicorn: line 5: from: command not found
Feb 14 12:40:11 dconran-VirtualBox bash[6526]: 
    /home/dconran/python/dg/venv/bin/gunicorn: line 7: syntax error near unexpected token `('
Feb 14 12:40:11 dconran-VirtualBox bash[6526]: 
    /home/dconran/python/dg/venv/bin/gunicorn: line 7: `    sys.argv[0] = re.sub(r'(-script\.>
Feb 14 12:40:11 dconran-VirtualBox systemd[1]: myproject.service: Main process exited, 
    code=exited, status=2/INVALIDARGUMENT
Feb 14 12:40:11 dconran-VirtualBox systemd[1]: myproject.service: Failed with result 
    'exit-code'.

当前myproject.service配置

[Unit]
Description=Gunicorn instance to serve myproject
After=network.target
[Service]
User=dconran
Group=www-data
WorkingDirectory=/home/dconran/python/dg
Environment="PATH=/home/dconran/python/dg/venv/bin"
ExecStart=/usr/bin/bash /home/dconran/python/dg/venv/bin/gunicorn --workers 3 --bind 
    unix:myproject.sock -m 007 wsgi:app
[Install]
WantedBy=multi-user.target

问题原因

ExecStart里用/usr/bin/bash执行gunicorn是错误操作——gunicorn是Python脚本,bash无法解析Python语法,因此出现import: command not found这类语法错误。

解决方法

修改myproject.service中的ExecStart行,直接调用虚拟环境内的gunicorn,无需通过bash中转:

[Unit]
Description=Gunicorn instance to serve myproject
After=network.target
[Service]
User=dconran
Group=www-data
WorkingDirectory=/home/dconran/python/dg
Environment="PATH=/home/dconran/python/dg/venv/bin"
ExecStart=/home/dconran/python/dg/venv/bin/gunicorn --workers 3 --bind unix:myproject.sock -m 007 wsgi:app
[Install]
WantedBy=multi-user.target

修改完成后,重新加载systemd配置并重启服务:

sudo systemctl daemon-reload
sudo systemctl restart myproject

内容的提问来源于stack exchange,提问作者Doug Conran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 09:27:07