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

首頁 > 編程 > Python > 正文

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

2020-02-23 04:13:04
字體:
供稿:網(wǎng)友

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

需求描述

在多人協(xié)同開發(fā)項(xiàng)目的過程中,幾乎每天我們都要提交代碼到git服務(wù)器,然后部署到測(cè)試服務(wù)器,每天都在敲那重復(fù)的幾行命令,實(shí)在是無趣。怎么辦?運(yùn)維自動(dòng)化!接下來就說說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è)腳本里,然后通過此腳本去執(zhí)行。

安裝fabric

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

或者用pip安裝:

pip install fabric

編寫腳本

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

from fabric.api import hosts, run, env, local, cd, get, lcdfrom fabric.tasks import executeenv.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ù)庫變動(dòng)的命令    run("/usr/local/bin/python2.7 /opt/project/project/manage.py migrate") # 這是django框架執(zhí)行數(shù)據(jù)庫變更的命令@hosts("ktv@192.168.1.101:22")def restart():  """重啟服務(wù)"""  execute('stop')  execute('start')@hosts("root@192.168.1.101:22")def start():  """開始服務(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 (也可保存為其他名稱,只是運(yùn)行命令不一樣,下面會(huì)詳述)

執(zhí)行腳本

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

fab update

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

fab restart

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 沙雅县| 长宁区| 广平县| 布尔津县| 全州县| 富宁县| 彭阳县| 日照市| 清镇市| 土默特左旗| 三河市| 海阳市| 三门峡市| 盐津县| 永清县| 清徐县| 东兰县| 淮南市| 南江县| 临海市| 田阳县| 盐池县| 吐鲁番市| 镶黄旗| 永新县| 古浪县| 策勒县| 化德县| 安宁市| 防城港市| 九龙坡区| 醴陵市| 滨州市| 衡南县| 海林市| 泸州市| 额敏县| 平乡县| 禹城市| 长丰县| 阿拉善盟|