`

Django on Nginx

阅读更多

http://wiki.freebsdchina.org/doc/n/nginx_django

Django on Nginx

建议:FreeBSD RELENG_6 
使用心得:nginx处理大并发比较稳定,特别省内存,配置简单. 
1.安装python

cd /usr/ports/lang/python
make install clean 

2.安装flup

cd /usr/ports/www/py-flup 
make install clean 

3.安装django 1)

cd /usr/ports/www/py-django  
make install clean

4.安装nginx

cd /usr/ports/www/nginx
make install clean 

5.启动和管理flup的脚本 参考http://docs.djangoproject.com/en/1.0/howto/deployment/fastcgi/ 

5.1prefork方式

#!/bin/sh
# Replace these three settings.
PROJDIR="/home/user/myproject"
PIDFILE="$PROJDIR/mysite.pid"
SOCKET="$PROJDIR/mysite.sock"
cd $PROJDIR
if [ -f $PIDFILE ]; then
    kill `cat -- $PIDFILE`
    rm -f -- $PIDFILE
fi
exec /usr/local/bin/python manage.py runfcgi method=prefork socket=${SOCKET} pidfile=${PIDFILE} minspare=5 maxspare=10 maxchildren=40

5.2threaded方式

/usr/local/bin/python manage.py runfcgi method=threaded host=127.0.0.1 port=3033

6.配置nginx 参考http://wiki.codemongers.com/Main
nginx.conf

user  www www;
worker_processes  5;
pid /var/run/nginx.pid;
error_log  /var/log/httpd/error.log warn;
events {
    worker_connections  10240;
    use kqueue;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] '
            '"$request" $status $bytes_sent '
            '"$http_referer" "$http_user_agent" '
            '"$gzip_ratio"';
    client_header_timeout  3m;
    client_body_timeout    3m;
    send_timeout           3m;
    connection_pool_size        256;
    client_header_buffer_size    1k;
    large_client_header_buffers    4 2k;
    request_pool_size        4k;
    output_buffers   4 32k;
    postpone_output  1460;
    sendfile        on;
    tcp_nopush             on;
    keepalive_timeout      75 20;
    tcp_nodelay            on;
    client_max_body_size       10m;
    client_body_buffer_size    256k;
    proxy_connect_timeout      90;
    proxy_send_timeout         90;
    proxy_read_timeout         90;
    client_body_temp_path      /var/log/nginx/client_body_temp;
    proxy_temp_path            /var/log/nginx/proxy_temp;
    fastcgi_temp_path          /var/log/nginx/fastcgi_temp;
    gzip on;
    gzip_min_length  1100;
    gzip_buffers     4 32k;
    gzip_types       text/plain text/html application/x-javascript text/xml text/css;
    ignore_invalid_headers    on;
    include    website.conf;
}

website.conf 
6.1prefork方式

server {
    listen 80;
    server_name test.tmdxy.org;
    access_log    /var/log/httpd/access.log main;
    location / {
            # host and port to fastcgi server
            fastcgi_pass unix:/tmp/test_tmdxy.sock;
            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_pass_header Authorization;
            fastcgi_param REMOTE_ADDR           $remote_addr;
            fastcgi_param SERVER_PROTOCOL       $server_protocol;
            fastcgi_param SERVER_PORT           $server_port;
            fastcgi_param SERVER_NAME           $server_name;
            fastcgi_intercept_errors off;
        }
    location ^~ /media/ {
        alias    /home/www/django/test_tmdxy_org/meida/;
    }
    location ~* ^.+\.(gif|png|jpg|jpeg|css|swf|htm|html|asp|php|jsp|js|doc|txt)$ {
        root    /home/www/django/test_tmdxy_org/media/;
        access_log   off;
    }
}

6.2threaded方式

server {
    listen 80;
    server_name test.tmdxy.org;
    access_log    /var/log/httpd/access.log main;
    location / {
            # host and port to fastcgi server
            fastcgi_pass 127.0.0.1:3033;
            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_pass_header Authorization;
            fastcgi_param REMOTE_ADDR           $remote_addr;
            fastcgi_param SERVER_PROTOCOL       $server_protocol;
            fastcgi_param SERVER_PORT           $server_port;
            fastcgi_param SERVER_NAME           $server_name;
            fastcgi_intercept_errors off;
        }
    location ^~ /media/ {
        alias    /home/www/django/test_tmdxy_org/meida/;
    }
    location ~* ^.+\.(gif|png|jpg|jpeg|css|swf|htm|html|asp|php|jsp|js|doc|txt)$ {
        root    /home/www/django/test_tmdxy_org/media/;
        access_log   off;
    }
}

7.配置反向代理服务器 
只需在server {}里加入

location /go/ {
    proxy_pass http://192.168.1.5:8088/; 
    proxy_redirect http://192.168.1.5:8088/ /;
}

8.nginx+django推荐打的补丁 http://code.djangoproject.com/ticket/8874 
主要解决,nginx+django,访问/的时候,无法正确映射到django的方法的问题.

分享到:
评论

相关推荐

    Django+nginx+uwsgi在linux系统上配置文件

    在构建高性能的Web应用时,Django作为Python的主流Web框架,经常与Nginx和uWSGI结合使用。Nginx是一个强大的反向代理服务器,用于处理静态资源和HTTP请求分发,而uWSGI则是一个应用服务器,能够高效地运行Django应用...

    Centos部署django服务nginx+uwsgi的方法

    ### Centos部署Django服务Nginx+uWSGI的方法详解 #### 一、概述 在CentOS系统中部署基于Django的服务时,通常会采用Nginx作为反向代理服务器,uWSGI作为应用服务器的方式。这种方式可以充分利用Nginx的高性能特性...

    nginx配置优化+负载均衡+动静分离详解

    ### Nginx配置优化、负载均衡与动静分离详解 #### 一、Nginx配置优化 在现代Web应用中,Nginx作为一种高性能的HTTP服务器和反向代理服务器,在提高网站响应速度、处理高并发连接方面起着至关重要的作用。通过对...

    Qt登录及Nginx上传回调及Django上传服务器等

    ### Qt登录及Nginx上传回调及Django上传服务器等 #### 1. 开始 本文档继续前文的研究,重点在于使用Qt设计一个登录系统,该系统在用户登录成功后能够上传文件,并通过Nginx上传模块进行文件管理。同时,通过Django...

    使用Nginx+uWsgi实现Python的Django框架站点动静分离

    ### 使用Nginx+uWsgi实现Python的Django框架站点动静分离 #### 知识点概述 在本文中,我们将详细介绍如何通过结合Nginx 和 uWsgi 实现一个高效的 Django 应用部署方案。这种方法的核心优势在于利用 Nginx 的强大...

    django+cas环境部署

    2. **Nginx**:作为前端的负载均衡器和反向代理服务器,Nginx监听外部端口8000,并将请求转发至内部Django应用所在的5050端口。此外,Nginx还负责反向代理Elasticsearch服务,使得外部可以直接通过Nginx的8081端口...

    阿里云服务器配置nginx+https

    mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old ``` 将新编译的Nginx复制到相应目录: ```bash cd objs/ cp nginx /usr/local/nginx/sbin/ ``` 进行平滑升级: ```bash cd .. make upgrade ``...

    django-on-docker:这是使用Nginx,Gunicorn和PostgreSQL在Docker上构建Django环境的示例

    django-on-docker 这是使用Nginx,Gunicorn和PostgreSQL在Docker上构建Django环境的示例。用法Git克隆$ git clone git@github.com:dsonoda/django-on-docker.git建立开发环境目标使用docker-compose在单个主机上设置...

    Django项目uwsgi+Nginx保姆级部署教程实现

    在本文中,我们将深入探讨如何实现Django项目的部署,使用uwsgi和Nginx作为关键组件。Django是一个强大的Python Web框架,而uwsgi是一个高效的应用服务器,用于处理Web应用程序,而Nginx则是一个高性能的反向代理...

    django-on-docker:Django + Postgresql + Gunicorn + LetsEncrypt + Nginx

    总结起来,"django-on-docker"项目是利用Docker容器化技术,搭建了一个包含Django应用、PostgreSQL数据库、Gunicorn服务器和Nginx反向代理的完整Web服务栈,同时还实现了通过LetsEncrypt自动获取HTTPS证书,以确保...

    基于Python(Django框架)的在线考试系统-源码

    如果需要在服务器上部署,可以使用WSGI服务器如Gunicorn或uWSGI,再配合Nginx作为反向代理和静态文件服务器。 10. **二次开发**:由于Django的模块化设计,对现有系统的扩展和定制变得容易。开发者可以根据需求增加...

    CentOS7下部署Django项目详细操作步骤1231313213.zip

    为了确保项目的顺利部署,我们将遵循一系列详细步骤,这些步骤将涵盖环境配置、Django安装、数据库设置、Nginx反向代理以及Gunicorn应用服务器的配置。 首先,确保您的系统是最新的,运行以下命令更新系统包: ```...

    django-on-docker:使用Postgres,Gunicorn和Nginx对Django进行Docker化

    使用Postgres,Gunicorn和Nginx对Django进行Docker化是否想学习如何构建? 查看 。要使用这个项目吗?发展历程使用默认的Django开发服务器。 将.env.dev-sample重命名为.env.dev 。 更新docker-compose.yml和.env....

    Ubuntu部署Django项目方法详解

    sendfile on; server { listen 80; server_name www.django.cn; charset utf-8; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8997; uwsgi_param UWSGI_SCRIPT mysite.wsgi; uwsgi_param ...

    nginx.zip在windows解压打开有两个包一个nginx压缩包和依赖包

    此外,Nginx可以与其他语言的服务配合,如Node.js、Ruby on Rails等,通过反向代理功能提供高效的Web服务。 总的来说,解压并配置Nginx.zip文件涉及到了系统环境的准备、配置文件的定制、依赖库的安装以及与其他...

    crm1_pythondjango_

    【描述】"Customer management app on django" 描述了这个项目的核心功能,即用于管理客户信息的应用。在Django中实现这样的应用,通常会涉及到以下几个关键知识点: 1. **数据库模型**:Django的ORM(对象关系映射...

    digitalocean-ubuntu-fabric:在 Digital Ocean 中使用 nginx 和 gunicorn 部署 Django 的 Fabric 集合

    在 Digital Ocean 中使用 nginx 和 gunicorn 部署 Django 的 Fabric 集合 可用命令: command Send custom command with args or not. Usag... create_package Create virtualenv create_...

    Online Bus Reservation System in Python using Django

    最后,将项目部署到服务器,如使用Gunicorn或uWSGI作为WSGI服务器,Nginx作为反向代理服务器,确保网站能够稳定、高效地对外提供服务。 通过以上步骤,我们便能利用Python Django框架构建一个功能完备的在线公交...

Global site tag (gtag.js) - Google Analytics