一键部署会搭建:节点(FISCO-BCOS 2.0+)、管理平台(WeBASE-Web)、节点管理子系统(WeBASE-Node-Manager)、节点前置子系统(WeBASE-Front)、签名服务(WeBASE-Sign)。其中,节点的搭建是可选的,可以通过配置来选择使用已有链或者搭建新链。
平台要求
推荐使用CentOS 7.2+, Ubuntu 16.04及以上版本, 一键部署脚本将自动安装openssl, curl, wget, git, nginx, dos2unix
相关依赖项。
其余系统可能导致安装依赖失败,可自行安装openssl, curl, wget, git, nginx, dos2unix
依赖项后重试
我这里选择的环境是centos7,由于我这里是离线环境的,我需要先在能联网的虚拟机下载好依赖环境的安装包
在虚拟机下面命令下载相应的rpm包
yumdownloader openssl curl wget git nginx dos2unix
然后把对应的rpm包传到我们的离线服务器上面,并通过以下命令安装下载好的包
rpm -ivh *.rpm --force --nodeps
检查Java
检查mysql环境
mysql数据库我这里是通过docker-compose部署的
[root@tjylyyjgpt-ser3 mysql5.7]# ls data docker-compose.yml mysql.tar [root@tjylyyjgpt-ser3 mysql5.7]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.7 1e4405fe1ea9 4 years ago 437MB [root@tjylyyjgpt-ser3 mysql5.7]# cat docker-compose.yml version: '3.1' services: db: # 目前 latest 版本为 MySQL8.x image: mysql:5.7 restart: always container_name: mysql environment: MYSQL_ROOT_PASSWORD: 你的mysql密码 command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1 --sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION ports: - 3306:3306 volumes: - ./data:/var/lib/mysql [root@tjylyyjgpt-ser3 mysql5.7]# docker-compose ps Name Command State Ports ---------------------------------------------------------------------------------- mysql docker-entrypoint.sh --def ... Up 0.0.0.0:3306->3306/tcp, 33060/tcp
检查Python
使用Python3.6或以上版本:
先在虚拟机下载离线依赖环境包
yumdownloader install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel gcc libffi-devel
然后把离线包上传到我们的离线服务器并安装:
rpm -ivh *.rpm --force --nodeps
下载Python3需要的rpm包
yumdownloader python3-setuptools python3-libs python3 python3-pip
上传到服务器,然后安装
rpm -ivh *.rpm --force --nodeps
温馨提示,在离线环境下,特别不推荐通过源码编译的方式安装python3,虽然网上很多教程,但是编译时候会报各种环境问题的错误,解决起来非常麻烦。
PyMySQL部署(Python3.6+)
Python3.6及以上版本,需安装PyMySQL
依赖包
还是先通过虚拟机把相应的安装包下载过来
pip3 download -d /opt/PyMySQL PyMySQL
同样的方式把安装包传到服务器上,并安装
pip3 install PyMySQL-1.0.2-py3-none-any.whl
同时需要校验一下我们是否安装成功
检查服务器网络策略
网络策略检查:
- 开放WeBASE管理平台端口:检查webase-web管理平台页面的端口
webPort
(默认为5000)在服务器的网络安全组中是否设置为开放。如,云服务厂商如腾讯云,查看安全组设置,为webase-web开放5000端口。若端口未开放,将导致浏览器无法访问WeBASE服务页面 - 开放节点前置端口:如果希望通过浏览器直接访问webase-front节点前置的页面,则需要开放节点前置端口
frontPort
(默认5002);由于节点前置直连节点,不建议对公网开放节点前置端口,建议按需开放
可以看到我们的5000端口没有被占用
获取部署安装包
wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.5/webase-deploy.zip
解压
unzip webase-deploy.zip
修改配置
① mysql数据库需提前安装,已安装直接配置即可,
② 修改配置文件(vi common.properties
);
- 若使用可视化部署,则忽略下文,将修改
visual-deploy.properties
,并进行可视化部署依赖服务的一键安装,
③ 一键部署支持使用已有链或者搭建新链。通过参数”if.exist.fisco”配置是否使用已有链,以下配置二选一即可:
- 当配置”yes”时,需配置已有链的路径
fisco.dir
。路径下要存在sdk目录,sdk目录中包含ca.crt, sdk.crt, sdk.key及gm目录,gm目录中包含国密SSL所需证书,包含gmca.crt、gmsdk.crt、gmsdk.key、gmensdk.crt和gmensdk.key - 当配置”no”时,需配置节点fisco版本和节点安装个数,搭建的新链默认两个群组
注:使用国密版需要修改设置配置项encrypt.type=1
。前置SDK与节点默认使用非国密SSL,如果需要使用国密SSL,需要修改设置配置项encrypt.sslType=1
。
④ 服务端口不能小于1024
⑤ 部署时,修改 common.properties
配置文件
# WeBASE子系统的最新版本(v1.1.0或以上版本) webase.web.version=v1.5.5 webase.mgr.version=v1.5.5 webase.sign.version=v1.5.5 webase.front.version=v1.5.5 ##################################################################### ## 使用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数据库配置 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 # 节点前置子系统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.9.1 # 搭建节点个数(默认两个) node.counts=nodeCounts
这个是我的配置:
[common] # Webase Subsystem Version (v1.1.0 or above) webase.web.version=v1.5.5 webase.mgr.version=v1.5.5 webase.sign.version=v1.5.5 webase.front.version=v1.5.5 ##################################################################### # if use [installDockerAll] to install WeBASE by docker # if use [installAll] or [installWeBASE], ignore configuration here # 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=3306 # default user [root] docker.mysql.password=cetc@2024 ##################################################################### # Mysql database configuration of WeBASE-Node-Manager mysql.ip=172.16.119.58 mysql.port=3306 mysql.user=root mysql.password=cetc@2024 mysql.database=webasenodemanager # Mysql database configuration of WeBASE-Sign sign.mysql.ip=172.16.119.58 sign.mysql.port=3306 sign.mysql.user=root sign.mysql.password=cetc@2024 sign.mysql.database=webasesign # if docker mysql disabled[docker.mysql=0] above # H2 database name of WeBASE-Front (docker mode ignore this) front.h2.name=webasefront front.org=fisco # WeBASE-Web service port web.port=5000 # enable WeBASE-Web overview pages for mobile phone(docker mode not support h5 yet) # (0: disable, 1: enable) web.h5.enable=1 # WeBASE-Node-Manager service port mgr.port=5001 # WeBASE-Front service port front.port=5002 # WeBASE-Sign service port sign.port=5004 # Node listening IP node.listenIp=172.16.119.58 # Node p2p service port node.p2pPort=30300 # Node channel service port node.channelPort=20200 # Node rpc service port node.rpcPort=8545 # Encrypt type (0: standard, 1: guomi) encrypt.type=0 # ssl encrypt type (0: standard ssl, 1: guomi ssl) # only guomi type support guomi ssl encrypt.sslType=0 # Use existing chain or not (yes/no) if.exist.fisco=no ### if build new chain, [if.exist.fisco=no] # Configuration required when building a new chain # Fisco-bcos version fisco.version=2.9.1 # Number of building nodes (default value: 2) node.counts=nodeCounts ### if using exited chain, [if.exist.fisco=yes] # The path of the existing chain, the path of the start_all.sh script # Under the path, there should be a 'sdk' directory where the SDK certificates (ca.crt, sdk.crt, node.key and gm directory(gm ssl)) are stored fisco.dir=/data/app/nodes/127.0.0.1 # Node directory in [fisco.dir] for WeBASE-Front to connect # example: 'node.dir=node0' would auto change to '/data/app/nodes/127.0.0.1/node0' # Under the path, there is a conf directory where node certificates (ca.crt, node.crt and node.key) are stored node.dir=node0
部署
- 执行installAll命令,部署服务将自动部署FISCO BCOS节点,并部署 WeBASE 中间件服务,包括签名服务(sign)、节点前置(front)、节点管理服务(node-mgr)、节点管理前端(web)
备注:
- 部署脚本会拉取相关安装包进行部署,需保持网络畅通
- 首次部署需要下载编译包和初始化数据库,重复部署时可以根据提示不重复操作
- 部署过程中出现报错时,可根据错误提示进行操作,或根据本文档中的常见问题进行排查
- 不要用sudo执行脚本,例如
sudo python3 deploy.py installAll
(sudo会导致无法获取当前用户的环境变量如JAVA_HOME)
# 部署并启动所有服务 python3 deploy.py installAll
部署完成后可以看到deploy has completed
的日志:
$ python3 deploy.py installAll ... ============================================================ _ _ ______ ___ _____ _____ | | | | | ___ \/ _ \/ ___| ___| | | | | ___| |_/ / /_\ \ `--.| |__ | |/\| |/ _ | ___ | _ |`--. | __| \ /\ | __| |_/ | | | /\__/ | |___ \/ \/ \___\____/\_| |_\____/\____/ ... ... ============================================================ ============== deploy has completed ============== ============================================================ ============== webase-web version v1.5.5 ======== ============== webase-node-mgr version v1.5.5 ======== ============== webase-sign version v1.5.3 ======== ============== webase-front version v1.5.5 ======== ============================================================
服务部署后,需要对各服务进行启停操作,可以使用以下命令:
# 一键部署 部署并启动所有服务 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
访问
WeBASE管理平台:
- 一键部署完成后,打开浏览器(Chrome Safari或Firefox)访问
http://{deployIP}:{webPort} 示例:http://localhost:5000
备注:
- 部署服务器IP和管理平台服务端口需对应修改,网络策略需开通
- 使用云服务厂商的服务器时,需要开通网络安全组的对应端口。如开放webase使用的5000端口
- WeBASE管理平台使用说明请查看使用手册(获取WeBASE管理平台默认账号和密码,并初始化系统配置)
- 默认账号为
admin
,默认密码为Abcd1234
。首次登陆要求重置密码 - 添加节点前置WeBASE-Front到WeBASE管理平台;一键部署时,节点前置与节点管理服务默认是同机部署,添加前置则填写IP为
127.0.0.1
,默认端口为5002
。参考上文中common.properties
的配置项front.port={frontPort}
- 默认账号为
- 检查节点前置是否启动,可以通过访问
http://{frontIp}:{frontPort}/WeBASE-Front
(默认端口5002);访问前,确保服务端已对本地机器开放端口,如开放front的5002端口。(不建议节点前置的端口对公网开放访问权限,应对部分机器IP按需开放)
标签:deploy,部署,WeBase,mysql,docker,节点,python3,WeBASE From: https://www.cnblogs.com/braveym/p/17974554