python django blog 2 : fabric 自動化部署

weixin_33850890發表於2017-11-23

什麼是Fabric

是一個Python庫,可以通過SSH在多個host上批量執行任務。你可以編寫任務指令碼,然後通過Fabric在本地就可以使用SSH在大量遠端伺服器上自動執行。這些功能非常適合應用的自動化部署,或者執行系統管理任務

安裝Fabric

Fabric只支援python2,但是我們可以使用Fabric3。它是Fabric的python3版本。
啟用虛擬環境後。使用pip命令即可了。

zhou:~ zhouming$ source ~/Documents/Envs/blogproject_env/bin/activate
(blogproject_env) zhou:~ zhouming$ pip3 install fabric3

部署過程回顧

  1. ssh登入到遠端伺服器
  2. 切換到工程根目錄,git pull拉取最新的程式碼
  3. 根據拉取的程式碼中的requirement.txt,安裝依賴。
  4. 要執行 python manage.py collectstatic 收集靜態檔案。
  5. 執行 python manage.py migrate 遷移資料庫。
  6. 重啟 NginxGunicorn使改動生效。
    我們可以讓Fabric執行這些步驟,實現部署的自動化

編寫 Fabric 指令碼

一般Fabric指令碼放在本地電腦的專案根目錄下。

from fabric.api import env, run
from fabric.operations import sudo

GIT_REPO = "git@github.com:rookie250/detail.git"

env.user = 'root'       ### 
env.password = '....' ###  填上自己的root密碼就可以了。

# 填寫你自己的主機對應的域名
env.hosts = ['www.zhoublog.kim']

# 一般情況下為 22 埠,如果非 22 埠請檢視你的主機服務提供商提供的資訊
env.port = '26421'


def deploy():
    source_folder = '/home/zhou/sites/www.zhoublog.kim/detail'

    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-www.zhoublog.kim')
    sudo('service nginx reload')

回顧一下自己ssh命令登入的過程

zhou:~ zhouming$ ssh root@65.49.224.37 -p 26421
root@65.49.224.37's password: 

實際上env.user就是登入名,env.password就是登入密碼,env.hosts是登入的主機域名。env.port 是主機ssh服務的埠號,source_folder 是遠端伺服器工程的根目錄。

踩的坑總結

發現使用root賬號名無法登入到

回顧知識點 ssh 登入

ssh-keygen -t rsa

參考

ssh登入:http://blog.csdn.net/wh_19910525/article/details/7433164
數字簽名: https://www.cnblogs.com/SirSmith/p/4985571.html

相關文章