Fabirc网络部署环境初始化脚本

脚本介绍

这个脚本编写之初,目的也很简单,就是为了能更方便的初始化fabric的运行环境,保证其运行环境的一致性。
脚本大致的功能如下:

  • 安装常用工具(curl,wget,make,gcc,tree,ssl等)
  • 设置防火墙
  • 设置selinux
  • 设置时间同步
  • 设置yum源为阿里镜像
  • 设置docker镜像加速,实际上时切换docker的镜像地址(使用阿里的)
  • 安装docker
  • 安装docker-compose
  • 拉取镜像(这是执行的另外一个脚本)

脚本

创建脚本vi init_fabric_environment.sh。然后复制下面的内容到脚本。

#!/bin/bash
######################################################################################
# CentOS 7.5                                                                          #
# Initialize the Linux system to deploy Hyperledger Fabric                           #
# 2019/04/14 15:27                                                                   #
# author:jockming-->wzm                                                            #
# original article                                                                   #
######################################################################################
# 注意:给脚本添加执行权限
# 执行shell可能报错
# 执行.sh脚本时出现$’\r’: 未找到命令
# 是因为脚本在windows下编辑过,windows下的换行带有‘\r’而uninx或者linux下的换行是‘\n’
# 解决:yum install -y dos2unix
# 然后执行命令:dos2unix *.sh
# chmod +x **.sh

######################################################################################
#=========================Install Fabric Network Environment=========================#
######################################################################################

# Install tools
function Install_tools(){
  echo
  echo "##########################################################"
  echo "#####                 Install tools                  #####"
  echo "##########################################################"

  yum -y install openssl-devel \
  openssl \
  gcc-c++ \
  make \
  curl \
  wget \
  tree
}


# Shutdown firewalld or setup the rules
function Firewalld(){
  echo
  echo "##########################################################"
  echo "#####               Setup firewalld                  #####"
  echo "##########################################################"

  # 开放端口(PS: 记得在云服务控制台开放端口)
  # firewall-cmd --zone=public --permanent \
  # --add-port=7050/tcp --add-port=7051/tcp \
  # --add-port=8050/tcp --add-port=8051/tcp \
  # --add-port=9050/tcp --add-port=22/tcp 
  # 重新载入
  # firewall-cmd --reload
  # 查看所有开放的端口
  # firewall-cmd --zone=public --list-ports

  systemctl stop firewalld
  systemctl status firewalld 
  systemctl disable firewalld
}


# Shutdown SElinux 
function Selinux(){
  echo
  echo "##########################################################"
  echo "#####               Setup SElinux                    #####"
  echo "##########################################################"

  status=`grep SELINUX= /etc/selinux/config | tail -1 | awk -F '='  '{print $2}'`

  if [ $status != disabled ] ;then
    sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
    status=`grep SELINUX= /etc/selinux/config | tail -1 | awk -F '='  '{print $2}'`
    if [ $status == disabled ] ;then
      echo "***********—Modify selinux config success-***********" 
    else
      echo "***********—Modify selinux config Failed!!!-***********"
    fi
  else
    echo "***********—Selinx config already Modified-***********"
  fi

  setenforce 0  
}


# Setup server time synchronization from ntp server
function TimeSync(){
  # yum -y install ntp ntpdate
  # ntpdate cn.pool.ntp.org
  # hwclock --systohc
  # hwclock -w
  echo
  echo "##########################################################"
  echo "#####               Setup time sync                  #####"
  echo "##########################################################"

  rm -rf /etc/localtime
  ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  echo "ZONE="Asia/Shanghai"
  UTC=false
  ARC=false">>/etc/sysconfig/clock

  yum install -y ntp
  systemctl start ntpd
  systemctl enable ntpd
  echo "/usr/sbin/ntpdate ntp1.aliyun.com > /dev/null 2>&1; /sbin/hwclock -w">>/etc/rc.d/rc.local
  echo "0 */1 * * * ntpdate ntp1.aliyun.com > /dev/null 2>&1; /sbin/hwclock -w">>/etc/crontab
}


# Setup server langurage env
function Langurage(){
  echo
  echo "##########################################################"
  echo "#####              Setup Langurage env               #####"
  echo "##########################################################"

  echo ' LANG="en_US.UTF-8"'  >/etc/sysconfig/i18n 
  source /etc/sysconfig/i18n
  echo LANG
}


# Update yum repo 
function Yumsource(){
  echo
  echo "##########################################################"
  echo "#####                Setup yum repo                  #####"
  echo "##########################################################"

  cd /etc/yum.repos.d/
  mv CentOS-Base.repo CentOS-Base.repo.bak
  wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  echo
  echo "#####      Yum clean      #####"
  yum -y clean all 
  echo "#####      To generate cache      #####"
  yum makecache 
  echo
}


