• 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的项目啦。
  • 相关阅读:
    综合布线系统工程招标文件简述
    Python3 深浅拷贝
    Python3 使用基本循环实现多级目录(思路)
    Python3 列表,元组,字典,字符串知识小结
    Python3 适合初学者学习的银行账户登录系统
    Python3乘法口诀表(由上至下+由下至上)
    VBox on 14.04: Kernel driver not installed (rc=-1908) [duplicate]
    javaee+tomcat新特性,乱码问题
    javaee+tomcat新特性,乱码问题
    RecyclerView下拉加载集合越界问题
  • 原文地址:https://www.cnblogs.com/stubborn412/p/3938125.html
Copyright © 2020-2023  润新知