区块链部署笔记(Centos7)包含fisco bcos与webase!

作者 : admin 本文共18354个字,预计阅读时间需要46分钟 发布时间: 2024-06-3 共3人阅读

基于FISCO-BCOS搭链脚本搭链

FISCO-BCOS 中文技术文档:

FISCO BCOS 2.0 技术文档 — FISCO BCOS 2.0 v2.11.0 文档

开发部署工具(build_chain.sh)

联盟链技术的主要应用领域

区块链部署笔记(Centos7)包含fisco bcos与webase!插图

首先安装依赖

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(1)

主要内容:单群组部署,节点扩容,多群组部署

需要提前安装好jdk-8,并配置好环境变量

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(2)

使用build_chain.sh搭链脚本部署本地单群组四节点

## 下载脚本出的
curl -#LO
http://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.9.1/build_chain.sh && chmod u+x build_chain.sh

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(3)

在线搭链,会自动默认从GitHub下载fisco-bcos文件

bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(4)

无线搭链(无外网),-e,在指定(fisco-bcos)位置使用二进制,就是你的环境已经有fisco-bcos这个文件

bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -e ./fisco-bcos

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(5)

-e <FISCO-BCOS binary path> 默认从GitHub下载fisco-bcos。如果set -e,在指定位置使用二进制

-l 用于指定要生成的链的IP列表以及每个IP下的节点数,以逗号分隔。脚本根据输入的参数生成对应的节点配置文件,其中每个节点的端口号默认从30300开始递增,所有节点属于同一个机构和群组。
-p 指定节点的起始端口,每个节点占用三个端口,分别是p2p,channel,jsonrpc使用,分割端口,必须指定三个端口。同一个IP下的不同节点所使用端口从起始端口递增。
按照配置文件部署区块链(多群组部署)
cat>ipconf<<EOF
>127.0.0.1:2 agencyA 1,2
>127.0.0.1:2 agencyB 1
>EOF
bash build_chain.sh -f ipconf 
-f 指定格式配置文件(ipconf)搭链
127.0.0.1 IP地址
:2 两个节点 
agencyA 机构A 
1,2 群组一,群组二

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(6)

启动脚本之后,就会生成节点目录,目录结构如下:

1cert文件夹下存放链的根证书和机构证书。

2以IP命名的文件夹下存储该服务器所有节点相关配置、fisco-bcos可执行程序、SDK所需的证书文件。

3每个IP文件夹下的node*文件夹下存储节点所需的配置文件。其中config.ini为节点的主配置,conf目录下存储证书文件和群组相关配置。配置文件详情,请参考这里。每个节点中还提供start.shstop.sh脚本,用于启动和停止节点。

4每个IP文件夹下nodes/127.0.0.1( IP )的提供start_all.shstop_all.sh两个脚本用于启动和停止所有节点。

bash nodes/127.0.0.1/start_all.sh 启动所有节点

bash nodes/127.0.0.1/stop_all.sh 停止所有节点

nodes/
├── 127.0.0.1
   ├── fisco-bcos # 二进制程序
   ├── node0 # 节点0文件夹
      ├── conf # 配置文件夹
         ├── ca.crt # 链根证书
         ├── group.1.genesis # 群组1初始化配置,该文件不可更改
         ├── group.1.ini # 群组1配置文件
         ├── node.crt # 节点证书
         ├── node.key # 节点私钥
         ├── node.nodeid # 节点id,公钥的16进制表示
|   |   |   ├── channel_cert # 节点与SDK通信的RSA证书,FISCO-BCOS 2.9.0+支持
|   |   |       ├── ca.crt
|   |   |       ├── node.crt
|   |   |       └── node.key
      ├── config.ini # 节点主配置文件,配置监听IP、端口等
      ├── start.sh # 启动脚本,用于启动节点
      └── stop.sh # 停止脚本,用于停止节点
   ├── node1 # 节点1文件夹
   │.....
   ├── node2 # 节点2文件夹
   │.....
   ├── node3 # 节点3文件夹
   │.....
   ├── sdk # SDK与节点SSL连接配置,FISCO-BCOS 2.5及之后的版本,添加了SDK只能连本机构节点的限制,操作时需确认拷贝证书的路径,否则建联报错
      ├── ca.crt # SSL连接根证书
      ├── sdk.crt # SSL连接证书
      └── sdk.key # SSL连接证书私钥
