通过Nginx使用uwsgi + django - uwsgi设置/spawn?

6

我倾向于使用uwsgi+nginx来运行我的Django应用程序,有人能分享启动uwsgi进程的最佳方法吗?有没有经验调整uwsgi的人?

3个回答

4

在OSX上,使用Launchd。

在Unix系统中,使用Upstart/init。

uwsgi也有自己的进程管理器,所以您也可以直接运行它。

调优:

查看邮件列表,了解有关您特定要求的建议。Uwsgi非常棒,它是一个完整的部署解决方案。

Nginx 0.8.40以上版本将默认构建uwsgi绑定。构建nginx、构建uwsgi,您就可以顺利完成了。


2

这些是我在 fabfile.py 文件中使用的函数(如果你还没有了解 Python Fabric,请查看):

def start_uwsgi():
    with cd(env.server.uwsgi):
        if(exists('server.pid')):
            stop_uwsgi()
            run('sleep 1')
        run('source venv/bin/activate;uwsgi --ini uwsgi.ini;'))

def stop_uwsgi():
    with cd(env.server.uwsgi):
        if(exists('server.pid')):
            run('source venv/bin/activate;uwsgi --stop server.pid;'))

在我的uwsgi.ini文件中,我指定:
[uwsgi]
socket = :{{your_port}}
master = true
vhost = true
no-site = true
processes = 1
enable-threads = true
pidfile = server.pid
daemonize = server.log
auto-procname = true
procname-prefix = servername_

对我来说,主要的问题是:

  • 如果你想在关闭终端/ssh会话后继续运行uwsgi服务器,请使用daemonise选项。
  • 使用vhost在同一个uwsgi实例下运行多个站点非常棒,特别是当内存成为瓶颈时,就像我的情况一样,否则fantastic webfaction host也很好用。
  • pidfile跟踪当前实例,使您能够调用uwsgi --stop pidfile,uwsgi --start pidfile。
  • procname和procname-prefix/append为您的进程提供了一个漂亮的名称,因此您可以使用ps -u username | grep some_string轻松地将其单独提取出来。

帮了我很多!“procname”加1。 - Jim Jose

0

我会使用supervisord来管理启动和停止进程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接