在生产环境中,一般考虑了大量用户的高并发行和稳定性,一般会使用Apache、Nginx等专业的Web服务器,从而放弃使用便于开发过程中测试代码使用的Django自带轻量级服务器。本文记录Django在Apache、Nginx的简单部署方案,以便记忆力衰退时翻阅。

Apache使用mod_python部署

安装mod_python:
sudo apt-get install libapache2-mod-python
编辑/etc/apache2/httpd.conf,添加以下配置信息:
LoadModule python_module modules/mod_python.so
<Location "/mysite/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonOption django.root /mysite
    PythonDebug On
    PythonPath "['var/www'] + sys.path"
</Location>
重启Apache,如果RP还行,即可访问Django创建的项目。注:PythonPath选项设置的目录为您项目所在目录的上级目录路径(有点儿绕)详细请参考:http://docs.djangoproject.com/en/1.3/howto/deployment/modpython/

Nginx使用Fastcgi部署

安装Nginx:
sudo apt-get install nginx
编辑/etc/nginx/sites-available/default,添加以下配置信息:
    location / {
        fastcgi_pass 192.168.1.201:5555;#Django runcgi的访问的地址
        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_intercept_errors off;
        fastcgi_param  REMOTE_ADDR        $remote_addr;
        fastcgi_param  REMOTE_PORT        $remote_port;
        fastcgi_param  SERVER_ADDR        $server_addr;
        fastcgi_param  SERVER_PORT        $server_port;
        fastcgi_param  SERVER_NAME        $server_name;
    }
重启Nginx,如果RP还行,即可访问Django创建的项目。注:Django需要启动,启动命令为:python /var/www/mysite/manage.py runfcgi method=prefork maxquests=200 daemonize=true host=192.168.1.201 port=5555 (相关参数选项可以通过--help参数查看)

由于生产环境机器的配置复杂,因此以上的配置参数需要根据环境的不同从而进行相关的设置和优化,以达到最佳的效果。