Django项目在nginx上面的部署(django+flup+nginx)

首先说下需要用到的软件
1、python环境
因为我用的centos6.2 上面自带了python2.6.6的环境。所以就可以不用安装了。
2、Django环境
我们这里用easy_install的方式来安装,因为后面装其他关于python的都可以用到。当然你可以下载源码编译安装,都行。
首先用yum安装easy_install

yum -y install python-setuptools

安装完成后,用easy_install来安装django

easy_install "django==1.4.5"

3、flup
flup: 一个用python写的web server,也就是cgi中所谓的Server/Gateway,它负责接受apache/nginx转发的请求,并调用你写的程序 (application),并将application处理的结果返回到apache/nginx.
安装flup

easy_install flup

虽说django自带一个开发用的服务器。
manage.py runserver。可以结合nginx部署一个web站点,但是这个开发的服务器必然没有python的web服务器flup专业.

4、nginx安装
可以参考我以前的博文来安装nginx,http://www.linuxyan.com/web-server/32.html

都安装好之后,就可以来配置flup和nginx了。

首先启动flup,到自己的django目录下。
一种是用sock来通信的:python manage.py runfcgi socket=/tmp/python.sock maxrequests=1
一种是用监听端口来通信的:python manage.py runfcgi method=prefork host=127.0.0.1 port=9001
用sock启动的,可以用
ll /tmp/python.sock
来查看sock文件是否成功生成,还有就是注意sock文件权限是否正确。如果访问出现502,就有可能是sock文件的权限问题。

如果用端口来启动的。可以用
netstat -tnlp
来查看9001端口是否处于监听状态。

启动之后,配置nginx的server段

server {
        listen       80;
        server_name  www.linuxyan.com;
        root /var/www/html/djangodemo;
        
    access_log  /var/log/nginx/log/python.access.log;
    error_log   /var/log/nginx/log/python.error.log;
 
        #配置django admin需要的文件(如果启用的django的admin功能)
        location ~* ^/media/(css|img|js)/.*$ {
                root /usr/local/lib/python2.6/site-packages/django/contrib/admin;
                expires 30d;
                break;
        }
        location / {
                fastcgi_pass unix:/tmp/python.sock;
                #如果上面是采用端口的启动则
                #fastcgi_pass 127.0.0.1:9001;
                fastcgi_pass_header Authorization;
                fastcgi_intercept_errors off;
                fastcgi_param PATH_INFO         $fastcgi_script_name;
                fastcgi_param REQUEST_METHOD    $request_method;
                fastcgi_param QUERY_STRING      $query_string;
                fastcgi_param CONTENT_TYPE      $content_type;
                fastcgi_param CONTENT_LENGTH    $content_length;
                fastcgi_param SERVER_PORT       $server_port;
                fastcgi_param SERVER_PROTOCOL   $server_protocol;
                fastcgi_param SERVER_NAME       $server_name;
                fastcgi_param REQUEST_URI       $request_uri;
                fastcgi_param DOCUMENT_URI      $document_uri;
                fastcgi_param DOCUMENT_ROOT     $document_root;
                fastcgi_param SERVER_ADDR       $server_addr;
                fastcgi_param REMOTE_USER       $remote_user;
                fastcgi_param REMOTE_ADDR       $remote_addr;
                fastcgi_param REMOTE_PORT       $remote_port;
                fastcgi_param SERVER_SOFTWARE   "nginx";
                fastcgi_param GATEWAY_INTERFACE "CGI/1.1";
        }
}

 

之后,就可以通过域名访问django的项目啦。
posted @ 2014-08-26 20:14  stubborn412  阅读(473)  评论(0编辑  收藏  举报