Amazon ec2 如何在启动EC2实例时启动gunicorn?

Amazon ec2 如何在启动EC2实例时启动gunicorn?,amazon-ec2,gunicorn,systemd,Amazon Ec2,Gunicorn,Systemd,我试图在EC2实例中启动时运行gunicorn,我在/lib/systemd/system/中创建了一个myproject.service文件,如下所示 [Unit] Description="my startup file" [Service] WorkingDirectory=/home/ubuntu/myproject Type=simple ExecStart=/home/ubuntu/.local/bin/gunicorn -w 1 -b 0.0.0.0:8080 wsgi:appl

我试图在EC2实例中启动时运行gunicorn,我在
/lib/systemd/system/
中创建了一个
myproject.service
文件,如下所示

[Unit]
Description="my startup file"

[Service]
WorkingDirectory=/home/ubuntu/myproject
Type=simple
ExecStart=/home/ubuntu/.local/bin/gunicorn -w 1 -b 0.0.0.0:8080 wsgi:application

[Install]
WantedBy=multi-user.target

为了测试它是否工作,我一直在运行这些命令

sudo systemctl后台程序重新加载

sudo systemctl启动我的项目

sudo systemctl状态myproject

这将返回错误

Apr 02 09:14:13 ip-172-31-32-45 gunicorn[5827]:   File "/home/ubuntu/.local/bin/gunicorn", line 7, in <module>
Apr 02 09:14:13 ip-172-31-32-45 gunicorn[5827]:     from gunicorn.app.wsgiapp import run
Apr 02 09:14:13 ip-172-31-32-45 gunicorn[5827]: ModuleNotFoundError: No module named 'gunicorn'
Apr 02 09:14:13 ip-172-31-32-45 systemd[1]: myproject.service: Main process exited, code=exited, status=1/FAILURE
Apr 02 09:14:13 ip-172-31-32-45 systemd[1]: myproject.service: Failed with result 'exit-code'.
Apr 02 09:14:13 ip-172-31-32-45 gunicorn[5827]:文件“/home/ubuntu/.local/bin/gunicorn”,第7行,在
Apr 02 09:14:13 ip-172-31-32-45 gunicorn[5827]:来自gunicorn.app.wsgiapp导入运行
Apr 02 09:14:13 ip-172-31-32-45 gunicorn[5827]:ModuleNotFoundError:没有名为“gunicorn”的模块
Apr 02 09:14:13 ip-172-31-32-45 systemd[1]:myproject.service:主进程已退出,代码=退出,状态=1/失败
Apr 02 09:14:13 ip-172-31-32-45 systemd[1]:myproject.service:失败,结果为“退出代码”。

我使用了
哪个gunicorn
来返回绝对路径,所以我不明白为什么找不到gunicorn

我最终创建了一个虚拟环境,然后一切都很顺利,这最终成为我的
/lib/systemd/system
内的服务文件

# myproject.service

[Service]
WorkingDirectory=/home/ubuntu/myproject
Type=simple
Environment="PATH=/home/ubuntu/myproject/venv36/bin"
ExecStart=/home/ubuntu/myproject/venv36/bin/gunicorn -w 1 -b 0.0.0.0:8080 wsgi:application --daemon

[Install]
WantedBy=multi-user.target