如何在 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了。
这是我用来启动我的项目的命令:
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了。