您的位置:首页 > 运维架构 > Nginx

Django一:nginx+uwsgi+django+python+mac

2016-06-16 15:34 435 查看
该原文是【我的sina博文】,因为sina对IT代码支持的不是很好,所以将全部迁移到此!!!

一、它们之间的关系:

1:浏览器——》uwsgi——》django //处理python写好的web程序

注:由于uwsgi性能等原因只适合测试环境中的web请求响应,并且不能做代理、反向代理及负载分担等功能,所以一般情况使用nginx来处理客户端的请求

2:浏览器——》nginx——》uwsgi——》django //处理python写好的web程序注:nginx结合自身强大的并发处理、静态处理等特性,完成相应的处理之后,然后将动态web请求交给标准接口(wsgi)进行处理,wsgi使用标准接口连接python(此处就是ptyon的上层框架),完成整个处理过程

二、环境安装:

1、nginx for mac install:brew install nginx //brew类似linux中的yum或apt-get,是一个在线安全工具(自行安装)

$ nginx -v
nginx version: nginx/1.8.0


2、python install:默认情况下mac是自带python

$ python -V
Python 2.7.10            //(需要更换版本的,自行安装)


3、uwsgi install: //uwsgi是标准的web接口

pip install uwsgi            //pip是python的包管理器,类yum、apt-get
$ uwsgi --version
2.0.12


4、django install: //django是一个python web框架

pip install django
$ django-admin --version
1.7


三、关联性配置:

1、在你的机器上写一个test.py,测试uwsgi能够正常运行:

def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return "Hello World"
#return b"Hello World"  #有时候需要在字符前加“b”,否则不能显示


然后执行shell命令:uwsgi –http :8001 –wsgi-file test.py访问网页:http://127.0.0.1:8001/看在网页上是否有Hello World

2、新建项目,才可以运行django

$ django-admin startproject mystic        #新建一个项目(必须)


mysite
manage.py
mysite
__init__.py
urls.py
settings.py


#cd mysite
python manage.py runserver 0.0.0.0:9000        //此处可以不加ip:port,它有默认的


注:第一次测试性启动的时候,需要进行数据库同步(django版本不同,数据库同步的命令也不一样)

3、关联uwsgi和django:

编写django_wsgi.py文件,将其放在与文件manage.py同一个目录下

#!/usr/bin/env python
# coding: utf-8
import os
import sys
# 将系统的编码设置为UTF8
reload(sys)
sys.setdefaultencoding('utf8')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()


然后,就可以执行以下命令:

uwsgi --http :8000 --chdir /mysite --module django_wsgi


四、关联nginx和uwsgi:

• Nginx与uWSGI两者之间采用soket来通讯方式,使用8077端口与uWSGI通讯,请确保此端口没有被其它程序采用。

• 新建配置文件django_socket.xml,将其放在mysite目录中(与manage.py在同一个目录中)

<uwsgi>
<socket>:8077</socket>
<chdir>/mysite/</chdir>   #注意自己的文件路径
<module>django_wsgi</module>
<processes>4</processes>
<daemonize>uwsgi.log</daemonize>
<stats>127.0.0.1:9191</stats> #本地监控端口,可有可无
</uwsgi>




#官网推荐使用ini配置
[root@bogon mysite]# vim mysite.ini

[uwsgi]
socket = 127.0.0.1:8077
chdir = /usr/share/nginx/mysite/
wsgi-file = mysite/wsgi.py
processes = 4
threads = 2
stats = 127.0.0.1:9191


• 找到nginx.conf文件,进行如下修改

server {
listen   80;
server_name www.you.com;        //测试环境可以是localhost
location / {
include        uwsgi_params;  #要注意自己的环境中的文件路径
uwsgi_pass     127.0.0.1:8077;
}
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   html;
}
}
location /static/ {
alias /root/.pyenv/versions/3.5.2/lib/python3.5/site-packages/django/contrib/admin/static/;
#根据自己的静态文件目录配置,这个目录是django后台的默认静态文件,如果不配置,那么http://127.0.0.1/admin页面就会没有样式


五、关联运行:

• 重启Nginx服务器,以使Nginx的配置生效nginx -s reload

• 启动uWSGI服务器uwsgi -x djangochina_socket.xml

【uwsgi: invalid option – ‘x’】【安装libxml*】

• 访问服务http://localhost或www.you.com​

发个牢骚,sina的这个blog真不适合写代码性的文档,写的时候没有好的排版,看的人也不能很好的区别说明性文字和代码​

【官方配置文档】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  django python nginx