|   |   ├── gm # SDK与节点国密SSL连接配置,注意:生成国密区块链环境时才会生成该目录,用于节点与SDK的国密SSL连接
|   |      ├── gmca.crt # 国密SSL连接根证书
|   |      ├── gmensdk.crt # 国密SSL连接加密证书
|   |      ├── gmensdk.key # 国密SSL连接加密证书私钥
|   |      ├── gmsdk.crt # 国密SSL连接签名证书
|   |      └── gmsdk.key # 国密SSL连接签名证书私钥
├── cert # 证书文件夹
   ├── agency # 机构证书文件夹
      ├── agency.crt # 机构证书
      ├── agency.key # 机构私钥
      ├── agency.srl
      ├── ca-agency.crt
      ├── ca.crt
      └── cert.cnf
|   |   └── channel/ # 节点与SDK通过RSA证书SSL通信的根证书,FISCO-BCOS 2.9.0+支持
|   |      ├── ca.crt
|   |      ├── ca.key
|   |      └── ca.srl
   ├── ca.crt # 链证书
   ├── ca.key # 链私钥
   ├── ca.srl
   └── cert.cnf

查看所有节点进程

ps -ef|grep -v grep|grep fisco-bcos

查看节点端口

netstat -nltp|grep fisco-bcos

查看node0与其他节点是否连接

tail -f node0/log/log*|grep connected

查看节点是否产生共识

tail -f node0/log/log*|grep ++++

解压console.tar.gz

tar -zxvf console.tar.gz

console目录

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(7)

