欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python fabric實(shí)現(xiàn)遠(yuǎn)程部署

 更新時(shí)間:2017年01月05日 08:41:18   作者:apple9005  
這篇文章主要為大家詳細(xì)介紹了 python fabric實(shí)現(xiàn)遠(yuǎn)程部署,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

python fabric實(shí)現(xiàn)遠(yuǎn)程部署

需求描述

在多人協(xié)同開(kāi)發(fā)項(xiàng)目的過(guò)程中,幾乎每天我們都要提交代碼到git服務(wù)器,然后部署到測(cè)試服務(wù)器,每天都在敲那重復(fù)的幾行命令,實(shí)在是無(wú)趣。怎么辦?運(yùn)維自動(dòng)化!接下來(lái)就說(shuō)說(shuō)fabric這玩意兒,替我們完成一些重復(fù)繁雜的工作,相信你會(huì)跟我一樣喜歡上它的!

本文項(xiàng)目背景

我們這次做的項(xiàng)目是用的django框架,每天我們提交代碼到git服務(wù)器后,都要手動(dòng)上傳代碼到測(cè)試服務(wù)器,然后執(zhí)行一系列django框架的命令。每天都要浪費(fèi)10多分鐘的時(shí)間,做著重復(fù)的勞動(dòng),這些工作實(shí)在不是一個(gè)程序員該干的。。。

解決方案

借助Python的fabric模塊可以將自動(dòng)化部署或者多機(jī)操作的命令固化到一個(gè)腳本里,然后通過(guò)此腳本去執(zhí)行。

安裝fabric

注意:本機(jī)和目標(biāo)服務(wù)器都要安裝一下
sudo easy_install fabric

或者用pip安裝:

pip install fabric

編寫(xiě)腳本

local 是在本機(jī)執(zhí)行;run 是在遠(yuǎn)程機(jī)執(zhí)行

from fabric.api import hosts, run, env, local, cd, get, lcd
from fabric.tasks import execute

env.hosts = ["fab@192.168.1.101:22", "root@192.168.1.101:22"]
env.passwords = {"fab@192.168.1.101:22": "fab", "root@192.168.1.101:22": "tofabor"}


@hosts("ktv@192.168.1.101:22")
def update():
  """更新測(cè)試服務(wù)器代碼"""
  with cd("/opt/project/project"): # 進(jìn)入測(cè)試服務(wù)器的項(xiàng)目目錄
    run("git pull origin master") # 從git服務(wù)器的master分支下拉最新代碼
    run("/usr/local/bin/python2.7 /opt/project/project/manage.py makemigrations") # 這是django框架檢測(cè)數(shù)據(jù)庫(kù)變動(dòng)的命令
    run("/usr/local/bin/python2.7 /opt/project/project/manage.py migrate") # 這是django框架執(zhí)行數(shù)據(jù)庫(kù)變更的命令

@hosts("ktv@192.168.1.101:22")
def restart():
  """重啟服務(wù)"""
  execute('stop')
  execute('start')


@hosts("root@192.168.1.101:22")
def start():
  """開(kāi)始服務(wù)"""
  with cd("/opt/project/project"):
    run("supervisorctl start dev")

@hosts("ktv@192.168.1.101:22")
def stop():
  """停止服務(wù)"""
  pids = run("ps -ef |grep '9001'| awk '{print $2}'")
  pid_list = pids.split('\r\n')
  for i in pid_list[:-2]:
    run('kill -9 %s' % i) # 殺掉運(yùn)行服務(wù)進(jìn)程

如上腳本保存為fabfile.py (也可保存為其他名稱(chēng),只是運(yùn)行命令不一樣,下面會(huì)詳述)

執(zhí)行腳本

如果你的腳本名稱(chēng)為fabfile.py,那么可以在終端進(jìn)入你fabfile.py的目錄,敲入如下命令回車(chē):

fab update

緊接著,你會(huì)看到終端提示你輸入git賬號(hào)及密碼,待你輸入成功后,將自動(dòng)下拉git服務(wù)器的代碼到測(cè)試服務(wù)器。
之后運(yùn)行如下命令,重啟服務(wù):

fab restart

如果你的文件名為其他名稱(chēng),比如ab.py, 那么執(zhí)行 fab update /restart是錯(cuò)誤的,怎么云運(yùn)行呢?

fab -f ab update
fab -f ab restart

