一键部署环境脚本
# 一键部署FISCO BCOS开发者环境
# 前言
在此使用脚本之前,需要了解什么是Shell编程语言,什么是Shell脚本。
- Shell自动化脚本是一种用Shell编写的程序,可以在Unix或类Unix操作系统上运行。它们通常被用于执行重复性、繁琐或时间-consuming的任务,如文件操作、系统配置和软件安装等。
- 这些脚本可以包含控制结构、变量、函数和命令等元素,以执行特定的任务。例如,一个Shell自动化脚本可以用来自动备份数据库、定期清理日志文件、创建用户账户等。
- 由于Shell自动化脚本易于编写和修改,因此它们是许多系统管理员、开发人员和DevOps工程师的首选工具。它们也可以与其他自动化工具、版本控制系统和云平台集成,使整个自动化过程更加高效。
本案例目标:
- 学习如何编写Shell脚本
- 理解脚本的基本语法和逻辑结构
- 通过Shell脚本大大简化平时的工作流程,比如我不想老是重复部署WeBAE或者是其他平台,可以用到以下脚本
- 脚本环境涵盖基本的FISCO BCOS建链、WeBASE一键部署的环境、压力测试的环境。
# 1.开发者环境详细
# 1.1.适配环境
运行环境 | Ubuntu 20.04 |
---|---|
OpenssL 版本 | 1.1.1f |
FISCO BCOS版本 | 2.8/3.1 |
# 1.2.环境准备
只需要安装好一台全新的Ubuntu 20.04的环境。
# 1.3.环境介绍
脚本部署完毕之后,会输出相关主机以及服务配置信息。需要联网部署,我没有切换apt源,因为试过更换了阿里和网易的,安装完环境之后,会更新一些包,会出现Authentication error。
编写脚本的用途:
- 初学者和开发者在每次使用Ubuntu 20.04稳定新版搭建FISCO BCOS后,多次使用环境错乱或者虚拟机崩溃,需要重新搭建,太繁琐了,为此该脚本可以解决如上问题。
- 对于长时间接触智能合约开发的小伙伴,不想每次都繁琐的搭建环境,也可以使用该脚本。
- 对于只需要WeBASE-Front中间件和需要一键部署WeBASE环境的同学非常友好。目前支持FISCO BCOS2.8和3.1两个版本环境部署。
- 也非常适合初学者对FISCO BCOS脱离网络环境在工作目录下利用离线包学习。
环境服务详细:
- [x] 配置了默认Java JDK 11的环境
- [x] 配置了MySQL 8服务,默认无密码
- [x] 配置了常用的网络工具以及Git
- [x] 添加了Python3-pip的依赖
- [x] 添加了Docker容器环境以及docker-compose工具,使用了阿里源加速
- [x] 添加了NVM工具,方便切换Node版本
- [x] 添加了Remix的容器运行环境,默认8080端口访问
- [x] 使用工作目录拉取离线包以后扩展脚本
- [x] 提供FISCO BCOS2.8的所有离线部署资源包
- [x] 提供FISCO BCOS3.1的所有离线部署资源包
# 1.4.脚本详细
- 我这里没有进行换源,是因为更换源之后安装完后会出现软件不兼容。
####################################
# 作者: CN-ZHANG #
# 作用: FISCO BCOS环境提供 #
####################################
install_depall(){
# 关闭防火墙
ufw disable && systemctl stop --now ufw.service
# 更新当前的数据源
apt-get update
# 安装SSH
apt install -y openssh-server && systemctl restart sshd
# 安装基本的Java依赖环境
apt install -y default-jdk
# 配置Java的开发环境
echo '''export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64''' >> ~/.bashrc
echo '''export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64''' >> /etc/profile
source ~/.bashrc
source /etc/profile
# 安装MySQL8和常用的工具
apt install -y mysql-server \
curl wget git net-tools \
unzip python3-pip
pip3 install pyMySQL
# 查看当前的基础环境工具版本
java_version=`java --version | grep openjdk`
openssl_version=`openssl version`
git_version=`git version`
mysql_version=`mysql --version`
echo -e "\033[32m
=====================😋 ✔✔✔ 所有环境版本详细 ======================
Java的开发环境版本:
$java_version
OpenSSL的工具环境版本:
$openssl_version
Git工具的环境版本:
$git_version
MySQL工具的环境版本:
$mysql_version
=================================================================
\033[0m"
}
install_docker(){
# 安装依赖包
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
# 添加Docker官方GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 添加docker仓库
sudo add-apt-repository -y \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
# 更新包索引
sudo apt-get update
# 安装Docker
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose
systemctl restart docker
if [ ! -d "/etc/docker/" ];then
mkdir /etc/docker/
else
echo -e "\033[32m🥵 ✔✔✔ 当前目录已存在\033[0m"
fi
echo '''
{
"registry-mirrors": ["https://ably8t50.mirror.aliyuncs.com"]
}
''' > /etc/docker/daemon.json
systemctl daemon-reload
systemctl restart docker && systemctl enable docker
}
install_nvm(){
# 拉取安装包
cd ~/ && curl -#LO https://gitee.com/mirrors/nvm/raw/v0.33.2/install.sh && chmod +x install.sh && sh install.sh
# nvm淘宝镜像
echo '''export NVM_NODEJS_ORG_MIRROR=http://npm.taobao.org/mirrors/node''' >> ~/.bashrc
echo '''export NVM_NODEJS_ORG_MIRROR=http://npm.taobao.org/mirrors/node''' >> /etc/profile
sleep 3
# 重新加载配置文件
source ~/.bashrc
source /etc/profile
# 安装Node.js 8
nvm install 8
# 使用Node.js 8
nvm use 8
rm -rf install.sh
}
install_fisco_bcos_28(){
echo -e "\033[32m🥵 ✔✔✔ 检测完成当前的环境\033[0m"
# 创建一个工作目录
if [ ! -d "/root/fisco/" ];then
mkdir ~/fisco
else
echo -e "\033[32m🥵 ✔✔✔ 当前目录已存在正在备份中...\033[0m"
mv ~/fisco ~/fiscobak
mkdir ~/fisco
fi
# 拉取FISCO BCOS 2.8的离线包
cd ~/fisco && curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v2.8.0/build_chain.sh && chmod u+x build_chain.sh > /dev/null
cd ~/fisco && curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/console/releases/v2.8.0/console.tar.gz > /dev/null
cd ~/fisco && curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v2.8.0/fisco-bcos.tar.gz && tar zxvf fisco-bcos.tar.gz > /dev/null
cd ~/fisco && curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/tools/get_account.sh && chmod u+x get_account.sh > /dev/null
cd ~/fisco && curl -#LO https://gitee.com/FISCO-BCOS/FISCO-BCOS/raw/master-2.0/tools/gen_node_cert.sh > /dev/null
# 拉取WeBASE的离线包
cd ~/fisco && curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.4/webase-front.zip > /dev/null
cd ~/fisco && curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.4/webase-deploy.zip > /dev/null
}
install_fisco_bcos_30(){
echo -e "\033[32m🥵 ✔✔✔ 检测完成当前的环境\033[0m"
# 创建一个工作目录
if [ ! -d "/root/fisco/" ];then
mkdir ~/fisco
else
echo -e "\033[32m🥵 ✔✔✔ 当前目录已存在正在备份中...\033[0m"
mv ~/fisco ~/fiscobak
mkdir ~/fisco
fi
# 拉取FISCO BCOS 3.1的离线包
cd ~/fisco && curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v3.1.0/build_chain.sh && chmod u+x build_chain.sh > /dev/null
cd ~/fisco && curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v3.1.0/BcosBuilder.tgz > /dev/null
cd ~/fisco && curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/tools/get_account.sh && chmod u+x get_account.sh > /dev/null
cd ~/fisco && curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/tools/get_gm_account.sh && chmod u+x get_gm_account.sh > /dev/null
cd ~/fisco && curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/console/releases/v3.1.0/console.tar.gz > /dev/null
cd ~/fisco && curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v3.1.0/fisco-bcos.tar.gz && tar zxvf fisco-bcos.tar.gz > /dev/null
# 拉取WeBASE的离线包
cd ~/fisco && curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.4/webase-front.zip > /dev/null
cd ~/fisco && curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.4/webase-deploy.zip > /dev/null
}
install_remixed(){
docker pull remixproject/remix-ide:latest
sleep 5
docker run -d -p 8080:80 \
--name remix \
--restart=always \
remixproject/remix-ide:latest
sleep 3
}
start_4fisco(){
cd ~/fisco && bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -e ./fisco-bcos && \
tar zxvf console.tar.gz && \
unzip webase-front.zip && \
bash nodes/127.0.0.1/start_all.sh && \
cp console/conf/config-example.toml console/conf/config.toml && \
cp nodes/127.0.0.1/sdk/* console/conf/ && \
cp nodes/127.0.0.1/sdk/* webase-front/conf/
cd ~/fisco/webase-front/ && bash start.sh
}
echo_all_info(){
echo -e "\033[32m=========================================\033[0m"
echo -e "\033[32m😋 ✔✔✔ 查看当前的工作目录环境包\033[0m"
cd /root/fisco && chmod +x *.sh
files=`ls -ll /root/fisco/ | awk 'NR>1{print $NF}'`
for i in $files
do
echo $i
done
# Docker的版本
docker_version=`docker -v`
docker_compose_version=`docker-compose -v`
# 本机IP
local_ip=`ifconfig -a|grep inet|grep -v 127.0.0.1 | grep -v inet6 | awk 'NR>1{print $2}' | tr -d "addr:"`
echo -e "\033[32m
🔋 基础环境部署完成
============================================================
✔✔✔ 当前的IP地址: $local_ip
✔✔✔ 当前的登录用户: root
✔✔✔ 当前的环境工作目录; /root/fisco
✔✔✔ NVM仓库: http://npm.taobao.org/mirrors/node
✔✔✔ Docker仓库:
{
"registry-mirrors": ["https://ably8t50.mirror.aliyuncs.com"]
}
✔✔✔ Docker版本: $docker_version
✔✔✔ Docker-Compose版本: $docker_compose_version
✔✔✔ 在线Remix http://localhost:8080
============================================================
\033[0m"
}
menu(){
echo -e "\033[32m
============================
1) 部署FISCO BCOS V2.8 环境
2) 部署FISCO BCOS V3.1 环境
3) 开启在线Remix
4) 退出
5) HELP
*) 部署环境菜单
\033[0m"
}
helpInfo(){
echo -e "\033[32m
==================================================
= =
= 使用文档 一键部署FISCO环境 =
= =
==================================================
1. source install_dev_all.sh
2. chmod +x install_dev_all.sh && .install_dev_all.sh
description:
1. 输入1默认部署FISCO BCOS 2.8的环境包
2. 输入2默认部署FISCO BCOS 3.0的环境包
3. 输入3退出当前的操作菜单
4. 输入4查看当前的帮助文档
5. 输入其他取消操作
\033[0m"
}
install_init(){
install_depall
install_docker
install_nvm
install_remixed
}
select_install_fisco(){
# 判断当前的用户是否为root
idOfRoot=`id -u`
if [ $idOfRoot != 0 ];then
echo -e "\033[32m😴 !!! 当前的用户没有最高权限需要切换Root权限\033[0m"
exit
else
while true;do
# 调用当前的菜单
menu
read -p "🚀 ✔✔✔ 请输入你的选项(DEFAULT 1):" fiscorelease
if [ -z $fiscorelease ];then
fiscorelease="1"
fi
case $fiscorelease in
1)
install_init
install_fisco_bcos_28
start_4fisco
echo_all_info
break
;;
2)
install_init
install_fisco_bcos_30
echo_all_info
break
;;
3)
install_remixed
echo -e "\033[32m🌌 ✔✔✔ 已开启在线Remix服务\033[0m"
break
;;
4)
echo -e "\033[32m🌌 ✔✔✔ 当前已经取消操作\033[0m"
break
;;
5)
helpInfo
break
;;
*)
menu
;;
esac
done
fi
}
# 调用主函数 select_install_fisco
select_install_fisco
# 2.快速开始
# 2.1.拉取脚本
$ curl -OL https://gitee.com/isKcount/fisco-bcos-utils/raw/master/install_ubuntun_fisco_dep.sh
# 2.2.执行脚本
因为脚本包含了source命令,所以需要使用source去执行脚本。
$ source install_dev_all.sh
# 2.3.检查环境
脚本最后执行会提示当前所有的环境信息。
# 当前的Java环境
root@fisco:~/fisco# java -version
openjdk version "11.0.18" 2023-01-17
OpenJDK Runtime Environment (build 11.0.18+10-post-Ubuntu-0ubuntu120.04.1)
OpenJDK 64-Bit Server VM (build 11.0.18+10-post-Ubuntu-0ubuntu120.04.1, mixed mode, sharing)
# 当前的Mysql8
root@fisco:~/fisco# mysql -V
mysql Ver 8.0.32-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu))
# 当前的Docker环境
root@fisco:~/fisco# docker -v
Docker version 23.0.2, build 569dd73
# 当前的Docker-compose环境
root@fisco:~/fisco# docker-compose -v
docker-compose version 1.25.0, build unknown
# 当前的nvm环境
root@fisco:~/fisco# nvm version
v8.17.0
# 2.4.查看在线Remix
# 2.5.查看WeBAE-Front
# 2.6 视频演示
个人CSDN博客地址: https://blog.csdn.net/weixin_46532941/article/details/129910073?spm=1001.2014.3001.5501
Bilibili: https://www.bilibili.com/video/BV1nX4y1k7Hp/?vd_source=f79953f7d660554328be2b7b8b5eda99