使用Nginx,Gunicorn,Virtualenv,Supervisor和MySQL搭建Django生产环境

Django自带的开发者运行模式,是不适合直接运行在生产环境的。
所以需要一个WSGI server来正式部署和运行Django项目,我的选择是Gunicorn。

当然作为web入口的web server,我选择了非常流行的Nginx,使其直接服务静态文件的请求,并且转发动态请求给后端Gunicorn服务。

为了让Gunicorn的保持运行状态,在其停止后可自动拉起,所以选择了supervisor这个进程管理工具。

为了在服务器上构建独立的python运行环境,所以选择了virtualenv。

当然,数据库还是选择我的老朋友MySQL,在CentOS 7.2 系统上可以yum直接安装mariadb。至于MySQL和mariadb的细节差别,对我来说无关紧要。

关于 Django+MySQL+Gunicorn+Supervisor+Virtualenv 这个技术栈的环境搭建配置,主要还是参考:
http://zqpythonic.qiniucdn.com/data/20130901152951/index.html

这里只提几点注意事项:
1. 生产环境,Django需要关闭debug模式

2. 使用supervisor来管理进程,不要启动daemon模式,所以我设置了gunicorn的“daemon=False”
3. 上面那个参考文档中的,supervisor使用的.conf结尾的配置文件,但我在CentOS中yum安装的supervisord要求是使用.ini结尾的配置。
以为它的supervisord.conf中配置有:

4. nginx上让静态资源直接由nginx服务而不需要走gunicorn,我使用了try_files这个指令:

5. 在CentOS 7.2 上,我使用的一些命令:

6. virtualenv是个好东西,virtualenv入门推荐这2篇:
http://kuanghy.github.io/2015/12/04/virtualenv
http://pythonguidecn.readthedocs.io/zh/latest/dev/virtualenvs.html

master

Stay hungry, stay foolish.

发表评论

电子邮件地址不会被公开。 必填项已用*标注