如何在 virtualenv 中为 运行 项目创建服务或 shell 脚本?

How to create a service or shell scripts to run a project within virtualenv?

这是我用来启动我的项目的命令:

nginx -s stop
workon my_project_env
pkill -f uwsgi -9
uwsgi -x /root/my_project/My_web_api/My_web_api.xml
deactivate
nginx

我想确保这个项目即使在服务器重启时也能启动。

但是将 shell 命令文件写成 xxx.sh 是行不通的,

as shell 命令不会简单地在 virtualenv 中工作。

上面的所有命令都将在主终端中运行,

但一些命令必须在 virtualenv 上工作。

我该如何解决这个问题?

我发现使用 souce ./xxx.sh 会起作用(我以前使用 ./xxx.sh ),但在 Akash Ranjan 的帮助下,我知道这不是解决这种情况的正确方法。

您需要使用 uwsgi 的 virtualenv 文件调用 uwsgi 命令。这样你就不需要激活 virtualenv。

如下所示,

/path/to/virtualenvs/project-name/bin/uwsgi -x /root/my_project/My_web_api/My_web_api.xml

所有需要运行使用virtualenv的命令都应该这样调用,这样你就不需要激活virtualenv了。