cp nodes/127.0.0.1/sdk/* console/conf

cd console/conf/

cp config-example.toml config.toml

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(8)

在console目录下,执行启动脚本

bash start.sh

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(9)

console 常用命令

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(10)

还有其他命令可查看fisco-bcos官方技术文档

解压webase-font.zip中间件

unzip webase-font.zip

cp nodes/127.0.0.1/sdk/* webase-font/conf

cd webase-font.zip

bash start.sh

下图即为启动成功

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(11)

在浏览器访问http://ip地址:5002/WeBASE-Front区块链部署笔记(Centos7)包含fisco bcos与webase!插图(12)

详细解释一下可能导致访问webase-front失败的原因和解决方法。

节点配置错误或未启动相应服务

fisco-bcos是一个基于区块链技术的开源平台,可以搭建自己的区块链网络。如果在搭建fisco-bcos时出现了错误的节点配置,那么就会导致无法连接到网络,从而影响访问webase-front.

解决方法:

确认节点配置是否正确

检查并启动fisco-bcos节点服务

WeBASE后端未部署完成或未运行

WeBASE是一个微众银行研发的上层区块链开发平台,在webase-front中主要负责提供管理和监控区块链网络的后端服务。如果WeBASE后端未部署完成或未运行,就会导致webase-front无法获取区块链信息从而无法展示页面。

解决方法:

确认WeBASE后端已经部署完成并处于运行状态

确认当前正在运行的IP地址、端口号是否与前端中的一致

重新启动WeBASE后端服务

URL错误或不可达

浏览器访问webase-front的URL有可能仅仅是输入错误导致无法访问,也有可能是由于网络防火墙的限制导致URL无法访问。

解决方法:

确认URL输入是否正确,防止输入错误

确认网络防火墙的限制情况,尝试关闭网络防火墙并重新尝试访问URL

节点扩容需要使用证书生成脚本gen_node_cert.sh

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(13)

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(14)

默认当前已经在nodes/$ip目录下

bash gen_node_cert.sh -c ../cert/agency -o node4 

确认node4与其它节点是否连接

tail -f node0/log/log*|grep connected

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(15)区块链部署笔记(Centos7)包含fisco bcos与webase!插图(16)

多群组部署

先停止fisco内的所有节点和webase-font中间件

bash fisco/nodes/127.0.0.1/stop_all.sh

cd webash-font

bash stop.sh

新建fisco2

mkdir fisco2

复制fisco目录下所有内容到fisco2

cp -rf fisco/* fisco2

删除fisco2目录下的console、nodes、webase-font目录

cd fisco2

rm -rf console nodes webase-font

编辑一个节点配置文件

cat>ipconf<<EOF
>127.0.0.1:2 agencyA 1,2
>127.0.0.1:2 agencyB 1
>EOF
按照配置文件部署区块链(多群组部署)
bash build_chain.sh -f ipconf 
-f 指定格式配置文件(ipconf)搭链
127.0.0.1 IP地址
:2 两个节点 
agencyA 机构A 
1,2 群组一,群组二

启动所有节点,检查节点进程和节点端口

解压console.tar.gz和webase-font.zip 文件,并配置好相关配置,与前面操作相同

获取和续期证书

FISCO BCOS网络采用面向CA的准入机制,支持任意多级的证书结构,保障信息保密性、认证性、完整性、不可抵赖性。

FISCO BCOS使用x509协议的证书格式,根据现有业务场景,默认采用三级的证书结构,自上而下分别为链证书、机构证书、节点证书。

在多群组架构中,一条链拥有一个链证书及对应的链私钥,链私钥由联盟链委员会共同管理。联盟链委员会可以使用机构的证书请求文件agency.csr,签发机构证书agency.crt

机构私钥由机构管理员持有,可以对机构下属节点签发节点证书。

节点证书是节点身份的凭证,用于与其他持有合法证书的节点间建立SSL连接,并进行加密通讯。

sdk证书是sdk与节点通信的凭证,机构生成sdk证书,允许sdk与节点进行通信。

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(17)区块链部署笔记(Centos7)包含fisco bcos与webase!插图(18)

节点证书node.crt包括节点证书和机构证书信息,节点与其他节点/SDK通信验证时会用自己的私钥node.key对消息进行签名,并发送自己的node.crt至对方进行验证区块链部署笔记(Centos7)包含fisco bcos与webase!插图(19)

基于WeBASE中间件,还可使用一键部署,可视化部署,一键docker部署等,前面是基于fisco-bcos搭链脚本build_chain.sh搭链,以及配置

好,节点前置服务WeBASE-Front,默认端口5002

一键部署需要配置好mysql-5.7及以上,jdk安装建议使用jdk-8版本,而一键docker部署无需配置,需要安装docker,并拉取镜像。以及都需要安装python-3.6及以上,推荐使用jdk-8,mysql5.7,python-3.6。

可视化部署依赖WeBASE中间件,包括管理平台(WeBASE-Web)、节点管理子系统(WeBASE-Node-Manager)、签名服务(WeBASE-Sign)

对于依赖服务的安装,有两种方式( 一键部署 和 手动部署 ),选择其中一种部署方式即可

使用可视化部署的时候,我使用的是一键部署,下图前提条件需要配置好。

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(20)

安装mysql5.7

1.可按照WeBASE官方技术文档,部署MariaDB

MariaDB数据库是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。MariaDB完全兼容 MySQL,包括API和命令行。MariaDB 10.2版本对应Mysql 5.7。

CentOS 7 默认MariaDB为5.5版本,安装10.2版本需要按下文进行10.2版本的配置。

若使用CentOS 8则直接使用sudo yum install -y mariadb*即可安装MariaDB 10.3

因为官网下载比较慢,所以这里使用中科大镜像源

使用vi或vim创建/etc/yum.repos.d/mariadb.repo

sudo vi /etc/yum.repos.d/mariadb.repo

然后配置以上信息

# MariaDB 10.2 CentOS repository list - created 2021-07-12 07:37 UTC
# Download MariaDB Server - MariaDB.org
[mariadb]name = MariaDBbaseurl = http://mirrors.ustc.edu.cn/mariadb/yum/10.2/centos7-amd64gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDBgpgcheck=1

更新yum源缓存数据

yum clean all

yum makecache all

安装MariDB 10.2

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(21)

启停数据库

sudo systemctl start maridb.service

sudo systemctl stop maridb.service

设计开机启动

sudo systemctl enable mariadb.service

初始化数据库

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(22)

授权访问和添加用户

root用户远程登录,账号root  密码123456

test用户本地访问,账号test 密码123456

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(23)

提示一下(不过训练中,按照操作即可):

  1. 例子中给出的数据库密码(123456)仅为样例,强烈建议设置成复杂密码
  2. 例子中root用户的远程授权设置会使数据库在所有网络上都可以访问,请按具体的网络拓扑和权限控制情况,设置网络和权限帐号

最后可以测试一下,-p后面是指定密码,-h指定ip ,-P指定端口

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(24)

创建数据库webasenodemanager,是后面部署时,会用到,就是下面这个节点管理服务DB

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(25)

  1. 直接安装Mysql 5.7版本

下载mysql5.7软件包,并导入yum库

wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

sudo rpm -ivh mysql57-community-release-el7-8.noarch.rpm

如果404报错,可能是链接写错了,因为在官网上下载,所以会比较慢

安装 MySQL 5.7 的客户端和服务器端组件

sudo yum install -y mysql-community-server mysql-community-client

出现这种错误,说明公钥没有安装

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(26)

下载公钥

wget http://repo.mysql.com/RPM-GPG-KEY-mysql-2022 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

导入 MySQL 公钥:

rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

在 MySQL 的 Yum 存储库配置文件中添加公钥验证选项

nano /etc/yum.repos.d/mysql-community.repo

找到 [mysql56-community] 段落下面的 gpgcheck=1 行(请根据实际情况选择正确的段落),然后将其修改为:

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

默认一般指向这个目录,看情况修改,我的没有修改

安装或更新 MySQL:

sudo yum install mysql-server

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(27)

这样就是成功安装好了

获取临时密码

grep ‘temporary password’ /var/log/mysqld.log

这将输出一个包含临时密码的字符串,例如:

2021-09-01T16:23:45.123456Z 1 [Note] A temporary password is generated for root@localhost: Abcd1234!

其中的 “Abcd1234!” 就是临时密码。注意,您的密码和时间戳可能不同。

使用root用户登录,注意!临时密码不支持显式登录,即mysql -uroot -p[临时密码]

mysql -uroot -p

下一行输入临时密码

把MySQL的密码校验强度改为低风险,不然设置密码会比较麻烦

set global validate_password_policy=LOW;

修改MySQL的密码长度,这里长度是6

set global validate_password_length=6;

修改MySQL密码123456

ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘123456’;

查看user表

use mysql;

select Host,User from user;

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(28)

修改为允许任何地址访问

update user set Host=’%’ where User=’root’;

刷新权限,这样就可以远程登录了

flush privileges;

可以使用navicat测试一下,若不能,可能是防火墙的问题

  1. 远程访问windows主机的mysql

在虚拟机系统,没有安装mysql服务的时候,mysql服务是不可以用的

虚拟机控制台是不可以通过 mysql -u[user] -h[ip] -p[password]访问,

但是不影响搭建webase平台的时候,访问(已经验证)

首先我们需要访问windows本地的数据库,创建远程登录的用户

在配置mysql环境变量的情况下,

在win+r 输入cmd,并登录mysql

mysql -u[user] -p[password]

创建远程登录的用户,这里模拟root用户,密码123456

grant all privileges on *.* to ‘root’@ ‘%’ identified by ‘123456’with grant option;

flush privileges;

exit;

如果这个命令不好记,还有一个快捷的方法

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(29)

 

第一个root是我之前添加进去的

把最后一行root的localhost改成%,在更新配置即可

update user set host=’%’ where user = root;

flush privileges;

exit;

最后一步是关键,要么开放mysql使用的(默认3306)端口,要么关闭windows防火墙(比赛时推荐),不然很可能访问不了,在控制面板设置即可,开放端口的话,需要配置一个入站规则;

  1. 比赛软件提供phpstudy,那就很简单了,因为phpstudy自带mysql5.7,安装phpstudy,然后启动,如果在训练期间,自己下载安装phpstudy,发现启动不了mysql,不用慌,跟本地安装好的冲突了,停掉或者删掉就可以了,

然后进入到这里,双击目录,输入cmd

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(30)

然后进行配置远程用户的操作,自选一个即可

安装python-3.6

pip是一个用于安装和管理 Python 软件包的软件工具,常常用来安装和升级第三方模块

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(31)

验证安装是否成功

python3.6 –version

pip3 –version

部署PyMySQL

PyMySQL是Python中操作MySQL数据库的第三方库,支持所有的MySQL服务器版本。

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(32)

再配置好jdk-8即可,具体步骤可根据不同系统上网查询配置方式

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(33)

拉取部署脚本

获取脚本 

wget http://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.4/webase-deploy.zip

下载完后,会得到webase-deploy.zip压缩包,对它进行解压,得到webase-deploy文件

unzip webase-deploy.zip

进入webase-deploy

cd webase-deploy

修改配置文件

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(34)

一键部署修改common.properties

vi common.properties

# WeBASE子系统的最新版本(v1.1.0或以上版本)
webase.web.version=v1.5.4
webase.mgr.version=v1.5.4
webase.sign.version=v1.5.3
webase.front.version=v1.5.4
####################################################################### 使用Docker启用Mysql服务,则需要配置以下值
# 1: enable mysql in docker# 0: mysql run in host, required fill in the configuration of webase-node-mgr and webase-sign
docker.mysql=1
# if [docker.mysql=1], mysql run in host (only works in [installDockerAll])# run mysql 5.6 by docker
docker.mysql.port=23306# default user [root]
docker.mysql.password=123456
####################################################################### 不使用Docker启动Mysql,则需要配置以下值
# 节点管理子系统mysql数据库配置 需要配置数据库用户名root,密码123456
mysql.ip=127.0.0.1
mysql.port=3306
mysql.user=root 
mysql.password=123456
mysql.database=webasenodemanager
# 签名服务子系统mysql数据库配置
sign.mysql.ip=localhost
sign.mysql.port=3306
sign.mysql.user=root
sign.mysql.password=123456
sign.mysql.database=webasesign
# 节点前置子系统h2数据库名和所属机构
front.h2.name=webasefront
front.org=fisco
# WeBASE管理平台服务端口
web.port=5000# 启用移动端管理平台 (0: disable, 1: enable)
web.h5.enable=1
# 节点管理子系统服务端口
mgr.port=5001# 节点前置子系统端口
front.port=5002# 签名服务子系统端口
sign.port=5004
# 节点监听Ip
node.listenIp=127.0.0.1# 节点p2p端口
node.p2pPort=30300# 节点链上链下端口
node.channelPort=20200# 节点rpc端口
node.rpcPort=8545
# 加密类型 (0: ECDSA算法, 1: 国密算法)
encrypt.type=0# SSL连接加密类型 (0: ECDSA SSL, 1: 国密SSL)# 只有国密链才能使用国密SSL
encrypt.sslType=0
# 是否使用已有的链(yes/no)if.exist.fisco=no
# 使用已有链时需配置# 已有链的路径,start_all.sh脚本所在路径# 路径下要存在sdk目录(sdk目录中包含了SSL所需的证书,即ca.crt、sdk.crt、sdk.key和gm目录(包含国密SSL证书,gmca.crt、gmsdk.crt、gmsdk.key、gmensdk.crt和gmensdk.key)
fisco.dir=/data/app/nodes/127.0.0.1# 前置所连接节点,在127.0.0.1目录中的节点中的一个# 节点路径下要存在conf文件夹,conf里存放节点证书(ca.crt、node.crt和node.key)
node.dir=node0
# 搭建新链时需配置# FISCO-BCOS版本
fisco.version=2.7.2# 搭建节点个数(默认两个) 4节点,则nodeCounts修改成4即可
node.counts=nodeCounts

部署

python3 deploy.py installAll

因为是通过配置文件common.properties进行部署,启动部署后会首先检查你的每一项配置信息看是否正确,若不正确就会停下来,通过错误信息提示,问题排查完之后,再重新部署,最后出现下图这样的结果则为部署成功。

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(35)

常见错误

  1. python命令错误

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(36)

  1. 使用python3找不到pymysql

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(37)

  1. 部署某个组件失败,重新部署提示端口被占用问题

   答:因为有个别组件是启动成功的,需要先执行“python3 deploy.py stopAll”将其停止

再执行“python3 depoly.py installAll”部署全部

  1. 管理平台启动时Nginx报错

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(38)

  1. 部署数据库时访问错误,就是配置文件的用户名密码写错了

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(39)

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(40)

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(41)

对各个服务的启停命令

# 一键部署
部署并启动所有服务        python3 deploy.py installAll
停止一键部署的所有服务    python3 deploy.py stopAll
启动一键部署的所有服务    python3 deploy.py startAll# 各子服务启停
启动FISCO-BCOS节点:      python3 deploy.py startNode
停止FISCO-BCOS节点:      python3 deploy.py stopNode
启动WeBASE-Web:          python3 deploy.py startWeb
停止WeBASE-Web:          python3 deploy.py stopWeb
启动WeBASE-Node-Manager: python3 deploy.py startManager
停止WeBASE-Node-Manager: python3 deploy.py stopManager
启动WeBASE-Sign:        python3 deploy.py startSign
停止WeBASE-Sign:        python3 deploy.py stopSign
启动WeBASE-Front:        python3 deploy.py startFront
停止WeBASE-Front:        python3 deploy.py stopFront# 可视化部署
部署并启动可视化部署的所有服务  python3 deploy.py installWeBASE
停止可视化部署的所有服务  python3 deploy.py stopWeBASE
启动可视化部署的所有服务  python3 deploy.py startWeBASE

检查各子系统进程

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(42)

ps -ef | grep [子系统名],例如ps -ef | grep node,查看节点进程,下面是两个节点进程

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(43)

检查进程端口

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(44)

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(45)

检查服务日志-如果进程和端口都没有问题可以直接访问WeBASE

各子服务路径如下所示:

|-- webase-deploy # 一键部署目录
|--|-- log # 部署日志目录
|--|-- webase-web # 管理平台目录
|--|--|-- log # 管理平台日志目录
|--|-- webase-node-mgr # 节点管理服务目录
|--|--|-- log # 节点管理服务日志目录
|--|-- webase-sign # 签名服务目录
|--|--|-- log # 签名服务日志目录
|--|-- webase-front # 节点前置服务目录
|--|--|-- log # 节点前置服务日志目录
|--|-- nodes # 一件部署搭链节点目录
|--|--|-- 127.0.0.1
|--|--|--|-- node0 # 具体节点目录
|--|--|--|--|-- log # 节点日志目录

备注:当前节点日志路径为一键部署搭链的路径,使用已有链请在相关路径查看日志

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(46)

打开浏览器,访问WeBASE管理平台

http://localhost:5000

默认账号admin

默认密码Abcd1234

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(47)

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(48)

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(49)

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(50)

可视化部署-基于一键部署服务依赖(适用于同机部署)仅在宿主机安装节点

安装docker

# 该脚本是 Docker 官方提供的 Linux 自动安装脚本

bash <(curl -s -L get.docker.com)

拉取 Docker 镜像

镜像版本:v2.8.0

提示:

最近的镜像版本,请参考:http://hub.docker.com/r/fiscoorg/fisco-webase/tags

(目前最新版本是v2.9.0)

如果本地没有镜像(如果本地有镜像,跳过)

如果需要替换镜像,执行docker rmi [ImageId]删除镜像即可

从 CDN 拉取镜像压缩包

# 从 CDN 拉取镜像 tar 文件

# 非国密

wget http://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.4/docker-fisco-webase.tar

从docker官网拉取

docker pull fiscoorg/fisco-webase:v2.8.0

如果报错可能docker没启动,需要启动sudo service docker start

解压镜像 tar 文件

docker load -i docker-fisco-webase.tar

节点主机检查是否已经成功拉取镜像

# 检查是否成功拉取镜像

docker images -a |grep -i “fiscoorg/fisco-webase”

   

# 如果有如下输出,表示拉取成功

fiscoorg/fisco-webase   v2.8.0  bf4a26d5d389  5 days ago   631MB

启停docker

sudo service docker start

sudo service docker start

启动Docker服务的命令为:

systemctl start docker

停止Docker服务的命令为:

systemctl stop docker

重启Docker服务的命令为:

systemctl restart docker

如果您需要在每次系统启动时自动启动 Docker 服务,可以使用以下命令:

systemctl enable docker

配置docker用户组若执行Docker命令,如docker ps必须使用sudo才能运行,则需要按如下修改:

检测docker ps命令(一般情况下,不会报错)

docker ps

若docker ps命令报错Permission Denied则需要配置docker用户组:

# 创建docker用户组

sudo groupadd docker

# 将当前用户添加到docker用户组

sudo usermod -aG docker $USER

# 重启docker服务

sudo systemctl restart docker

# 切换或者退出当前账户,重新登入

exit

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(51)

安装Ansible

注:Ansible只需要安装在宿主机上,节点主机无需安装Ansible,只需配置宿主机到节点主机的免密登录

yum install epel-release -y

yum install ansible –y

检查 ansible –version

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(52)

配置Ansible host_key_checking

配置Ansible的Host key checking,将自动确认连接到远程主机

vi /etc/ansible/ansible.cfg

# 找到host_key_checking选项,去除注释并保存

···

host_key_checking = False

免密登录配置

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(53)

检查 ~/.ssh/ 目录是否已经存在 id_rsa 私钥文件和对应的 id_rsa.pub 公钥文件。如果存在,备份现有私钥对

mv ~/.ssh/id_rsa ~/.ssh/id_rsa.bak

mv ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.bak

执行命令 ssh-keygen -t rsa -m PEM,然后直接两次回车即可生成(提示输入密码时,直接回车)

ssh-keygen -t rsa -m PEM

将公钥文件上传到需要免密登录的主机(替换 [IP] 为节点主机的 IP 地址),然后输入远程主机的登录密码

ssh-copy-id -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa.pub root@[IP]

输出结果出现 Number of key(s) added: 1 结果,表示免密登录配置成功

检查从部署 WeBASE-Node-Manager 服务的主机是否能成功免密登录部署节点的主机(替换 [IP] 为主机的 IP 地址)

ssh -o StrictHostKeyChecking=no root@[IP]

若不用输入密码跳转到目标ip即为成功

配置Ansible Hosts与免密登录

在/etc/ansible/hosts文件中添加IP组webase,并配置节点主机的IP、免密登录账号和私钥路径、SSH端口。

注:若后续需要添加新的主机,需要将新主机的IP添加到此处

添加以下内容:此处假设节点机IP为127.0.0.1,免密登录账户为root,且id_rsa免密私钥的路径为/root/.ssh/id_rsa,ssh端口使用22端口,添加名为webase的IP组

vi /etc/ansible/hosts

···

[webase]

127.0.0.1 ansible_ssh_private_key_file=/root/.ssh/id_rsa  ansible_ssh_user=root  ansible_ssh_port=22

{your_host_ip} ansible_ssh_private_key_file={ssh_private_key}  ansible_ssh_user={ssh_user}  ansible_ssh_port={ssh_port}

测试Ansible

执行Ansible的–list-hosts命令查看是否已添加成功

ansible webase –list-hosts

  hosts (2):

    XXX.XXX.XXX.1

    XXX.XXX.XXX.2

执行Ansible的ping命令,检测添加到hosts中各个节点主机IP能否被访问,免密配置是否已生效

若出现IP | SUCCESS的则代表该IP可连通

如果出现FAILED代表该IP无法连接,需要根据上文的免密登录配置进行ssh -o StrictHostKeyChecking=no root@[IP]检测

对ansible中的webase ip组进行ping检测

ansible webase -m ping

xxx.xxx.xxx.1 | SUCCESS => {

    “ansible_facts”: {

        “discovered_interpreter_python”: “/usr/bin/python”

    },

    “changed”: false,

    “ping”: “pong”

}

xxx.xxx.xxx.2 | SUCCESS => {

    “ansible_facts”: {

        “discovered_interpreter_python”: “/usr/bin/python”

    },

    “changed”: false,

    “ping”: “pong”

}

拉取部署脚本

获取部署安装包:

wget http://github.com/WeBankFinTech/WeBASELargeFiles/releases/download/v1.5.4/webase-deploy.zip

# 若网络问题导致长时间无法下载,可尝试以下命令

wget http://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.4/webase-deploy.zip

解压安装包:

unzip webase-deploy.zip

进入目录:

cd webase-deploy

注意:

配置可视化部署配置文件时,选择visual-deploy.properties进行配置

选择部署方式时,选择 可视化部署 方式,即执行 deploy.py 脚本时,执行 python3 deploy.py installWeBASE

修改 visual-deploy.properties 文件。

重要

注意: sign.ip 配置的 IP 是WeBASE-Sign签名服务对外提供服务访问的 IP 地址,供其他部署节点主机访问。

# WeBASE子系统的最新版本(v1.1.0或以上版本)

webase.web.version=v1.5.4

webase.mgr.version=v1.5.4

webase.sign.version=v1.5.3

fisco.webase.docker.cdn.version=v1.5.4

# 节点管理子系统mysql数据库配置

mysql.ip=127.0.0.1     远程访问时需要修改,非远程不需修改

mysql.port=3306

mysql.user=dbUsername

mysql.password=dbPassword

mysql.database=webasenodemanager

# 签名服务子系统mysql数据库配置

sign.mysql.ip=localhost    远程访问时需要修改,非远程不需修改

sign.mysql.port=3306

sign.mysql.user=dbUsername

sign.mysql.password=dbPassword

sign.mysql.database=webasesign

# WeBASE管理平台服务端口

web.port=5000

# 启用移动端管理平台 (0: disable, 1: enable)

web.h5.enable=1

# 节点管理子系统服务端口

mgr.port=5001

# 签名服务子系统端口

sign.port=5004

# WeBASE-Sign 对外提供服务的访问 IP 地址

# 部署在其它主机的节点前置,需要使用此 IP 访问 WeBASE-Sign 服务

# 不能是 127.0.0.1 或者 localhost

sign.ip=注意这里!!!

# 是否使用国密(0: standard, 1: guomi)

# 此配置决定可视化部署搭建国密或非国密的链

encrypt.type=0

Copy to clipboard

第一次部署安装的时候(python3 deploy.py installWeBASE)一般修改好上面就可以了

如果已经部署安装过了,当上面配置visual-deploy.properties 文件出现修改时,则还需要修改webase-node-mgr/conf/application.yml文件

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(54)

下方的username,password,这个跟上方那个是对应上的

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(55)

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(56)

完成配置文件修改后,则执行启动WeBASE(python3 deploy.py startWebASE):

备注:

部署脚本会拉取相关安装包进行部署,需保持网络畅通。

首次部署需要下载编译包和初始化数据库,重复部署时可以根据提示不重复操作

部署过程中出现报错时,可根据错误提示进行操作,或根据本文档中的常见问题进行排查

不建议使用sudo执行脚本,例如sudo python3 deploy.py installWeBASE(sudo会导致无法获取当前用户的环境变量如JAVA_HOME)

推荐使用Python 3.6及以上版本

# 部署安装并启动可视化部署的所有服务

python3 deploy.py installWeBASE

如果遇到docker必须使用sudo运行,报错Docker….Permission Denied,可以参考常见问题-创建docker用户组

部署完成后可以看到deploy has completed的日志:

$ python3 deploy.py installWeBASE

============================================================

              _    _     ______  ___  _____ _____

             | |  | |    | ___ \/ _ \/  ___|  ___|

             | |  | | ___| |_/ / /_\ \ `–.| |__ 

             | |/\| |/ _ | ___ |  _  |`–. |  __|

             \  /\  |  __| |_/ | | | /\__/ | |___

              \/  \/ \___\____/\_| |_\____/\____/ 

============================================================

==============      deploy has completed     ==============

============================================================

==============    webase-web version  v1.5.0        ========

==============    webase-node-mgr version  v1.5.0   ========

==============    webase-sign version  v1.5.0       ========

============================================================

服务部署后,就在浏览器可以访问127.0.0.1:5000

各服务进行启停操作,可以使用以下命令:

# 可视化部署

部署并启动可视化部署的所有服务  python3 deploy.py installWeBASE

停止可视化部署的所有服务  python3 deploy.py stopWeBASE

启动可视化部署的所有服务  python3 deploy.py startWeBASE

# 各子服务启停

启动WeBASE-Node-Manager: python3 deploy.py startManager

停止WeBASE-Node-Manager: python3 deploy.py stopManager

启动WeBASE-Web:          python3 deploy.py startWeb

停止WeBASE-Web:          python3 deploy.py stopWeb

启动WeBASE-Sign:        python3 deploy.py startSign

停止WeBASE-Sign:        python3 deploy.py stopSign

常见问题

  1. 端口占用
  2. jdk环境变量没有配好(启动webase-node-manager服务的时候start-filed)  

区块链部署笔记(Centos7)包含fisco bcos与webase!插图(57)

这种情况90%就是jdk环境变量没有配好——同时可以查看日志检查失败原因

配置jdk环境变量

ls -lrt /etc/alternatives/java

lrwxrwxrwx. 1 root root 71 4月   2 11:12 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/jre/bin/java

拷贝黄色部分,然后添加配置

vi /etc/profile

……….

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/jre

export CLASSPATH=.:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/jre/lib

export PATH=$PATH:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/jre/bin

更新配置

source /etc/profile

  1. 数据库访问不了(相对复杂一点)

本地的访问不了,就是用户名和密码错误

远程访问不了,查看远程用户的用户名和密码错误,防火墙,数据库远程ip等等

本站无任何商业行为
个人在线分享 » 区块链部署笔记(Centos7)包含fisco bcos与webase!
E-->