使用过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> #进程数设置为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和端口)去看看吧,一切正常!