摘要:使用可以在服務器中自動執(zhí)行命令。重啟和使改動生效。執(zhí)行自動部署腳本進入文件所在的目錄,在的環(huán)境下用命令運行這個腳本文件。在使用自動化部署的評論區(qū)留言。
在 使用 Nginx 和 Gunicorn 部署 Django 博客 中,我們通過手工方式將代碼部署到了服務器。整個過程涉及到十幾條命令,輸了 N 個字符。一旦我們本地的代碼有更新,整個過程又得重復來一遍,這將變得非常繁瑣。
使用 Fabric 可以在服務器中自動執(zhí)行命令。因為整個代碼部署過程都是相同的,只要我們用 Fabric 寫好部署腳本,以后就可以通過運行腳本自動完成部署了。
安裝 FabricFabric 目前僅支持 Python2,如果你的系統(tǒng)中只有 Python3 版本,請先安裝一個 Python2 的版本,推薦安裝 Python 2.7。Python3 和 Python2 可以共存于一個系統(tǒng),所以不用擔心同時安裝兩個版本的 Python 會發(fā)生沖突。
接下就可以簡單地通過 pip 命令安裝 Fabric 了。注意要使用 Python2 環(huán)境下的 pip,這樣才能把 Fabric 安裝到 Python2 環(huán)境下。
pip install fabric部署過程回顧
在寫 Fabric 腳本之前,我們先來回顧一下當我們在本地開發(fā)環(huán)境下更新了代碼后,在服務器上的整個部署過程。
遠程連接服務器。
進入項目根目錄,從遠程倉庫拉取最新的代碼。
如果項目引入了新的依賴,需要執(zhí)行 pip install -r requirement.txt 安裝最新依賴。
如果修改或新增了項目靜態(tài)文件,需要執(zhí)行 python manage.py collectstatic 收集靜態(tài)文件。
如果數(shù)據(jù)庫發(fā)生了變化,需要執(zhí)行 python manage.py migrate 遷移數(shù)據(jù)庫。
重啟 Nginx 和 Gunicorn 使改動生效。
整個過程就是這樣,把每一步操作翻譯成 Fabric 對應的腳本代碼,這樣一個自動化部署腳本就完成了。
編寫 Fabric 腳本Fabric 腳本通常位于 fabfile.py 文件里,因此先在項目根目錄下建一個 fabfile.py 文件。
根據(jù)上述過程編寫的腳本代碼如下:
blogproject/fabfile.py from fabric.api import env, run from fabric.operations import sudo GIT_REPO = "you git repository" ① env.user = "you host username" ② env.password = "you host password" # 填寫你自己的主機對應的域名 env.hosts = ["demo.zmrenwu.com"] # 一般情況下為 22 端口,如果非 22 端口請查看你的主機服務提供商提供的信息 env.port = "22" def deploy(): source_folder = "/home/yangxg/sites/zmrenwu.com/django-blog-tutorial" ③ run("cd %s && git pull" % source_folder) ④ run(""" cd {} && ../env/bin/pip install -r requirements.txt && ../env/bin/python3 manage.py collectstatic --noinput && ../env/bin/python3 manage.py migrate """.format(source_folder)) ⑤ sudo("restart gunicorn-demo.zmrenwu.com") ⑥ sudo("service nginx reload")
① 你的代碼托管倉庫地址。
② 配置一些服務器的地址信息和賬戶信息,各參數(shù)的含義分別為:
env.user:用于登錄服務器的用戶名
env.password:用戶名對應的密碼
env.hosts:服務器的 IP 地址,也可以是解析到這個 IP 的域名
env.port:SSH 遠程服務器的端口號
③ 需要部署的項目根目錄在服務器上的位置。
④ 通過 run 方法在服務器上執(zhí)行命令,傳入的參數(shù)為需要執(zhí)行的命令,用字符串包裹。這里執(zhí)行了兩條命令,不同命令間用 && 符號連接:
cd 命令進入到需要部署的項目根目錄
git pull 拉取遠程倉庫的最新代碼
⑤ 對應上述部署過程中 3-5 的幾條命令。因為啟用了虛擬環(huán)境,所以運行的是虛擬環(huán)境 ../env/bin/ 下的 pip 和 python
⑥ 重啟 Gunicorn 和 Nginx,由于這兩條命令要在超級權(quán)限下運行,所以使用了 sudo 方法而不是 run 方法。
注意全部的腳本代碼要放在 deploy 函數(shù)里,F(xiàn)abric 會自動檢測 fabfile.py 腳本中的 deploy 函數(shù)并運行。
由于腳本中有登錄服務器的用戶名和密碼等敏感信息,不要把 fabfile.py 文件也上傳到公開的代碼托管倉庫。
執(zhí)行 Fabric 自動部署腳本進入 fabfile.py 文件所在的目錄,在 Python2 的環(huán)境下用 fab 命令運行這個腳本文件。
比如我的是 Windows 環(huán)境,Python2 安裝在 C:Python27 下,那么運行:
C:Python27Scriptsfab deploy
這時 Fabric 會自動檢測到 fabfile.py 腳本中的 deploy 函數(shù)并運行,你會看到命令行輸出了一系列字符串,如果在最后看到
Done.
Disconnecting from zmrenwu.com... done.
說明腳本運行成功。
而如果看到
Aborting.
Disconnecting from zmrenwu.com... done.
說明腳本運行中出錯,檢查一下命令行輸入的錯誤信息,修復問題后重新運行腳本即可。以后當你在本地開發(fā)完相關(guān)功能后,只需要執(zhí)行這一個腳本文件,就可以自動把最新代碼部署到服務器了。
總結(jié)本章節(jié)的代碼位于:Step15: deploy automatically using fabric。
如果遇到問題,請通過下面的方式尋求幫助。
在 使用 Fabric 自動化部署 的評論區(qū)留言。
將問題的詳細描述通過郵件發(fā)送到 djangostudyteam@163.com,一般會在 24 小時內(nèi)回復。
更多Django 教程,請訪問 追夢人物的博客。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/44415.html
摘要:教程看到這里,你已經(jīng)學會如下內(nèi)容搭建開發(fā)環(huán)境博文管理用戶管理發(fā)表評論若干小功能搭建簡單的小博客,以上的功能夠用了。教程為了起步平緩,沒有展開這方面的內(nèi)容。陌生人,祝你學業(yè)進步事業(yè)有成歡迎常到杜賽的個人網(wǎng)站做客 教程看到這里,你已經(jīng)學會如下內(nèi)容: 搭建開發(fā)環(huán)境 博文管理 用戶管理 發(fā)表評論 若干小功能 搭建簡單的小博客,以上的功能夠用了。 相信你的志向不止于此。畢竟程序員面試個個造火...
摘要:協(xié)議的細節(jié)由一個名為的處理。運行下面的腳本來讓所有的事情都發(fā)生一兩分鐘后,命令提示符將返回運行結(jié)果如下圖所示現(xiàn)在運行該命令查看當前正在運行的容器。 showImg(https://segmentfault.com/img/bVbazHF?w=709&h=159); 前言 本教程基本上是對Marbles項目的翻譯過程. 如果英文比較好的話,建議根據(jù)官方操作說明,一步步進行環(huán)境部署。當然你...
摘要:本教程內(nèi)容已過時,更新版教程請訪問博客開發(fā)入門教程。表示降序排列,默認是升序排列。學習小組簡介學習小組是一個促進新手互相學習互相幫助的組織。我們會將每周的詳細開發(fā)文檔和代碼通過郵件列表發(fā)出。 本教程內(nèi)容已過時,更新版教程請訪問: django 博客開發(fā)入門教程。 通過前四周的時間我們開發(fā)了一個簡單的個人 Blog,教程地址: 第一周:Django 學習小組:博客開發(fā)實戰(zhàn)第一周教程 ——...
本文描述了Web項目的兩種部署方案,石器時代的ssh & pull & restart方式不做太多說明 1.基于Fabric(Python)的部署方案 Fabric 是一個用于ssh的Python庫&命令行工具 Fabric is a Python (2.5-2.7) library and command-line tool for streamlining the use of SSH for...
本文描述了Web項目的兩種部署方案,石器時代的ssh & pull & restart方式不做太多說明 1.基于Fabric(Python)的部署方案 Fabric 是一個用于ssh的Python庫&命令行工具 Fabric is a Python (2.5-2.7) library and command-line tool for streamlining the use of SSH for...
閱讀 2216·2021-09-07 09:58
閱讀 3391·2019-08-30 14:07
閱讀 1305·2019-08-29 12:32
閱讀 667·2019-08-29 11:06
閱讀 3692·2019-08-26 18:18
閱讀 3731·2019-08-26 17:35
閱讀 1381·2019-08-26 11:35
閱讀 611·2019-08-26 11:35