基于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&&chmodu+xbuild_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-BCOSbinarypath>默认从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 群组一,群组二
启动脚本之后,就会生成节点目录,目录结构如下:
(1)cert文件夹下存放链的根证书和机构证书。
(2)以IP命名的文件夹下存储该服务器所有节点相关配置、fisco-bcos可执行程序、SDK所需的证书文件。
(3)每个IP文件夹下的node*文件夹下存储节点所需的配置文件。其中config.ini为节点的主配置,conf目录下存储证书文件和群组相关配置。配置文件详情,请参考这里。每个节点中还提供start.sh和stop.sh脚本,用于启动和停止节点。
(4)每个IP文件夹下(nodes/127.0.0.1( IP ))的提供start_all.sh和stop_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
下图即为启动成功
详细解释一下可能导致访问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-onode4
确认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
提示一下(不过训练中,按照操作即可):
- 例子中给出的数据库密码(123456)仅为样例,强烈建议设置成复杂密码
- 例子中root用户的远程授权设置会使数据库在所有网络上都可以访问,请按具体的网络拓扑和权限控制情况,设置网络和权限帐号
最后可以测试一下,-p后面是指定密码,-h指定ip ,-P指定端口
创建数据库webasenodemanager,是后面部署时,会用到,就是下面这个节点管理服务DB
- 直接安装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测试一下,若不能,可能是防火墙的问题
- 远程访问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防火墙(比赛时推荐),不然很可能访问不了,在控制面板设置即可,开放端口的话,需要配置一个入站规则;
- 比赛软件提供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即可,具体步骤可根据不同系统上网查询配置方式
拉取部署脚本
获取脚本
下载完后,会得到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进行部署,启动部署后会首先检查你的每一项配置信息看是否正确,若不正确就会停下来,通过错误信息提示,问题排查完之后,再重新部署,最后出现下图这样的结果则为部署成功。
常见错误
- python命令错误
- 使用python3找不到pymysql
部署某个组件失败,重新部署提示端口被占用问题
答:因为有个别组件是启动成功的,需要先执行“python3 deploy.py stopAll”将其停止
再执行“python3 depoly.py installAll”部署全部
- 管理平台启动时Nginx报错
- 部署数据库时访问错误,就是配置文件的用户名密码写错了
对各个服务的启停命令
*# **一键部署*
部署并启动所有服务 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管理平台
默认账号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 文件
非国密
从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
若网络问题导致长时间无法下载,可尝试以下命令
解压安装包:
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
常见问题
- 端口占用
- 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
- 数据库访问不了(相对复杂一点)
本地的访问不了,就是用户名和密码错误
远程访问不了,查看远程用户的用户名和密码错误,防火墙,数据库远程ip等等
版权归原作者 Lin Yunmu 所有, 如有侵权,请联系我们删除。