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。反正搞了一天总算完成了。小高兴...... 谢谢杰总的帮助和红黄满同学的帖子!