通过 Nginx 的 uwsgi + django - uwsgi 设置/生成?

Posted

技术标签:

【中文标题】通过 Nginx 的 uwsgi + django - uwsgi 设置/生成?【英文标题】:uwsgi + django via Nginx - uwsgi settings/spawn? 【发布时间】:2011-03-12 17:21:12 【问题描述】:

我的 Django 应用程序倾向于使用 uwsgi+nginx,任何人都可以分享启动我的 uwsgi 进程的最佳方法吗?有没有人有调整uwsgi的经验?

【问题讨论】:

【参考方案1】:

在 OSX 上发布

在 unices 上的 Upstart/init。

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

调整:

查看mailing list,获取有关您特定要求的建议。 Uwsgi 很棒,它是一个完整的部署解决方案。

0.8.40以上的Nginx会默认构建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 实例下运行多个站点,如果您的瓶颈是内存,那就太好了,就像我的使用其他出色的 webfaction 主机一样 pidfile 跟踪当前实例,使您能够调用 uwsgi --stop pidfile、uwsgi --start pidfile procname 和 procname-prefix/append 为您的进程提供了一个好听的名称,这样您就可以使用 ps -u username | 轻松将其单独列出。 grep some_string

【讨论】:

帮了我很多! +1 为“procname”【参考方案3】:

我将与 supervisord 一起管理启动、停止过程。

【讨论】:

以上是关于通过 Nginx 的 uwsgi + django - uwsgi 设置/生成?的主要内容,如果未能解决你的问题,请参考以下文章

Django + uWSGI 通过 Ubuntu 11.10 上的 NGINX

转载nginx+uwsgi+django

Django+Nginx+uWSGI部署

nginx+uWSGI+django

django 本地项目部署uwsgi+nginx

nginx,uwsgi,DJango,502 当 DEBUG=False,“上游过早关闭连接”