日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

15 - 使用 Fabric 自动化部署

發布時間:2025/5/22 编程问答 169 豆豆
生活随笔 收集整理的這篇文章主要介紹了 15 - 使用 Fabric 自动化部署 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

安裝 Fabric

Fabric 目前僅支持 Python2,如果你的系統中只有 Python3 版本,請先安裝一個 Python2 的版本,推薦安裝 Python 2.7。Python3 和 Python2 可以共存于一個系統,所以不用擔心同時安裝兩個版本的 Python 會發生沖突。

接下就可以簡單地通過 pip 命令安裝 Fabric 了。注意要使用 Python2 環境下的 pip,這樣才能把 Fabric 安裝到 Python2 環境下。

pip install fabric復制代碼

部署過程回顧

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

  • 遠程連接服務器。
  • 進入項目根目錄,從遠程倉庫拉取最新的代碼。
  • 如果項目引入了新的依賴,需要執行 pip install -r requirement.txt 安裝最新依賴。
  • 如果修改或新增了項目靜態文件,需要執行 python manage.py collectstatic 收集靜態文件。
  • 如果數據庫發生了變化,需要執行 python manage.py migrate 遷移數據庫。
  • 重啟 Nginx 和 Gunicorn 使改動生效。
  • 整個過程就是這樣,把每一步操作翻譯成 Fabric 對應的腳本代碼,這樣一個自動化部署腳本就完成了。

    編寫 Fabric 腳本

    Fabric 腳本通常位于 fabfile.py 文件里,因此先在項目根目錄下建一個 fabfile.py 文件。

    根據上述過程編寫的腳本代碼如下:

    blogproject/fabfile.pyfrom fabric.api import env, run from fabric.operations import sudoGIT_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')復制代碼

    ① 你的代碼托管倉庫地址。

    ② 配置一些服務器的地址信息和賬戶信息,各參數的含義分別為:

    • env.user:用于登錄服務器的用戶名
    • env.password:用戶名對應的密碼
    • env.hosts:服務器的 IP 地址,也可以是解析到這個 IP 的域名
    • env.port:SSH 遠程服務器的端口號

    ③ 需要部署的項目根目錄在服務器上的位置。

    ④ 通過 run 方法在服務器上執行命令,傳入的參數為需要執行的命令,用字符串包裹。這里執行了兩條命令,不同命令間用 && 符號連接:

  • cd 命令進入到需要部署的項目根目錄
  • git pull 拉取遠程倉庫的最新代碼
  • ⑤ 對應上述部署過程中 3-5 的幾條命令。因為啟用了虛擬環境,所以運行的是虛擬環境 ../env/bin/ 下的 pip 和 python

    ⑥ 重啟 Gunicorn 和 Nginx,由于這兩條命令要在超級權限下運行,所以使用了 sudo 方法而不是 run 方法。

    注意全部的腳本代碼要放在 deploy 函數里,Fabric 會自動檢測 fabfile.py 腳本中的 deploy 函數并運行。

    由于腳本中有登錄服務器的用戶名和密碼等敏感信息,不要把 fabfile.py 文件也上傳到公開的代碼托管倉庫。

    執行 Fabric 自動部署腳本

    進入 fabfile.py 文件所在的目錄,在 Python2 的環境下用 fab 命令運行這個腳本文件。

    比如我的是 Windows 環境,Python2 安裝在 C:\Python27\ 下,那么運行:

    C:\Python27\Scripts\fab deploy復制代碼

    這時 Fabric 會自動檢測到 fabfile.py 腳本中的 deploy 函數并運行,你會看到命令行輸出了一系列字符串,如果在最后看到

    Done.
    Disconnecting from zmrenwu.com... done.

    說明腳本運行成功。

    而如果看到

    Aborting.
    Disconnecting from zmrenwu.com... done.

    說明腳本運行中出錯,檢查一下命令行輸入的錯誤信息,修復問題后重新運行腳本即可。以后當你在本地開發完相關功能后,只需要執行這一個腳本文件,就可以自動把最新代碼部署到服務器了。

    總結

    本章節的代碼位于:Step15: deploy automatically using fabric。

    如果遇到問題,請通過下面的方式尋求幫助。

    • 在 使用 Fabric 自動化部署 的評論區留言。
    • 將問題的詳細描述通過郵件發送到 djangostudyteam@163.com,一般會在 24 小時內回復。

    更多Django 教程,請訪問 追夢人物的博客。

    總結

    以上是生活随笔為你收集整理的15 - 使用 Fabric 自动化部署的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。