连接django和uwsgi,实现简单的WEB服务器 我们假设你的Django项目的地址是/home/ubuntu/mysite 然后,进入项目目录下 cd /home/ubuntu/mysite,就可以执行以下命令: uwsgi –http :8000 –chdir /home/ubuntu/mysite –module django_wsgi 这样,你就可以在浏览器中访问你的Django程序了。 选择一个浏览器输入:http://115.159.214.215:8000/ 注意:IP地址换成自己的主机IP 所有的请求都是经过uwsgi传递给Django程序的界面展示与django自启的时候一样,
Nginx安装 1、安装 sudo apt-get install nginx
2、查看nginx版本 -v 显示 nginx 的版本:nginx -v -V 显示 nginx 的版本,编译器版本和配置参数:nginx -V
3、测试是否已经成功安装好nginx a、启动Nginx /etc/init.d/nginx start #启动 /etc/init.d/nginx stop #关闭 /etc/init.d/nginx restart #重启 b、启动nginx后,在浏览器中访问自己的主机IP:http://115.159.214.215/ 或者 http://115.159.214.215:80 可看到如下界面表示成功安装:
实现Nginx与uWSGI的连接 为了实现Nginx与uWSGI的连接,两者之间将采用soket来通讯方式。 在本节中,我们将使用uWSGI配置文件的方式来改进uWSGI的启动方式。 假定你的项目目录是 /home/ubuntu/mysite 我们将要让Nginx采用8077端口与uWSGI通讯,请确保此端口没有被其它程序采用。 注意,请确定你在上面步骤中 django_wsgi.py 文件已经存在了。 新建一个XML文件:djangochina_socket.xml 将它放在你的项目目录下,如:/home/ubuntu/mysite
:8077/home/ubuntu/mysitedjango_wsgi4uwsgi.log
:8077/home/ubuntu/mysitedjango_wsgi4uwsgi.log
在上面的配置中,我们使用 uwsgi.log 来记录日志,开启4个进程来处理请求。 这样,我们就配置好uWSGI了。
配置Nginx 我们假设你将会把Nginx程序日志放到你的目录 /var/log/nginx 下,请确保该目录存在。 我们假设你的Django的static目录是 /home/ubuntu/mysite/static media目录是 /home/ubuntu/mysite/media 请确保这些目录存在。 我们假设你的域名是 www.you.com (在调试时你可以设置成你的机器IP) 我们假设你的域名端口是 80(在调试时你可以设置一些特殊端口如 8070) 基于上面的假设,我们为 /etc/nginx/nginx.conf 添加以下配置: 在http{…}中的最后一行添加:
server {
listen 80; server_name 115.159.214.215; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; #charset koi8-r; #access_log logs/host.access.log main; location / { include /etc/nginx/uwsgi_params; uwsgi_pass 127.0.0.1:8077; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location /static/ { alias /home/ubuntu/mysite/static/; index index.html index.htm; } location /media/ { alias /home/ubuntu/mysite/media/; } location /templates/ { alias /home/ubuntu/mysite/templates/; } }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 在上面的设置后,可以让Nginx来处理静态文件(/static/ 和 /media/ )。非静态文件请求Nginx会发给 socket 8077,然后让uWSGI来进行处理。
Nginx+uWSGI+Django的实现方式 在完成上面配置后,需要按以下步骤来做: 1、重启Nginx服务器,以使Nginx的配置生效。 nginx -s reload (root权限执行) 重启后检查Nginx日志是否有异常。 vim /var/log/nginx/error.log 查看 error.log 文件内容是否有异常信息
2、启动uWSGI服务器 cd /home/ubuntu/mysite uwsgi -x djangochina_socket.xml 检查日志 uwsgi.log 是否有异常发现。 uwsgi.log 日志文件生成在项目目录下,所以进入项目目录执行 vim uwsgi.log 查看
3、访问服务 基于上面的假设你的域名是www.you.com(本节我设置的是IP地址) 因此,我们访问 www.you.com 我用的IP访问:http://115.159.214.215:8077/ 如果发现程序与 单独使用Django启动的程序一模一样时,就说明成功啦!
4、关闭服务的方法 将uWSGi进程杀死即可。 sudo killall -9 uwsgi
注意: 1、html文件中静态文件的路径设置,应设置为能够通过nginx访问的地址(巨坑啊,不然会一直加载不了css样式和js文件)
