参考资料:
【1】http://python.jobbole.com/87241/
1、Fabric简介:
Fabric是一个Python的库,它提供了丰富的同SSH交互的接口,可以用来在本地或远程机器上自动化、流水化地执行Shell命令。因此它非常适合用来做应用的远程部署及系统维护。其上手也极其简单,你需要的只是懂得基本的Shell命令。
2、Fabric安装:
#!/bin/bash #create by huangdengji #version:1.0 #create time:2017-09-27 15:22:00 #email:huangdengji@126.com #description: install fabric #1.install python2.7.14 #2.install pip #3.install fabric set -m #安装依赖 yum -y install wget gcc openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel cd /home/hdj/ [ -d /home/hdj/fabric ] && { rm -rf /home/hdj/fabric } mkdir fabric cd fabric #安装Python2.7 wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz tar -xvf Python-2.7.14.tgz cd Python-2.7.14 ./configure --prefix=/usr/local/python2.7 make make install /usr/local/python2.7/bin/python2.7 -V [ $? -ne 0 ] && { echo 'python 2.7 install fail' exit 1 } ln -fs /usr/local/python2.7/bin/python2.7 /usr/bin/python #由于yum依赖于Python2.6,需修改yum文件 yumFirstLine=`head -n 1 /usr/bin/yum` [ ${#yumFirstLine} -eq 17 ] && { sed -i 's#/usr/bin/python#/usr/bin/python2.6#g' /usr/bin/yum echo 'modify /usr/bin/yum first line to /usr/bin/python2.6' } echo '------------------------------------------------------------------------------------------------------------------' echo '' echo '' echo '' echo '' echo '' echo 'python 2.7 install success' echo '' echo '' echo '' echo '' echo '' echo '------------------------------------------------------------------------------------------------------------------' #安装pip cd .. wget https://bootstrap.pypa.io/get-pip.py python get-pip.py ln -s /usr/local/python2.7/bin/pip /usr/bin/pip #安装fabric pip install fabric ln -s /usr/local/python2.7/bin/fab /usr/bin/fab echo '------------------------------------------------------------------------------------------------------------------' echo '' echo '' echo '' echo '' echo '' echo 'fab install success' echo '' echo '' echo '' echo '' echo '' echo '------------------------------------------------------------------------------------------------------------------'
3、编写本地打包shell脚本
#!/bin/bash #create by huangdengji #version:2.0 #create time:2017-09-25 18:22:00 #email:huangdengji@126.com #description:do repackage project to tar.gz set -m projectName="ROOT" tomcatDir="/resources/apache-tomcat-6.0.41/webapps/" cd ${tomcatDir} rm -rf ${projectName}.tar.gz tar -zcf ${projectName}.tar.gz ${projectName}
4、编写远程服务器中,重新部署项目的shell脚本
#!/bin/bash #create by huangdengji #version:1.0 #create time:2017-09-12 18:22:00 #email:huangdengji@126.com #description:do reploy tomcat project set -m source /etc/profile tomcatName='apache-tomcat-6.0.41' projectName='ROOT' deployEndTag='.tar.gz' deployName=${projectName}${deployEndTag} projectDir='/u0/'${tomcatName}'/webapps/' #str=`ps -ef | grep ${tomcatName}` str=`ps -ef | grep ${tomcatName} | grep -v grep | grep -v tail` pid=`echo $str | awk '{print $2}'` echo ${tomcatName}' pid:'${pid} [ -f /home/hdj/${deployName} ] || { echo '/home/hdj/'${deployName}' not exist' exit 1 } kill -9 ${pid} if [ $? -eq 0 ] then echo "kill tomcat success!" else echo "kill tomcat fail!" fi sleep 3 while true do count=`ps -ef | grep ${tomcatName} | grep -v grep | grep -v tail | wc -l` [ ${count} -eq 0 ] && { break } && { kill -9 ${pid} sleep 1 } done #path='/project_bak/'$(date +%Y%m%d%H%M) path='/project_bak/' if [ -d ${path} ] then rm -rf ${path} mkdir -p ${path} else mkdir -p ${path} fi if [ -d ${path} ] then echo 'created dir:'${path}' success!' else echo 'created dir:'${path}' fail!' exit 1 fi if [ -d ${projectDir}${deployName} ] then mv ${projectDir}${deployName} ${path} if [ $? -eq 0 ] then echo 'project back to dir:'${path}' success!' else echo 'project back to dir:'${path}' fail!' exit 1 fi else echo ${projectDir}${deployName}' is first depoly' fi mv /home/hdj/${deployName} ${projectDir} if [ $? -eq 0 ] then echo 'deplory project to dir:'${projectDir}' success!' else echo 'deplory project to dir:'${projectDir}' fail!' exit 1 fi cd ${projectDir} rm -rf ${project} tar -zxf ${deployName} /u0/${tomcatName}/bin/startup.sh echo 'starting '${tomcatName}' ...'
5、遍写fabric执行的Python脚本,来实现多服务器的:本地代码打包、上传至远程服务器、远程服务重启
#!/usr/bin/env python # encoding: utf-8 from fabric.api import local,cd,run,env,put,sudo env.hosts=['root@10.255.8.57:22','root@10.255.8.59:22','root@10.255.8.61:22'] #ssh要用到的参数 env.password = '111111' tomcatName='apache-tomcat-6.0.41' projectName='ROOT' def local_package(): local('sh /home/hdj/fab_task/repackage.sh') put('/resources/'+tomcatName+'/webapps/'+projectName+'.tar.gz', '/home/hdj/') def update_to_remote(): print "remote update" with cd('/home/hdj'): #cd用于进入某个目录 run('sh redeploy.sh') #远程操作用run def update(): local_package() update_to_remote()
6、执行fab命令,完成批量部署
fab -f redeploy.py update
相关推荐
文章讲述超级账本2.0版本分布式集群部署,包括以下主要内容: Fabric 2.0 新特性说明 Fabric 2.0 单机部署详细操作(基础环境、Fabric 环境搭建、链码的生命周期等) Fabric 2.0 多机部署详细操作(分布式)
在创建 Service Fabric 集群时,为了确保集群的安全性,通常需要配置安全性措施,包括使用证书进行身份验证和加密通信。本文将详细讲解如何设置安全 Service Fabric 集群的证书信息,特别是如何在 PowerShell 中进行...
超级账本 Fabric 区块链在集群中利用docker compose的部署样例
【前端项目-fabric.js.zip】是一个包含前端开发中使用的JavaScript库——Fabric.js的源代码压缩包。Fabric.js是一个强大的HTML5 canvas库,它为开发者提供了一个面向对象的模型,使得在canvas上操作图形变得简单易行...
使用Docker和Fabric启动新Web项目的框架
基于hyperledger fabric 1.4版本实现的kafka集群配置文件,环境搭建可以参考https://blog.csdn.net/u010857052/article/details/84309264。有任何问题可以评论下面留言。谢谢
【资源介绍】基于vue和fabric.js的图片编辑器网页源码+项目说明(含demo演示地址).zip基于vue和fabric.js的图片编辑器网页源码+项目说明(含demo演示地址).zip基于vue和fabric.js的图片编辑器网页源码+项目说明(含demo...
超级账本 Fabric v1.0 多节点集群的部署
1. 部署方案:包括了 DCN 项目的部署方案、iMaster NCE-Fabric 产品配置指导、交付版本等内容。 2. 设备配置清单:包括了 iMaster NCE-Fabric 产品的设备配置清单、CE128/168 数量、USG/Eudemon 数量、CE88/78/68 ...
在Hyperledger Fabric开发中,Kafka集群的部署是构建基于排序服务网络的关键步骤。Kafka是一种高可用、高性能的消息中间件,常用于处理大规模实时数据流。在Fabric中,Kafka作为ordering service(排序服务)的一...
超级账本fabric多节点集群部署,超级账本fabric多节点集群部署
区块链毕业设计 基于Hyperledger Fabric的区块链Web项目源码+项目资料齐全+部署文档(优秀项目).zip区块链毕业设计 基于Hyperledger Fabric的区块链Web项目源码+项目资料齐全+部署文档(优秀项目).zip区块链毕业...
超级账本Fabric 1.0 多节点集群的部署(1):http://8btc.com/article-4542-1.html超级账本Fabric 1.0 多节点集群的部署(2):http://8btc.com/article-4543-1.html( 接上期,部署配置中大量使用了 docker 和 doc
7. **安装与使用**:在 Vue 项目中,首先需要通过 npm 或 yarn 安装 vue-fabric-drawingboard,然后在组件中导入并使用。同时,别忘了在 Vue 实例中注册组件,最后在模板中插入画布组件并配置相应的属性。 8. **...
### Hyperledger Fabric与fabric-java-sdk在IntelliJ IDEA中的端到端测试 #### 背景介绍 Hyperledger Fabric是一款企业级区块链框架,由Linux基金会旗下的Hyperledger项目开发。它支持可插拔的架构,提供了高度...
项目部署步骤的每个环节都被分解为清晰可见的步骤,所有实验都被打包成脚本,以便在任何具有基本功能的平台上快速复制.zip该项目将工作室联盟链需求虚拟化,并将逐步实施,旨在提供一个易于理解和可重复的Fabric学习...
虽然Zookeeper在标准Fabric部署中主要用于Kafka Orderer类型,但在自定义网络配置中,可能需要直接与Zookeeper交互。Go SDK提供了相关的API,允许开发者进行低级的网络协调操作。 8. **运维与开发语言** Fabric ...
使用 Fabric 可以在服务器中自动执行命令。因为整个代码部署过程都是相同的,只要我们用 Fabric 写好部署脚本,以后就可以通过运行脚本自动完成部署了。 首先在本地安装 Fabric: $ pipenv install fabric --dev ...