国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 阿坝| 曲沃县| 舞钢市| 达拉特旗| 石门县| 特克斯县| 河曲县| 珲春市| 揭西县| 宿松县| 慈利县| 天柱县| 无为县| 榆林市| 潞西市| 北海市| 平利县| 无锡市| 邢台县| 海南省| 丰顺县| 黄大仙区| 舞阳县| 德钦县| 肥西县| 大埔县| 揭东县| 公安县| 灌阳县| 常州市| 金秀| 平安县| 镶黄旗| 彩票| 城固县| 容城县| 五台县| 南开区| 阜新市| 镇江市| 洮南市|