Django 快速实战入门(八):部署 Django
作者:Hily 原始链接:http://hily.me/blog/2008/11/learning-django-ch8/
版权声明:可以转载,转载时务必以超链接形式标明文章原始出处和作者信息及版权声明
本节中,我们要彻底脱离测试服务器,以 gentoo+nginx+flup 为例,把我们的留言板部署到正式的服务器中。
在我们的 Web 服务器架构中,nginx 作为前端的 HTTP 服务器,而 flup 在后端以 fastcgi 的方式运行。在 nginx 中设置所有对动态内容的请求都交由后端的 flup 来处理。
安装配置 nginx
如果使用 gentoo 的 emerge 安装,则直接执行以下命令即可安装 nginx:
USE=fastcgi emerge nginx
如果要进行编译方式安装,在运行 ./configure 时请启动 fastcgi,可以参考以下选项:
gentoo ~ # /usr/sbin/nginx -V
nginx version: nginx/0.7.19
configure arguments: --prefix=/usr --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access_log --error-log-path=/var/log/nginx/error_log --pid-path=/var/run/nginx.pid --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi --with-md5-asm --with-md5=/usr/include --with-sha1-asm --with-sha1=/usr/include --with-http_realip_module --with-http_ssl_module --with-http_perl_module
配置 /etc/nginx/nginx.conf:
user nginx nginx;
worker_processes 1;error_log /var/log/nginx/error_log info;
events {
worker_connections 8192;
use epoll;
}http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
charset utf-8;log_format main
'$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_x_forwarded_for" "$gzip_ratio"';client_header_timeout 10m;
client_body_timeout 10m;
send_timeout 10m;connection_pool_size 256;
client_header_buffer_size 1k;
large_client_header_buffers 4 2k;
request_pool_size 4k;gzip on;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain;output_buffers 1 32k;
postpone_output 1460;sendfile on;
tcp_nopush on;
tcp_nodelay on;keepalive_timeout 75 20;
ignore_invalid_headers on;
index index.html;
include sites/*.enable;
}
新建 /etc/nginx/sites/myblog.enable:
server {
listen 80;
server_name 192.168.1.6;
charset utf-8;access_log /var/log/nginx/myblog.access.log main;
error_log /var/log/nginx/myblog.error.log info;location /media {
root /home/www/myblog/media;
}location / {
include flup_params;
}
}
管理后台中有部分静态资源,将它们复制到 /home/www/myblog/media 目录下:
cp -r /usr/lib/python2.4/site-packages/django/contrib/admin/media /home/www/myblog/media
/etc/nginx/flup_params 内容为:
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param PATH_INFO $fastcgi_script_name;fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;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;# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;fastcgi_pass 127.0.0.1:2380;
这里设置 fastcgi 的 ip:port 为 127.0.0.1:2380。
配置完毕后重新启动 nginx:
/etc/init.d/nginx restart
安装 flup 并启动 fastcgi
如果使用 gentoo 的 emerge 方式安装,输入以下命令即可:
emerge -pv flup
如果使用 Python eggs 方式安装,则需要到 flup 官网 http://trac.saddi.com/flup 上下载压缩包,再进行安装:
gentoo ~ # wget http://www.saddi.com/software/flup/dist/flup-1.0.1.tar.gz
gentoo ~ # tar zxf flup-1.0.1.tar.gz
gentoo ~ # cd flup-1.0.1
gentoo flup-1.0.1 # python setup.py install
启动 fastcgi:
python manage.py runfcgi host=127.0.0.1 port=2380
打开 http://192.168.1.6/message/ 和 http://192.168.1.6/admin/, 看看是否与测试服务器时一致呢?
结束
本文到此已结束,希望通过本文你已经大致了解 Django 的 MVT 架构,并能利用 Django 进行应用开发。
最后附上文中代码的压缩包:myblog.zip。
-- EOF --


map 说道:
2009年03月10日 16:02
这是我见过最详细的一篇,thanks
藏宝图» Blog Archive » Django 快速实战入门(七):admin 应用 说道:
2009年03月19日 22:25
[...] Django 快速实战入门(八):部署 Django [...]
藏宝图» Blog Archive » Django 快速实战入门(八):部署 Django 说道:
2009年03月19日 22:27
[...] 原始链接:http://hily.me/blog/2008/11/learning-django-ch8/ [...]
guan 说道:
2009年04月09日 11:40
入门篇,适合像我这样的初学者。谢谢了
Ken 说道:
2010年05月06日 17:09
非常感谢!