代码准备:
1、用Django编写一个“Hello World”服务
2、在项目目录下运行 python manage.py runserver
3、通过浏览器访问 http://127.0.0.1:8000/
以上就是我们在做Django web开发的时候,常用的一种部署调试方式。然而,对于实际的生产部署工作,我们需要更强大部署形态,这里我们采用 Django + Uwsgi + Nginx 的架构组合。
WSGI
在生产环境中可以使用WSGI作为python web的服务器
WSGI:全拼为Python Web服务器网关接口,Django项目默认会生成一个wsgi.py文件,确定了设置模块。
uWSGI实现了WSGI的所有接口,是一个快速,自我修复,开发人员和系统管理员友好的服务器,C语言编写,效率高。
uWSGI安装
1、下载tar包
下载地址:https://pypi.org/project/uWSGI/
2、上传安装
将 uwsgi-2.0.17.1.tar.gz 上传到目标服务器,解压。进入解压后的目录,运行:python setup.py install
uWSGI配置
在Django项目下新建 uwgsi.ini,内容如下:
uWSGI使用
启动uwsgi.ini,需要切换到项目目录
启动uwsgi: uwsgi --ini uwsgi.ini
查看uwsgi进程:ps aux|grep uwsgi
关闭uwsgi : 网上有多种命令关闭方式,不过在我的机器好像不好用,所以我是直接 kill 掉上面ps命令得到的pid
uWSGI 的优势
提高并发访问支持(可以灵活的配置进程数和线程数)
提高服务运行稳定性(参考其他大咖的说法,目前还不知道怎么证明)
Nginx
使用nginx的的作用主要包括负载均衡,反向代理
Nginx安装
wget http://nginx.org/download/nginx-1.7.8.tar.gz
tar xf nginx-1.7.8.tar.gz
cd nginx-1.7.8
./configure --prefix=/usr/local/nginx-1.7.8
make && make install
整个安装过程可能有许多依赖问题要解决,出现时再百度即可。
Nginx配置
首先需要重新配置 uwsgi.ini,如下:
然后还需要配置 /usr/local/nginx1.7.8/conf/nginx.conf,如下
Nginx 运行
nginx //启动
nginx -s stop/quit //停止
nginx -s reload //重启加载配置