从零开始自动部署Django项目(一):开发配置与生产配置
来源:互联网 发布:js decodeuri utf8 编辑:程序博客网 时间:2024/06/09 19:20
引言
作为一只后端工程师,经常会碰到本地开发环境跟远程服务器生产环境配置不一样的情况,比如说本地数据库使用的是SQLite,而在远程上的数据库用的却是Mysql。
对于一些小的修改,比如数据库的密码不一样之类的,当然可以选择直接SSH登录上服务器然后开VIM修改,但是我觉得这并非一个“懒惰”的工程师的追求。
接下来我将介绍两种方法来部署不同配置的Django。当然,既然是不同的环境,两份配置文件是必须的。
准备
新建一个Django项目settingsTest,并准备两份不同的settings:
├── manage.py└── settingsTest ├── __init__.py ├── dev_settings.py ├── pro_settings.py ├── settings.py ├── urls.py └── wsgi.py
在manage.py中,django已经自动设置了读取的配置模块,当然这是可以修改的。
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settingsTest.settings")
从默认的settings中导入不同配置
在这里我不打算修改django的默认配置模块,我选择了在settingsTest.settings中导入dev_settings.py或者pro_settings.py的配置,但是如何辨别当前环境是生产环境还是开发环境呢?答案是通过设置一个生产环境才有的环境变量,然后在settings.py中判断这个环境变量的存在与否来决定导入哪一份配置。
值得注意的是,settings.py本身是一个py模块,因此在里面添加if语句是可以允许的。(详细查阅:Django Settings)
# settings.pyimport os## Default settings## Shared settings between development and productionif os.environ.get('DJANGO_PRODUCTION_SETTINGS', None): from .pro_settings import *else: from .dev_settings import *
在运行时指定不同的settings模块
manage.py在运行时还提供了–settings选项用于指定settings模块,因此用于启动django自带的debug服务器还是挺方便的。当然,如果是使用诸如uwsgi之类的生产服务器就应该通过修改manage.py中的DJANGO_SETTINGS_MODULE环境变量来实现。
python manage.py rumserver 0.0.0.0:8000 --settings=settingsTest.pro_settings
这里有stack overflow的传送门:How to manage local vs production settings in Django?
- 从零开始自动部署Django项目(一):开发配置与生产配置
- 从零开始自动部署Django项目(四): 在Docker中部署Django项目
- django项目 (一) 配置
- django项目部署 - 配置Memcached
- 从零开始自动部署Django项目(二):使用Python编写Git Hooks
- 从零开始自动部署Django项目(三):使用uWSGI emperor管理进程
- Gradle项目之Spring.profile.开发.测试.生产环境的配置和切换之一键部署
- Maven项目之Spring.profile.开发.测试.生产环境的配置和切换之一键部署
- springboot 生产环境与开发环境配置
- jetty项目部署与配置
- MongoDB实战-生产环境中分片的部署与配置
- uWSGI + Nginx配置Django项目(一)
- uWSGI + Nginx配置Django项目(一)
- maven项目自动部署tomcat配置
- 实现开发环境、测试环境、生产环境配置自动切换
- 实现开发环境、测试环境、生产环境配置自动切换
- Django学习(一) 安装配置Django
- 腾讯云服务器的配置与部署(一):云服务器的连接、项目(php与phpMyAdmin)的部署
- MYSQL 注册
- 我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
- Android中的EditText在调用requestFocus()方法时,是有延迟的,
- linux入门:linux目录结构
- dom4j解析XML
- 从零开始自动部署Django项目(一):开发配置与生产配置
- Lua 常见问题
- easyui 数据网格取消滚动条的方法
- Java gc(垃圾回收)机制 补充
- 第三方登陆详细流程
- 计算机科学中最重要的32个算法
- C语言基础知识学习系列(一)
- 一步一步教你实现主题切换功能
- 《Drools6.4 中文文档》第18章18.3 管理(组织单元&资源库)