使用过django来开发网页的人都知道,django的manage.py自带了一个runserver命令,这个命令使得本地调试非常方便,然而在真正上线网站时对并发能力的支持非常重要,本教程教你用nginx+uwsgi来将django应用部署在服务器上。
教程:
1.首先保证django项目在本地调试完毕。(这是废话)
2.在服务器安装好nginx和uwsgi两个软件。(yum或者apt-get)
3.找到nginx.conf文件(位置在/usr/local/nginx/conf/nginx.conf),可以把这个nginx.conf文件作为模版,拷贝为另一个你自己的配置文件zcy.conf
4.修改zcy.conf,如果权限不够在第一行加上
user root your_username; #用户名是在服务器中的用户名
主要修改zcy.conf的server段如下:
server { listen 8183;#本地运行端口 server_name 10.10.255.115;#本地运行ip location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8077; #(本地环回端口) } location /static { root /home/your_username/.../mysite; #到mysite文件夹的绝对路径 #用nginx来管理静态文件,否则会出现css样式丢失问题 } }
5.下一步在django项目文件夹mysite下创建两个文件:
django_wsgi.py文件内容如下:
#coding=utf-8 import os import sys import django.core.handlers.wsgi #if not os.path.dirname(__file__) in sys.path[:1]: #sys.path.insert(0, os.path.dirname(__file__)) reload(sys) sys.setdefaultencoding('utf8') os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' #application = django.core.handlers.wsgi.WSGIHandler() from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
注意:上面注释掉的两行是一些教程中给出的,版本比较老,函数神马的都用不了了~
conf.xml配置文件内容如下:
<uwsgi> <socket>:8077</socket> #本地环回端口,与zcy.conf文件中的相对应 <chdir>/home/your_username/.../mysite</chdir> #与zcy.conf中的路径一致,到mysite的绝对路径 <module>django_wsgi</module> #指定与本文件同级的django_wsgi.py文件 <processes>4</processes> <span style="white-space:pre"> </span>#进程数设置为4 <daemonize>uwsgi.log</daemonize> #日志文件 </uwsgi>
基本设置为以上,更多设置可以查看uwsgi配置文件的参数说明。
6.以上均设置好后,就可以上线网站了。
首先,开通服务器上的nginx服务。
命令:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/zcy.conf
(如果该命令出现端口占用的提示,就杀掉上一个占用端口的nginx进程)
然后,在mysite目录里,开通uwsgi。
命令:uwsgi -x conf.xml
7.最后在浏览器中输入10.10.255.115:8183(取决于服务器的ip和端口)去看看吧,一切正常!