1、仅有Django
新建项目:
django-admin.py startproject mysite
测试Django可以使用Django内置的开发服务器,这是开发期间一个内建的、轻量级的 web 服务:
python manage.py runserver
访问http://127.0.0.1:8000/即可看到一个 Django 欢迎页面 [ It worked ! ]。
自定义的Django项目:
在mysite/mysite目录下建一个views.py文件:
from django.http import HttpResponse
def hello(request):
return HttpResponse('Hello World')
在同一目录下修改urls.py文件:
from mysite.views import hello
...
url(r'^hello/$', hello)
这样访问http://127.0.0.1:8000/hello/,就能显示 [ Hello World ]。
2、uWSGI+Django
uwsgi的运行方式有命令行式或配置文件式(xml、ini、json)
1).命令行式:
a、工作对象仅有一个文件
写一个test.py:
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b'Hello World']
运行uwsgi:
uwsgi --http :8001 --wsgi-file test.py
访问http://127.0.0.1:8001/显示 [ Hello World ]。
b、工作对象为Django项目
在Django项目下建立django_wsgi.py:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()
运行uwsgi:
uwsgi --http :8001 --chdir /home/.../mysite --module django_wsgi
看到的就是之前的Django项目 [ It worked ! ]。
2).配置文件式
就是把参数写进xml文件里,然后调用:
uwsgi --xml uwsgi.xml
每次执行uwsgi命令时,就会按照参数新建几个进程,在命令行下或者配置文件指定的log文件下可以看到相关信息。
命令行可以用Ctrl+C结束进程,配置文件只能用:
killall -9 uwsgi
3、Nginx+uWSGI+Django
首先需要找到nginx配置文件的位置:
nginx -t
然后vim打开nginx.conf,在http{}内添加如下内容:
server {
listen 81;
server_name 127.0.0.1;
access_log /home/.../access.log;
error_log /home/.../error.log;
location / {
uwsgi_pass 127.0.0.1:8077;
include uwsgi_params;
}
location /static/ {
alias /home/.../static/;
index index.html index.htm;
}
location /media/ {
alias /home/.../media/;
}
}
这样nginx就可以工作了,重启nginx使用:
nginx -s reload
这里nginx会将请求通过127.0.0.1:8077传递给uwsgi,所以需要将uwsgi配置成相应的端口:
编辑uwsgi.xml:
<uwsgi>
<socket>127.0.0.1:8077</socket>
<chdir>/home/.../mysite</chdir>
<pythonpath>/home/.../mysite</pythonpath>
<module>django_wsgi</module>
<processes>2</processes>
<daemonize>uwsgi.log</daemonize>
</uwsgi>
这里pythonpath在有些系统不能省略,比如centos,否则提示找不到django_wsgi模块(就是第二步b建立的django_wsgi.py文件),但通过命令行--module django_wsgi可以找到。
重启uwsgi前需要结束之前的进程:
killall -9 uwsgi
然后:
uwsgi -x uwsgi.xml
访问127.0.0.1:81可以看到Django项目 [ It worked ! ],访问:80端口是nginx的默认界面。
访问127.0.0.1:81/static/index.html可以看到static目录下的静态网页index.html。