安装基本软件
1 2
| sudo apt-get install python-dev nginx pip install uwsgi
|
配置uwsgi和django的集成
1 2 3 4 5 6 7 8 9 10 11
| vim test.py 创建test.py,添加如下代码 def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return "Hello World"
然后执行shell命令: uwsgi –http :8001 –wsgi-file test.py
访问网页: curl http://127.0.0.1:8001/ Hello World
|
#编写django_wsgi.py文件,将其放在与文件manage.py同一个目录下:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
import os import sys
reload(sys) sys.setdefaultencoding('utf8')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "yoursite.settings")
from django.core.handlers.wsgi import WSGIHandler application = WSGIHandler()
|
连接django和uwsgi,实现简单的WEB服务器。
我们假设你的Django项目的地址是/home/work/src/sites/testdjango1/testdjango/mysite
,
然后,就可以执行以下命令:
uwsgi –http :8000 –chdir /home/work/src/sites/testdjango1/testdjango/mysite –module django_wsgi
这样,你就可以在浏览器中访问你的Django程序了。所有的请求都是经过uwsgi传递给Django程序的。
集成django,uwsgi和nginx部署:
- 在django项目根目录创建启动uwsgi的xml文件:
1 2 3 4 5 6 7
| <uwsgi> <socket>:8077</socket> <chdir>/home/work/src/sites/testdjango1/testdjango/mysite</chdir> <module>django_wsgi</module> <processes>4</processes> <daemonize>uwsgi.log</daemonize> </uwsgi>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak vim /etc/nginx/sites-available/default 修改如下:
server {
listen 80; server_name localhost; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log;
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/ { root /home/hz/PycharmProjects/myscrapy/check_ip/; expires 24h; access_log off; } }
|
如果不能访问日志文件,修改相关文件的权限即可
1 2 3 4 5 6 7 8 9
| 重启Nginx服务器,以使Nginx的配置生效。 nginx -s reload 重启后检查Nginx日志是否有异常。
启动uWSGI服务器
cd /home/work/src/sites/testdjango1/testdjango/mysite
uwsgi -x djangochina_socket.xml
|
1 2 3 4
| settings.py文件中指定STATIC_ROOT路径 python manage.py collectstatic
修改nginx配置文件指定目录到STATIC_ROOT
|