# Whether to install docker env
function Install_docker(){
    which docker >& /dev/null
  MYDOCKER=$?
  if [ "${MYDOCKER}" == 0 ]; then
    echo
    echo "##########################################################"
    docker -v
    echo "##########################################################"
  else 
    echo
    echo "##########################################################"
    echo "#####                Install docker                  #####"
    echo "##########################################################"
    yum install -y yum-utils device-mapper-persistent-data lvm2 
    # yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum-config-manager --enable docker-ce-edge 
    yum-config-manager --enable docker-ce-test 
    yum install -y docker-ce 
    systemctl start docker 
    docker --version 
    chkconfig docker on
  fi
}


# Speed up docker
# 可以在https://www.daocloud.io/网站有加速地址。
function Speed_up_docker(){
  echo
  echo "##########################################################"
  echo "#####                Speed up docker                 #####"
  echo "##########################################################"
  mkdir -p /etc/docker
  # 阿里云加速:https://j1i67hhm.mirror.aliyuncs.com
  # 打开这个地址:http://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
  # 使用支付宝快捷登录阿里云可以获取镜像地址
  # Docker版本要求≥1.12
  curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s https://j1i67hhm.mirror.aliyuncs.com
  systemctl daemon-reload
  systemctl restart docker
}


# Install docker-compose env
function Install_docker_compose(){
  which docker-compose >& /dev/null
  MYDOCKERCOMPOSE=$?
  if [ "${MYDOCKERCOMPOSE}" == 0 ]; then
    echo
    echo "##########################################################"
    docker-compose -version
    echo "##########################################################"
  else
    echo
    echo "##########################################################"
    echo "#####              Install docker-compose            #####"
    echo "##########################################################"

    # 建议将此文件下载下来,访问国外网速度很慢
    # curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
    # 使用国内镜像
    curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
    # mv -f ./docker-compose /usr/local/bin
    chmod +x /usr/local/bin/docker-compose
    docker-compose -version
  fi
}


# Install go env
function Install_go_env(){
  goVersion="go1.13.5.linux-amd64.tar.gz"
  which go >& /dev/null
  MYGO=$?
  if [ "${MYGO}" == 0 ]; then
    echo
    echo "##########################################################"
    go version
    echo "##########################################################"
  else
    echo
    echo "##########################################################"
    echo "#####                 Install go env                 #####"
    echo "##########################################################"
  # 会访问不到国外的网站,建议事先下载好文件
  goPath="/opt/golang"
  mkdir $goPath
  # 国内的下载地址
  # wget https://studygolang.com/dl/golang/go1.10.3.linux-amd64.tar.gz
  wget https://studygolang.com/dl/golang/$goVersion
  mv -f $goPath/$goVersion $goPath
  tar -zxvf $goPath/$goVersion
  mv $goPath/$goVersion go
  rm -rf $goPath/$goVersion

  echo -e "export GOPATH=/opt/gopath 
  export GOROOT=/opt/golang/go 
  export PATH=\$GOROOT/bin:\$PATH">>/etc/profile
  echo
  source /etc/profile
  go version
  echo
  go env
  fi
}


# Install git env
function Install_git(){
  which git >& /dev/null
  MYGIT=$?
  if [ "${MYGIT}" == 0 ]; then
    echo
    echo "##########################################################"
    git --version
    echo "##########################################################"
  else
    echo
    echo "##########################################################"
    echo "#####                 Install git                    #####"
    echo "##########################################################"
    yum install git -y
  fi
}


# Pull fabric docker images
function Pull_fabric_images(){
  echo
  echo "##########################################################"
  echo "#####               Pull fabric image                #####"
  echo "##########################################################"
  # 后期这些镜像都放到镜像私服(后续搭建私服)中,以后拉取镜像直接到私服去拉取就可以了
  source ./docker_pull_fabric_images.sh 1.4.1 1.4.1 0.4.15
  docker images
}


# 主函数
function main(){
  chmod +x ./*.sh
  dos2unix ./*.sh

  Install_tools

  Firewalld

  Selinux

  TimeSync

  Langurage

  Yumsource

  Install_docker

  Speed_up_docker

  Install_docker_compose

  #Install_go_env

  #Install_git

  Pull_fabric_images
}

main

执行

# 注意:给脚本添加执行权限
# 执行shell可能报错
# 执行.sh脚本时出现$’\r’: 未找到命令
# 是因为脚本在windows下编辑过,windows下的换行带有‘\r’而uninx或者linux下的换行是‘\n’
# 解决办法-->安装dos2unix:
yum install -y dos2unix
# 然后执行命令转换脚本格式:
dos2unix init_fabric_environment.sh
# 脚本赋权
chmod +x init_fabric_environment.sh
# 执行脚本
./init_fabric_environment.sh
posted @ 2020-07-06 16:08  itwetouch  阅读(420)  评论(0编辑  收藏  举报