Nginx+uWSGI+Django方法部署Django应用2

使用uWSGI来部署Django程序。

当然,单单只有uWSGI是不够的,在实际的部署环境中,Nginx是必不可少的工具。

在本篇文章中,我将一直延用“N步法”的风格来阐述如何将uWSGI与Nginx做连接来部署Django程序。并在最后,会较为完整的阐述本社区的部署方法。

本文大纲:

环境介绍
配置uWSGI
配置Nginx
Nginx+uWSGI+Django的实现方式
一些建议

环境介绍

Ubuntu 12.04.1 LTS
django 1.4.2
nginx/1.2.6
uWSGI 1.4.4

关于uWSGI的安装可参见上一篇文章 上一篇文章《五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(上)》

我们假定你已经安装好Nginx了。
配置uWSGI

在上一篇文章《五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(上)》中,我们是直接使用命令行来启动uWSGI,在实际部署环境中,我们常用的是配置文件的方式,而非命令行的方式。我的一般做法是用命令行来测试是否uWSGI安装成功,然后用配置文件来真正部署。

另外,为了实现Nginx与uWSGI的连接,两者之间将采用soket来通讯方式。

在本节中,我们将使用uWSGI配置文件的方式来改进uWSGI的启动方式。

假定你的程序目录是 /home/work/src/sites/testdjango1/testdjango/mysite

我们将要让Nginx采用8077端口与uWSGI通讯,请确保此端口没有被其它程序采用。

注意,请确定你在上一节《五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(上)》中的django_wsgi.py文件已经存在了。

新建一个XML文件:

djangochina_socket.xml,将它放在 /home/work/src/sites/testdjango1/testdjango/mysite 目录下:


:8077
/home/work/src/sites/testdjango1/testdjango/mysite
django_wsgi
4
uwsgi.log

在上面的配置中,我们使用 uwsgi.log 来记录日志,开启4个进程来处理请求。

这样,我们就配置好uWSGI了。
配置Nginx

我们假设你将会把Nginx程序日志放到你的目录/home/work/var/test/logs/下,请确保该目录存在。

我们假设你的Django的static目录是/home/work/src/sites/testdjango1/testdjango/collectedstatic/ , media目录是/home/work/src/sites/testdjango1/testdjango/public/media/,请确保这些目录存在。

我们假设你的域名是 www.you.com (在调试时你可以设置成你的机器IP)

我们假设你的域名端口是 80(在调试时你可以设置一些特殊端口如 8070)

基于上面的假设,我们为conf/nginx.conf添加以下配置

server {

    listen   80;
    server_name www.you.com;
    access_log /home/work/var/test/logs/access.log;
    error_log /home/work/var/test/logs/error.log;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
     include        uwsgi_params;
     uwsgi_pass     127.0.0.1:8077;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

    location /static/ {
        alias  /home/work/src/sites/testdjango1/testdjango/collectedstatic/;
        index  index.html index.htm;
    }

    location /media/ {
        alias  /home/work/src/sites/testdjango1/testdjango/public/media/;
    }
}

在上面的设置后,可以让Nginx来处理静态文件(/static/ 和 /media/ )。非静态文件请求Nginx会发给 socket 8077,然后让uWSGI来进行处理。
Nginx+uWSGI+Django的实现方式

在完成上面配置后,需要按以下步骤来做:

重启Nginx服务器,以使Nginx的配置生效。

nginx -s  reload

重启后检查Nginx日志是否有异常。

启动uWSGI服务器

cd /home/work/src/sites/testdjango1/testdjango/mysite

uwsgi -x djangochina_socket.xml

检查日志 uwsgi.log 是否有异常发现。

访问服务

基于上面的假设你的域名是www.you.com

因此,我们访问 www.you.com,如果发现程序与 单独使用Django启动的程序一模一样时,就说明成功啦!

关闭服务的方法

将uWSGi进程杀死即可。

一些建议

uWSG配置文件的进程数,可以根据实际情况分配。不要开得太大,否则机器可能会内存耗用太高。一般来说,对于一个小社区来说,4个进程已经足够了。

一般情况下,可以编写一下 stop.sh 脚本 来关闭uWSGI。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值