django+uwsgi+nginx环境搭建、部署!

选择版本:

uwsgi :http://projects.unbit.it/downloads/

Flup:http://www.saddi.com/software/flup/dist/

flup不是可以直接拿来用的东西。flup是使用 Python 语言对 WSGI 的一种实现,是可以用
于 Python 的应用开发中的一种工具或者说是一种库。

Nginx:http://www.nginx.org/download/

因为要用xml配置django.xml,安装libxml2-dev*

1 yum install -y libxml2-dev*

安装uwsgi:

1 tar zxvf uwsgi-latest.tar.gz
2 cd uwsgi-1.2.6
3 make -f Makefile      # 参考的红黄满同学写的一个范例 make -f Makefile.Py26 他在后面加了个python的版本,不过可能会报错,不加也没问题。
4 cp uwsgi /usr/sbin/uwsgi

安装flup和nginx,很简单了就。

django中启动web服务的文件:django_wsgi.py

1 #!/usr/bin/env python
2 # coding: utf-8
3 
4 import os
5 
6 os.environ["DJANGO_SETTINGS_MODULE"] = "bbs.settings"
7 
8 from django.core.handlers.wsgi import WSGIHandler
9 application = WSGIHandler()

 

写个配置文件:django.xml

 1 <uwsgi>
 2     <socket>:8000</socket>  // 设置服务的端口号
 3     <master/>
 4     <!--
 5     <processes>5</processes>   // 启动的进程数
 6     -->
 7     <chdir>/home/test/bbs</chdir>  // django_wsgi.py 放置的地方,可以直接写成 <pythonpath>/home/test/bbs</pythonpath>这关系到settings.py路径
 8     <pythonpath>..</pythonpath>
 9     <module>django_wsgi</module>    // 告诉uwsgi启动的服务的模块 django_wsgi
10     <!--
11     <daemonize>/var/log/nginx/bbs.cnhei.info.log</daemonize>   // 设置uwsgi服务日志的路径
12     <limit-as>256</limit-as>          // 限定内存大小为256  
13     -->
14 </uwsgi>

这两个文件都放到/home/test/bbs 目录下。

然后搞下nginx的配置文件:

进入到nginx安装目录:

# cd /etc/nginx

然后见一个目录放置虚拟主机的配置文件:

# mkdir vhost

编辑django项目的配置文件 #

 # vim bbs.cnhei.info.conf

1 server { 2 3 listen 80; 4 server_name bbs.cnhei.info; # 设置虚拟主机的名称 5 6 access_log /var/log/nginx/bbs.cnhei.info-access.log; # 访问日志 7 error_log /var/log/nginx/bbs.cnhei.info-error.log;    # 错误日志 8 9 10 location / { 11 12 root /home/test/bbs;     # 项目的目录 13 14 uwsgi_pass 127.0.0.1:8000;     # 启动这个项目web服务要开放的端口 15 #uwsgi_param UWSGI_CHDIR /home/test/bbs; 16 #uwsgi_param UWSGI_SCRIPT wsgi; 17 include uwsgi_params;   18 19 20 } 21 }

都保存到vhost中,是为了更好的管理更多的虚拟主机。

保存好后,修该nginx.conf

 1 user  nginx;
 2 worker_processes  1;
 3 
 4 error_log  /var/log/nginx/error.log warn;
 5 pid        /var/run/nginx.pid;
 6 
 7 
 8 events {
 9     worker_connections  1024;
10 }
11 
12 
13 http {
14     include       /etc/nginx/mime.types;
15     default_type  application/octet-stream;
16 
17     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
18                       '$status $body_bytes_sent "$http_referer" '
19                       '"$http_user_agent" "$http_x_forwarded_for"';
20 
21     access_log  /var/log/nginx/access.log  main;
22 
23     sendfile        on;
24     #tcp_nopush     on;
25 
26     keepalive_timeout  65;
27 
28     #gzip  on;
29 
30     include /etc/nginx/conf.d/*.conf;
31     include vhost/*.conf;              # 包含vhost中所有.conf的配置文件
32 }

然后重启nginx,/etc/init.d/nginx restart

然后执行:uwsgi -x /home/test/bbs/django.xml

这样在浏览器访问:bbs.cnhei.info就ok了,不过到别的机器上就访问不了了。因为连着外网呢。会自动去dns

服务器上解析这个地址。会找不到这个页面。暂时还没有想怎么在内网让别的机器也能访问。


PS:

个人觉得自己值得注意的地方就是django.xml和django_wsgi.py两个文件放置的位置,一定要注意配置文件

中的写的path。xml中的path也关系到,django_wsgi.py导入settings。路径没写对。让我愁了好久。今天

搞了一天,其中对让我费时间的地方就是,在配置server_name的那个地方。每次写好后访问的时候都会跳转

到联通的域名错误提示的页面。之前配置apache的时候,写个百度也能默认调到自己的页面(连着外网的)。

不是特别了解nginx。反正搞了一天总算完成了。小高兴......   谢谢杰总的帮助和红黄满同学的帖子!

 

posted on 2012-09-27 00:54  h3idan  阅读(1015)  评论(0编辑  收藏  举报

导航