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

AWS EC2中Systemd部署Gunicorn提示找不到'app'模块求助

解决EC2上systemd启动Gunicorn找不到app模块的问题

核心问题原因

systemd服务运行时的工作目录、Python虚拟环境路径和你手动在venv里操作的环境不一致,导致Gunicorn找不到app模块。下面是针对性的解决步骤:

1. 修正systemd服务文件配置

打开你的systemd服务文件(通常在/etc/systemd/system/目录下,比如helloworld.service),确保以下关键配置正确:

[Unit]
Description=Gunicorn instance to serve helloworld Flask app
After=network.target

[Service]
# 指定运行服务的用户,和你手动操作的用户一致
User=ec2-user
# 设置工作目录为app.py所在的绝对路径
WorkingDirectory=/home/ec2-user/helloworld
# 使用虚拟环境里的Gunicorn绝对路径,指定启动模块(app.py里的Flask实例名为app的话,就是app:app)
ExecStart=/home/ec2-user/helloworld/venv/bin/gunicorn --workers=3 --bind=0.0.0.0:5000 app:app

[Install]
WantedBy=multi-user.target

关键配置说明:

  • WorkingDirectory:必须设为app.py所在的目录,确保Gunicorn能找到该目录下的模块
  • ExecStart:必须用虚拟环境内Gunicorn的绝对路径,避免调用系统全局的Python环境;app:app表示加载当前工作目录下app.py文件里名为app的Flask实例

2. 重新加载并重启服务

执行以下命令使配置生效:

# 重新加载systemd配置
sudo systemctl daemon-reload
# 重启服务
sudo systemctl restart helloworld
# 查看服务状态
sudo systemctl status helloworld
# 实时查看日志排查问题
journalctl -u helloworld -f

3. 额外排查点

  • 文件权限检查:确保ec2-user对/home/ec2-user/helloworld目录及app.py有读写权限,执行ls -l /home/ec2-user/helloworld确认权限
  • 虚拟环境依赖验证:进入虚拟环境重新安装依赖,避免遗漏:
    cd /home/ec2-user/helloworld
    source venv/bin/activate
    pip install flask gunicorn
    deactivate
    
  • 避免相对路径:所有路径都用绝对路径,不要用./之类的相对路径,防止systemd工作目录变化导致路径错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:12:17