国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

使用Fabric自動化部署Django項目的實現

2019-11-02 14:08:17
字體:
來源:轉載
供稿:網友

文中涉及的示例代碼,已同步更新到HelloGitHub-Team 倉庫

在上一篇教程中,我們通過手工方式將代碼部署到了服務器。整個過程涉及到十幾條命令,輸了 N 個字符。一旦我們本地的代碼有更新,整個過程又得重復來一遍,這將變得非常繁瑣。

使用 Fabric 可以在服務器中自動執行命令。因為整個代碼部署過程都是相同的,只要我們用 Fabric 寫好部署腳本,以后就可以通過運行腳本自動完成部署了。

首先在本地安裝 Fabric:

$ pipenv install fabric --dev

因為 Fabric 只需在本地使用,因此使用 --dev 選項,讓 Pipenv 將 Fabric 依賴寫到 dev-packages 配置下,線上環境就不會安裝 Fabric。

部署過程回顧

在寫 Fabric 腳本之前,先來回顧一下當我們在本地開發環境下更新了代碼后,在服務器上的整個部署過程。

遠程連接服務器。 進入項目根目錄,從遠程倉庫拉取最新的代碼。 如果項目引入了新的依賴,需要執行 pipenv install --deploy --ignore-pipfile 安裝最新依賴。 如果修改或新增了項目靜態文件,需要執行 pipenv run python manage.py collectstatic 收集靜態文件。 如果數據庫發生了變化,需要執行 pipenv run python manage.py migrate 遷移數據庫。 重啟 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,然后創建一個 common.py,用于存放通用配置,local.py 存放開發環境的配置,production.py 存放線上環境的配置:

blogproject/  settings/    __init__.py    local.py    production.py  settings.py

將 settings.py 文件中的內容全部復制到 common.py 里,并將 SECRET_KEY、DEBUG、ALLOWED_HOSTS 這些配置移到 local.py 和 production.py 中(common.py 中這些項可以刪除)。

開發環境的配置 local.py 內容如下:

from .common import *SECRET_KEY = 'development-secret-key'DEBUG = TrueALLOWED_HOSTS = ['*']

線上環境的配置:

from .common import *SECRET_KEY = os.environ['DJANGO_SECRET_KEY']DEBUG = FalseALLOWED_HOSTS = ['hellodjango-blog-tutorial.zmrenwu.com']

注意這里我們在頂部使用 from .common import * 將全部配置從 common.py 導入,然后根據環境的不同,在下面進行配置覆蓋。

線上環境和開發環境不同的是,為了安全,DEBUG 模式被關閉,SECRET_KEY 從環境變量獲取,ALLOWED_HOSTS 設置了允許的 HTTP HOSTS(具體作用見后面的講解)。

以上操作完成后,一定記得刪除 settings.py

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 北京市| 林州市| 建平县| 攀枝花市| 安丘市| 攀枝花市| 兰溪市| 蕉岭县| 盈江县| 屯门区| 多伦县| 山西省| 龙南县| 长海县| 定兴县| 洮南市| 黎城县| 绥阳县| 囊谦县| 元谋县| 瓦房店市| 纳雍县| 龙泉市| 长顺县| 连山| 涡阳县| 乃东县| 外汇| 漾濞| 伊吾县| 玛纳斯县| 邹平县| 邵阳县| 永州市| 苍南县| 普洱| 青浦区| 会昌县| 漳州市| 余干县| 青浦区|