使用Fabric自动化部署Django项

白癜风知名专家 http://m.39.net/disease/a_5951584.html

作者:HelloGitHub-追梦人物

在教程中,我们通过手工方式将代码部署到了服务器。整个过程涉及到十几条命令,输了N个字符。一旦我们本地的代码有更新,整个过程又得重复来一遍,这将变得非常繁琐。

使用Fabric可以在服务器中自动执行命令。因为整个代码部署过程都是相同的,只要我们用Fabric写好部署脚本,以后就可以通过运行脚本自动完成部署了。

首先在本地安装Fabric:

$pipenvinstallfabric--dev因为Fabric只需在本地使用,因此使用--dev选项,让Pipenv将Fabric依赖写到dev-packages配置下,线上环境就不会安装Fabric。

部署过程回顾

在写Fabric脚本之前,先来回顾一下当我们在本地开发环境下更新了代码后,在服务器上的整个部署过程。

远程连接服务器。进入项目根目录,从远程仓库拉取最新的代码。如果项目引入了新的依赖,需要执行pipenvinstall--deploy--ignore-pipfile安装最新依赖。如果修改或新增了项目静态文件,需要执行pipenvrunpythonmanage.pycollectstatic收集静态文件。如果数据库发生了变化,需要执行pipenvrunpythonmanage.pymigrate迁移数据库。重启Nginx和Gunicorn使改动生效。整个过程就是这样,把每一步操作翻译成Fabric对应的脚本代码,这样一个自动化部署脚本就完成了。

完善项目配置

分离settings文件

为了安全,线上环境我们将debug改为了False,但开发环境要改为True,改来改去将很麻烦。此外,django的SECRET_KEY是很私密的配置,django的很多安全机制都依赖它,如果不慎泄露,网站将面临巨大安全风险,像我们现在这样直接写在配置文件中,万一不小心公开了源代码,SECRET_KEY就会直接泄露,好的实践是将这个值写入环境变量,通过从环境变量取这个值。

解决以上问题的一个方案就是拆分settings.py文件,不同环境对应不同的settings文件,django在启动时会从环境变量中读取DJANGO_SETTINGS_MODULE的值,以这个值指定的文件作为应用的最终配置。

我们来把settings.py拆分,首先在blogproject目录下新建一个Python包,名为settings,然后创建一个


转载请注明:http://www.aierlanlan.com/rzdk/4952.html