任何虚拟环境都可以为所有virtuenenv启动systemd gunicorn.service吗?

如果你不在一个环境中工作,Gunicorn将被安装在全球范围内(即全系统可用)。 这不被推荐。 总是select使用virtualenv。 但是,如果你有多个virtualenvs多lessgunicorn.service文件,你应该启动在系统启动gunicorn? 例如下面

WorkingDirectory=/home/myproject... ExecStart==/home/myproject/myprojectenv/bin/gunicorn... 

任何虚拟环境能否为所有virtudenv启动?

你可以使用systemd实例。

比如说,假设你在同一个目录下创build了所有的virtualenvs(这将使得它更容易)。

然后你可以这样写一个单元文件:

 WorkingDirectory=/home/myproject/%i ExecStart=/home/myproject/%i/bin/gunicorn ... 

%i表示该单位的一个特定实例,其中不存在任何限制。 您通过使用@符号后跟实例名称来引用实例,如:

 systemctl enable [email protected] systemctl start [email protected] 

因此%i将被myprojectenv取代。 对每个要创build的实例重复此操作。

进一步阅读:

  • systemd:模板单元文件
  • 系统pipe理员,第十部分
  • systemd.unit(5)