注:fabric相當(dāng)強(qiáng)大,此文只是列舉一小功能。如需深入學(xué)習(xí),請(qǐng)參見(jiàn)官方文檔http://docs.fabfile.org/en/1.6/

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python辦公自動(dòng)化(Excel)的實(shí)例教程

    python辦公自動(dòng)化(Excel)的實(shí)例教程

    使用Excel自動(dòng)化處理,將會(huì)用到Python第三方庫(kù),所以我們需要提前通過(guò)來(lái)進(jìn)行安裝,下面這篇文章主要給大家介紹了關(guān)于python辦公自動(dòng)化(Excel)的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • python反編譯學(xué)習(xí)之字節(jié)碼詳解

    python反編譯學(xué)習(xí)之字節(jié)碼詳解

    這篇文章主要給大家介紹了關(guān)于python反編譯學(xué)習(xí)之字節(jié)碼的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • python基于socket實(shí)現(xiàn)的UDP及TCP通訊功能示例

    python基于socket實(shí)現(xiàn)的UDP及TCP通訊功能示例

    這篇文章主要介紹了python基于socket實(shí)現(xiàn)的UDP及TCP通訊功能,結(jié)合實(shí)例形式分析了基于Python socket模塊的UDP及TCP通信相關(guān)客戶端、服務(wù)器端實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-11-11
  • 一篇文章入門(mén)Python生態(tài)系統(tǒng)(Python新手入門(mén)指導(dǎo))

    一篇文章入門(mén)Python生態(tài)系統(tǒng)(Python新手入門(mén)指導(dǎo))

    原文寫(xiě)于2011年末,雖然文中關(guān)于Python 3的一些說(shuō)法可以說(shuō)已經(jīng)不成立了,但是作為一篇面向從其他語(yǔ)言轉(zhuǎn)型到Python的程序員來(lái)說(shuō),本文對(duì)Python的生態(tài)系統(tǒng)還是做了較為全面的介紹
    2015-12-12
  • python接口自動(dòng)化之ConfigParser配置文件的使用詳解

    python接口自動(dòng)化之ConfigParser配置文件的使用詳解

    這篇文章主要介紹了python接口自動(dòng)化之ConfigParser配置文件的使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Python實(shí)現(xiàn)視頻字幕時(shí)間軸格式轉(zhuǎn)換的示例

    Python實(shí)現(xiàn)視頻字幕時(shí)間軸格式轉(zhuǎn)換的示例

    本文主要介紹了Python實(shí)現(xiàn)視頻字幕時(shí)間軸格式轉(zhuǎn)換的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • Python聚類(lèi)算法之基本K均值實(shí)例詳解

    Python聚類(lèi)算法之基本K均值實(shí)例詳解

    這篇文章主要介紹了Python聚類(lèi)算法之基本K均值運(yùn)算技巧,結(jié)合實(shí)例形式較為詳細(xì)的分析了基本K均值的原理與相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • Python中sklearn實(shí)現(xiàn)交叉驗(yàn)證示例分析

    Python中sklearn實(shí)現(xiàn)交叉驗(yàn)證示例分析

    這篇文章主要介紹了Python中sklearn實(shí)現(xiàn)交叉驗(yàn)證,本文python的版本為3.8,各個(gè)版本之間函數(shù)名字略有不同,但是原理都是一樣的,集成開(kāi)發(fā)環(huán)境使用的是Anaconda的Spyder,需要的朋友可以參考下
    2023-08-08
  • python 標(biāo)準(zhǔn)差計(jì)算的實(shí)現(xiàn)(std)

    python 標(biāo)準(zhǔn)差計(jì)算的實(shí)現(xiàn)(std)

    這篇文章主要介紹了python 標(biāo)準(zhǔn)差計(jì)算的實(shí)現(xiàn)(std),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python中列表推導(dǎo)式與生成器表達(dá)式對(duì)比詳解

    python中列表推導(dǎo)式與生成器表達(dá)式對(duì)比詳解

    python當(dāng)然不是一門(mén)編譯型語(yǔ)言,但是它還是要被解析成二進(jìn)制的字節(jié)碼才能被執(zhí)行,執(zhí)行它的正是python解釋器,下面這篇文章主要給大家介紹了關(guān)于python中列表推導(dǎo)式與生成器表達(dá)式對(duì)比的相關(guān)資料,需要的朋友可以參考下
    2023-01-01

最新評(píng)論