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

基于FISCO-BCOS搭链脚本搭链

FISCO-BCOS 中文技术文档:

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

开发部署工具(build_chain.sh)

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

首先安装依赖

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

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

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

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

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

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

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

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

-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 群组一,群组二

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

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目录

cp nodes/127.0.0.1/sdk/* console/conf

cd console/conf/

cp config-example.toml config.toml

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

bash start.sh

console 常用命令

还有其他命令可查看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

下图即为启动成功

在浏览器访问http://ip地址:5002/WeBASE-Front

详细解释一下可能导致访问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

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

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

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

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

多群组部署

先停止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与节点进行通信。

节点证书node.crt包括节点证书和机构证书信息,节点与其他节点/SDK通信验证时会用自己的私钥node.key对消息进行签名,并发送自己的node.crt至对方进行验证

基于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)

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

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

安装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 = https://mirrors.ustc.edu.cn/mariadb/yum/10.2/centos7-amd64gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDBgpgcheck=1

更新yum源缓存数据

yum clean all

yum makecache all

安装MariDB 10.2

启停数据库

sudo systemctl start maridb.service

sudo systemctl stop maridb.service

设计开机启动

sudo systemctl enable mariadb.service

初始化数据库

授权访问和添加用户

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

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

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

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

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

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

  1. 直接安装Mysql 5.7版本

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

wget https://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

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

下载公钥

wget https://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

这样就是成功安装好了

获取临时密码

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;

修改为允许任何地址访问

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;

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

 

第一个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

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

安装python-3.6

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

验证安装是否成功

python3.6 --version

pip3 --version

部署PyMySQL

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

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

拉取部署脚本

获取脚本 

wget https://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

修改配置文件

一键部署修改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进行部署,启动部署后会首先检查你的每一项配置信息看是否正确,若不正确就会停下来,通过错误信息提示,问题排查完之后,再重新部署,最后出现下图这样的结果则为部署成功。

常见错误

  1. python命令错误

  1. 使用python3找不到pymysql

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

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

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

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

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

对各个服务的启停命令

# 一键部署
部署并启动所有服务        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

检查各子系统进程

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

检查进程端口

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

各子服务路径如下所示:

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

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

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

https://localhost:5000

默认账号admin

默认密码Abcd1234

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

安装docker

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

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

拉取 Docker 镜像

镜像版本:v2.8.0

提示:

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

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

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

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

从 CDN 拉取镜像压缩包

# 从 CDN 拉取镜像 tar 文件

# 非国密

wget https://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

安装Ansible

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

yum install epel-release -y

yum install ansible –y

检查 ansible --version

配置Ansible host_key_checking

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

vi /etc/ansible/ansible.cfg

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

···

host_key_checking = False

免密登录配置

检查 ~/.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 https://github.com/WeBankFinTech/WeBASELargeFiles/releases/download/v1.5.4/webase-deploy.zip

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

wget https://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文件

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

完成配置文件修改后,则执行启动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)  

这种情况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等等

  • 22
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值