发布于 2016-01-04 05:45:55 | 291 次阅读 | 评论: 0 | 来源: PHPERZ
Django Python WEB开发框架
Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。
由于一个监控项目(使用django开发)交接到所在项目组,需要了解python的web开发和环境搭建。
这里记录环境的搭建流程,以及遇到的问题和处理方案。
环境信息: CentOS 6.6 (内网IP:100.84.73.45) Nginx 1.2.8 Python 2.6.6 Django 1.6 uwsgi 2.0.11.2
注意:Django1.6匹配的python最高版本是2.6,如果安装太高版本的django,需要使用python2.6以上版本,否则安装过程会报错:invalid syntax
这里我的机器自带了python2.6.6,就不介绍python的安装了。
pip是python的包管理工具,我们使用pip进行python的管理
# wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
# python get-pip.py
uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。
# export LDFLAGS="-Xlinker --no-as-needed"
# pip install uwsgi
创建一个test.py的测试文件
# pwd
/home/test/django
# touch test.py
# vim test.py
test.py内容如下:
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return "Hello World"
# pwd
/home/test/django
# uwsgi --http :13010 --wsgi-file test.py
在浏览器中输入:http://100.84.73.45:13010
uwsgi安装和启动正常。
由于使用的是python2.6.6,因此需要安装1.6版本的django。
安装指定版本的django的方式如下:
# pip install -v django==1.6
# pwd
/home/test/django
# django-admin.py startproject MySite
# ls
MySite test.py
# pwd
/home/test/django
# cd MySite
# uwsgi --http :13010 --wsgi-file MySite/wsgi.py
在浏览器中输入:http://100.84.73.45:13010
到此django安装成功,并且和uwsgi结合成功。
也可以使用如下命令启动django工程
# pwd
/home/test/django/MySite
# uwsgi --http :13010 --module MySite.wsgi
如果是单独调试django,可以使用django自带的简单服务器进行。
# pwd
/home/test/django/MySite
# python manage.py runserver 0.0.0.0:13010
我们采用源码方式安装。 搜狐镜像下载地址:http://mirrors.sohu.com/nginx/ 我选择的是 1.2.8 版本
安装步骤,可以看这里:http://xyuex.blog.51cto.com/5131937/1013414
# pwd
/home/test/local/nginx
# touch nginx_django_unix.conf
nginx_django_unix.conf内容如下:
worker_processes 2;
events {
use epoll;
worker_connections 1024;
}
http {
include conf/mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
gzip on;
upstream django {
#server 127.0.0.1:13010; # nginx使用tcp方式与uwsgi交互
server unix:///home/test/django/MySite/MySite.sock; # nginx使用unix本地socket方式与uwsgi交互
}
server {
listen 13000;
server_name uwsgi_django;
client_max_body_size 75M;
location / {
uwsgi_pass django;
uwsgi_pass_header http;
uwsgi_read_timeout 300;
include conf/uwsgi_params;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
# pwd
/home/test/django/MySite
# uwsgi --socket ./MySite.sock --module MySite.wsgi
# cd ~/local/nginx
# pwd
/home/test/local/nginx
# sbin/nginx -c nginx_uwsgi.conf
在浏览器中输入:http://100.84.73.45:13000
到此 nginx uwsgi django三个完成了结合。
nginx与uwsgi有三种交互方式:http、tcp、unix本地sock http方式主要是利用nginx的反向代理功能。 TCP方式是ngix通过tcp方式和uwsgi交互。 unix本地sock是通过本地的sock文件进行交互。
# uwsgi --socket ./MySite.sock --module MySite.wsgi
并且nginx的upsteam配置sock文件地址
# uwsgi --socket :13010 --module MySite.wsgi
并且nginx的upsteam配置ip和端口
# uwsgi --http:13010 --module MySite.wsgi
nginx的完整配置如下:
worker_processes 2;
events {
use epoll;
worker_connections 1024;
}
http {
include conf/mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
gzip on;
upstream django {
server 127.0.0.1:13010;
}
server {
listen 13000;
server_name uwsgi_django;
client_max_body_size 75M;
location / {
proxy_pass http://django; # 注意这里使用的是proxy_pass协议是http
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}