一、主机部署基础环境和配置
#关闭防火墙和selinux
sed 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config #预览
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config #修改
grep "disabled" /etc/selinux/config #检查
systemctl stop firewalld #关闭防火墙
systemctl disable firewalld #关闭自启
#安装基础工具
yum -y install tree sysstat lrzsz telnet bash-completion bash-completion-extras vim lsof net-tools wget
# 配置docker-ce
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo #docker源
sudo sed -i 's+download.docker.com+mirrors.cloud.tencent.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
sudo yum makecache fast
#清缓存 #加载缓存
yum clean all && yum makecache
yum update #更新yum
二、安装docker和相关依赖
#安装docker 、docker-compose
sudo yum install -y curl docker-ce-20.10.8 docker-compose python3 python3-devel
docker --version
#如果报错。docker组件冲突,执行下面的命令卸载,再次安装。
rpm -qa|grep docker
yum remove xxxxxxxxxx
#镜像加速和数据存储路径
mkdir -p /etc/docker/
vim /etc/docker/daemon.josn
{
"registry-mirrors": ["https://registry.docker-cn.com" , "https://bki7bdap.mirror.aliyuncs.com"],
"data-root": "/data/docker"
}
#启动docker,自启
systemctl daemon-reload && systemctl start docker && systemctl enable docker
三、部署fisco3底链
#下载构建工具BcosBuilder
mkdir -p /fisco
cd /fisco
curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v3.0.0-rc3/BcosProBuilder.tgz && tar -xvf BcosProBuilder.tgz
#安装构建工具依赖包
cd BcosProBuilder && pip3 install -r requirements.txt
#下载二进制脚本
python3 build_chain.py download_binary
#下载慢的话,可以通过下面命令下载
python3 build_chain.py download_binary -t cdn
cd /fisco/BcosProBuilder/docker/host/linux/framework
#修改docker-compose.yml配置文件
version: "3"
services:
tars-mysql:
image: mysql:5.6 #版本
network_mode: "host"
environment:
MYSQL_ROOT_PASSWORD: "" #密码
MYSQL_TCP_PORT: 3310
restart: always
volumes:
- ~/app/tars/framework-mysql:/var/lib/mysql
- /etc/localtime:/etc/localtime
tars-framework:
image: tarscloud/framework:v3.0.1
network_mode: "host"
environment:
MYSQL_HOST: "192.168.1.95"
MYSQL_ROOT_PASSWORD: "" #和上面密码一致
MYSQL_PORT: 3310
REBUILD: "false"
INET: ens33 #eth0 根据自己网卡名称填写
SLAVE: "false"
restart: always
volumes:
- ~/app/tars/framework:/data/tars
- /etc/localtime:/etc/localtime
depends_on:
- tars-mysql
#执行
docker-compose up -d
#访问,修改密码后进入到【admin】->【用户中心】->【token管理】申请token,保存后续使用
127.0.0.1:3000
Token :fsayGciOixxxxxxxxxI6IkpXVCJ9.eyJ1aWxxxxxxxxxxxxCI6MTY1NjY2MTUzNSwiZXxxxxxxxxxM1fQ._kolyF3claeTUQhTTCikjZDZUexxxxxxxxivKxdsxa
#部署RPC服务、网关、区块链节点服务
cd /fisco/BcosProBuilder
cp conf/config-deploy-example.toml config.toml
vim config.toml
[tars]
tars_url = "http://127.0.0.1:3000" #主机地址
tars_token = "fsayGciOixxxxxxxxxI6IkpXVCJ9.eyJ1aWxxxxxxxxxxxxCI6MTY1NjY2MTUzNSwiZXxxxxxxxxxM1fQ._kolyF3claeTUQhTTCikjZDZUexxxxxxxxivKxdsxa" #申请的token
tars_pkg_dir = "binary/"
[chain]
chain_id="test01" #名称
rpc_sm_ssl=false
gateway_sm_ssl=false
#rpc_ca_cert_path=""
#gateway_ca_cert_path="
[[chain.rpc]]
name="testBcosRpcService"
deploy_ip=["192.168.xxx.xxx"] #本机地址
listen_ip="0.0.0.0"
listen_port=20200
thread_count=4
gateway_service_name = "testBcosGatewayService"
[[chain.gateway]]
name="testBcosGatewayService"
deploy_ip=["192.168.xxx.xxx"] #本机地址
listen_ip="0.0.0.0"
listen_port=30300
peers=["192.168.xxx.xxx:30300", "192.168.xxx.xxx:30301"] #本机地址
rpc_service_name = "testBcosRpcService"
[group]
group_id="group0"
vm_type="evm"
sm_crypto=false
auth_check=false
init_auth_address=""
# the genesis config
leader_period = 5
block_tx_count_limit = 1000
consensus_type = "pbft"
gas_limit = "3000000000"
[[group.deploy_info]]
# node_name = "node0"
deploy_ip = "192.168.xxx.xxx" #本机地址
node_count=1
rpc_service_name = "testBcosRpcService"
gateway_service_name = "testBcosGatewayService"
[[group.deploy_info]]
# node_name = "node1"
deploy_ip = "192.168.xxx.xxx" #本机地址
node_count=1
rpc_service_name = "testBcosRpcService"
gateway_service_name = "testBcosGatewayService"
#rpc
python3 build_chain.py chain -o deploy -t rpc
#网关
python3 build_chain.py chain -o deploy -t gateway
#部署区块链节点服务
python3 build_chain.py chain -o deploy -t node
#部署控制台
yum install -y java java-devel
#下载控制台
cd /fisco
curl -#LO https://gitee.com/FISCO-BCOS/console/raw/master/tools/download_console.sh && bash download_console.sh
#拷贝控制台配置文件
cp console/conf/config-example.toml console/conf/config.toml
#配置控制台证书
cp /fisco/BcosProBuilder/generated/rpc/test01/192.168.xxx.xxx/testBcosRpcService/sdk/* /fisco/console/conf
#启动控制台
cd /data/nft/fisco/console && bash start.sh
#####注意权限和sdk证书配置####
#添加主机节点(另外一台服务器)
重复一、二操作
#下载构建工具BcosBuilder
mkdir -p /data/nft/fisco
cd /fisco
curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v3.0.0-rc3/BcosProBuilder.tgz && tar -xvf BcosProBuilder.tgz
#安装构建工具依赖包
cd BcosProBuilder && pip3 install -r requirements.txt
#下载二进制脚本
python3 build_chain.py download_binary
#下载慢的话,可以通过下面命令下载
python3 build_chain.py download_binary -t cdn
#修改docker-compose.yml配置文件
vim /fisco/BcosProBuilder/docker/host/linux/node/docker-compose.yml #注意,此处修改node文件下面的docker-compose文件
version: "3"
services:
tars-node:
image: tarscloud/tars-node:latest
network_mode: "host"
environment:
INET: eth0
WEB_HOST: "http://192.168.xxx.xxx:3000" #主节点的web界面地址,不是本机地址
restart: always
volumes:
- ~/app/tars:/data/tars
- /etc/localtime:/etc/localtime
#执行,查看
docker-compose up -d
#设置区块链节点扩容配置
# 进入操作目录
cd /fisco/BcosProBuilder
# 拷贝模板配置
cp conf/config-node-expand-example.toml config.toml
sed -i 's/tars_token = ""/tars_token = "fsayGciOixxxxxxxxxI6IkpXVCJ9.eyJ1aWxxxxxxxxxxxxCI6MTY1NjY2MTUzNSwiZXxxxxxxxxxM1fQ._kolyF3claeTUQhTTCikjZDZUexxxxxxxxivKxdsxa"/g' config.toml
[tars]
tars_url = "http://192.168.1.95:3000"
tars_token = "fsayGciOixxxxxxxxxI6IkpXVCJ9.eyJ1aWxxxxxxxxxxxxCI6MTY1NjY2MTUzNSwiZXxxxxxxxxxM1fQ._kolyF3claeTUQhTTCikjZDZUexxxxxxxxivKxdsxa"
tars_pkg_dir = "binary/"
[chain]
chain_id="test01"
[[group.deploy_info]]
node_name = "node2"
deploy_ip = "192.168.xxx.xxx" #本机ip地址
expanded_service = "group0node00BcosNodeService"
node_count=1
[[group.deploy_info]]
node_name = "node3"
deploy_ip = "192.168.xxx.xxx" #本机ip地址
expanded_service = "group0node00BcosNodeService"
node_count=1
#加入节点
python3 build_chain.py chain -o expand -t node
四、测试合约和合约部署
#获取扩容节点的NodeID
#进入控制台
cd /data/nft/fisco/console && bash start.sh
getGroupPeers #查看 (数据不方便透露)
peer0:1123fb95dc2141237d11e0183cabe0c1c32c9dc6a95aad5f5bdf97e9c2faf911ccf7f8f4811d4ba4bb9acc5bb1c6efedb20758a8d9718c77f341254641234213147ef
peer1:823fb95dc2128d7123e0183cabe0c1c32c9dc6a95aad5f5bdf97e9c2faf911ccf7f8f4811d4ba4bb9acc5bb1c6efedb20758a8d9718c77f42131464d6887147ef
peer2:54328fb95dc21asdfga183cabe0c1c32c9dc6a95aad5f5bdf97e9c2faf911ccf7f8f4811d4ba4bb9acc5bb1c6efedb20758a8d9718c77ada2464d6887147ef
peer3:3248fb95adasdd11e0183cabe0c1c32123146a95aad5f5bdfzad5e9c2faf911ccf7f84214811d4ba4bb9acc5bb1c6efedb20758a8d9718c77f34a7464d6887147ef
显示四条
peer ID
getSealerList #查看
nodeID='823fb95dc2128d7123e0183cabe0c1c32c9dc6a95aad5f5bdf97e9c2faf911ccf7f8f4811d4ba4bb9acc5bb1c6efedb20758a8d9718c77f42131464d6887147ef'
nodeID='3248fb95adasdd11e0183cabe0c1c32123146a95aad5f5bdfzad5e9c2faf911ccf7f84214811d4ba4bb9acc5bb1c6efedb20758a8d9718c77f34a7464d6887147ef'
复制不在节点的id
peer0:1123fb95dc2141237d11e0183cabe0c1c32c9dc6a95aad5f5bdf97e9c2faf911ccf7f8f4811d4ba4bb9acc5bb1c6efedb20758a8d9718c77f341254641234213147ef
peer2:54328fb95dc21asdfga183cabe0c1c32c9dc6a95aad5f5bdf97e9c2faf911ccf7f8f4811d4ba4bb9acc5bb1c6efedb20758a8d9718c77ada2464d6887147ef
# 将扩容节点加入为观察节点
addObserver 1123fb95dc2141237d11e0183cabe0c1c32c9dc6a95aad5f5bdf97e9c2faf911ccf7f8f4811d4ba4bb9acc5bb1c6efedb20758a8d9718c77f341254641234213147ef
addObserver 54328fb95dc21asdfga183cabe0c1c32c9dc6a95aad5f5bdf97e9c2faf911ccf7f8f4811d4ba4bb9acc5bb1c6efedb20758a8d9718c77ada2464d6887147ef
#扩容节点同步到最高块后,将扩容节点加入为共识节点
addSealer 1123fb95dc2141237d11e0183cabe0c1c32c9dc6a95aad5f5bdf97e9c2faf911ccf7f8f4811d4ba4bb9acc5bb1c6efedb20758a8d9718c77f341254641234213147ef 1
addSealer 54328fb95dc21asdfga183cabe0c1c32c9dc6a95aad5f5bdf97e9c2faf911ccf7f8f4811d4ba4bb9acc5bb1c6efedb20758a8d9718c77ada2464d6887147ef 1
#注意,两个参数 后面是1
#部署测试合约 (自带的合约)
deploy HelloWorld
返回
transaction hash:xxxxxxxxxxxxxxx
contract address: xxxxxxxxxxxxxxx
currentAccount: xxxxxxxxxxxxxxx
#测试
call HelloWorld xxxxxxxxxxxxxxx (contract address返回的参数)set "Hello, Fisco"
#查看是否成功
#查看区块高度
call HelloWorld xxxxxxxxxxxxxxx (contract address返回的参数)get
到此部署完成。可以部署前后端业务