Posts List

Django最佳实践与部署:Nginx + Gunicorn + Supervisor(Ubuntu和CentOS)

题头 头图是我一个Django项目–Santa的代码片段,放出来给大家欣赏一下。 第一篇很技术的文章。Mrxu同学强烈要求我出个教程,基于Django的部署实在有太多坑,为后人铺条路。以下文字是我摸爬滚打无数小时换来的一个可行方案。希望对大家有所帮助。 Django最佳实践 项目结构 相信很多朋友在使用Django的时候都会遇到这个问题,项目到底如何组织?只有一个app的时候不要紧,有两个、三个甚至多个app的时候,*模板*(templates)要放在那里,*静态文件*(static files)放在哪里?由于Django社区(不像Rails)一直没有统一说法,所以此处说的只不过是仁者见仁,智者见智。希望Django早日出台官方的最佳实践。这里仅给大家一个参考。 下面我用一个myproject项目为大家阐述。这个项目由两个app组成: 每个app有自己的*static*目录 每个app有自己的*templates*目录 根目录下与项目同名的文件夹(比如这里的*myproject*)为项目设置,包含settings.py 根目录下有requirements.txt 为什么要这么做?这个在后面生产境部署的时候优势就会显现出来。 $ django-admin.py startproject myproject $ cd myproject $ python manage.py startapp myapp1 $ python manage.py startapp myapp2 $ touch requirements.txt # 新建requirement.txt $ mkdir myapp1/{static,templates} # 新建两个空文件夹 $ mkdir myapp2/{static,templates} $ tree . # 非常有用的一个命令, 图形化显示文件目录结构 . ├── manage.py ├── myapp1 │ ├── __init__.py │ ├── admin.py │ ├── models.py │ ├── static │ ├── templates │ ├── tests.