Ubuntu18.04搭建WeBASE管理平台

391 阅读8分钟

前言:由于学习需要,我得用上FISCO BCOS,然后我直接上官网找教程,单是搭建单群组FISCO BCOS联盟链,安装教程走的确很简单。但是我在部署区块链浏览器,或者WeBASE管理平台的时候,就屡屡踩坑,其实就是安装软件环境的问题。

补充一下:联盟链可以手动搭建,也可以直接搭建WeBASE平台,因为它配置文件也可以帮你自动创建的。不喜欢手动搭建的同学,可以直接看WeBASE的搭建。


1.搭建单群组的FISCO BCOS联盟链

用官方的教程来进行即可,但是有一点需要注意:在搭建好链的环境,检查日志输出之后,不要用教程的

sudo apt install -y default-jdk

来安装JAVA环境,这样等下安装WeBASE平台的时候,会报错,错误原因是java的环境没有配置好。

解决方法

先卸载用apt方式安装的JDK

sudo apt-get purge openjdk*

我们采用下载压缩包解压缩的方法,手动配置Java环境。

首先:先下载openjdk11:download.java.net/java/GA/jdk…

(之前我用了weget命令来下载,但是下载半天没反应,所以我还是直接浏览器下载,然后上传到服务器里面去)

第二步:上传到服务器,并进入到该目录上解压。

上传工具,我使用的是WINSCP,当然也有其他很多种方式

cd进入到上传目录,解压 openjdk

tar -xzvf openjdk-11.0.1_linux-x64_bin.tar.gz

移动到要安装的目录, 比如我在根目录下创建一个software文件夹

mv jdk-11.0.1/ /software/

lbGB0P.md.png

第三步:配置环境变量

这里用到的是官方的流程:

  • 进入根目录,修改/etc/profile
cd / && sudo vi /etc/profile
  • 在/etc/profile末尾添加以下信息

注意:这一步,如果大家的文件夹名字不同,要根据自己实际的名字填写JAVA_HOME

JAVA_HOME=/software/jdk-11.0.1
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH==.:$JAVA_HOME/lib
export JAVA_HOME CLASSPATH PATH
  • 重载/etc/profile
source /etc/profile

最后:查看版本

显示版本为11.0.1就成功了。

java -version

接下来配置控制台的步骤,就可以按照官方的流程走了:fisco-bcos-documentation.readthedocs.io/zh_CN/lates…

搭建好控制台之后,你也可以部署调用你的第一个合约,感受一下这里的HelloWorld~

2.搭建WeBASE平台所需环境

这个平台执行部署脚本需要4个环境,我们统一用Python3来部署。

环境 所用版本
Java OpenJDK11.0.1
Python Python3.4+
MySQL Mysql5.7
Pymysql 默认最新

1. Java环境的安装

参考上面的安装方式

2. Python环境的安装

先查看你的python版本,一般来说,都会有自带一个高于3.4的python的

python3 --version

如果没有Python3.4+环境的同学,可以参考:blog.csdn.net/weixin_4205…

3. MySQL的安装

我首先要吐槽一下,官方安装MySQL为啥不用docker呢?这个东西实在太香~啦~

安装流程参考(几乎照搬)的是:blog.csdn.net/qq_36963372…

首先,我们来安装Docker

1.准备工作

# 先卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc

# 更新软件包索引,嫌弃国外软件源慢的可以自行更换软件源
sudo apt-get update

# 安装依赖
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

# 添加Docker的官方GPG密钥
# 这一步需要ROOT权限,如果没添加进去的话,是下载不了的
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 验证安装:9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88通过搜索指纹的最后8个字符,验证您现在拥有带指纹的密钥。
sudo apt-key fingerprint 0EBFCD88
    
# 输出这个结果表示添加成功
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]
————————————————
版权声明:本文为CSDN博主「安心写bug」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36963372/article/details/88874927

2.开始安装

# 更新apt包索引
sudo apt-get update

# 安装最新版docker
sudo apt-get install docker-ce

接下来,我们来安装MySQL

  1. 查找Docker Hub上的mysql镜像
docker search mysql

上面这条命令我们可以看到有很多镜像,但是我们不用想,直接用MySQL5.7就完事了

  1. 选择安装版本
# 5.7是版本号
docker pull mysql:5.7
  1. 查看刚安装的MySQL
docker images | mysql

# 返回结果
REPOSITORY          TAG       IMAGE ID     CREATED           SIZE
mysql               5.7        ....     33 hours ago        ...MB

启动Docker中的MySQL

  1. 启动MySQL
# 要执行的命令,将Docker中的3306端口映射到宿主机的3306
docker run -p 3306:3306 --name mysql57 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
# 返回结果
0d9288bf06fba3d67d75c1a1f3c4ac74182c185e33c3c4a428401686ef5fb818

# 命令释义:
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
-v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。
-v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
  1. 查看启动
sudo docker ps -a
#返回结果
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
3cfc7a9e363a        mysql:5.7           "docker-entrypoint.s…"   18 hours ago        Up 18 hours         0.0.0.0:3306->3306/tcp, 33060/tcp   mysql57

连接MySQL

#先安装MySQL客户端
apt install mariadb-client-core-10.1 
#在Docker中安装的MySQL和宿主机是两个概念,需要走tcp连接。
#所以原来的socket连接的命令就会报错。 报错:mysql -u root -p 123456
mysql -h 127.0.0.1 -P 3306 -u root -p

或者,我们可以进入MySQL容器进行操作

#查看所有容器
sudo docker ps -a
#启动容器
docker start  [对应的containerID]
#进入容器bash
docker exec -it mysql bash
#输入root账号密码登录
mysql -uroot -p

创建数据库

这一步必须执行,后面部署脚本要用到这个数据库,在MySQL命令行中输入

create database webasenodemanager;
//退出
quit

4. PyMySQL的安装

sudo apt-get install -y python3-pip
sudo pip3 install PyMySQL

至此4个所需环境都已经搭建完毕了。


3.部署脚本,修改配置文件

获取部署安装包:

#回到用户目录
cd ~
#拉部署安装包
wget https://github.com/WeBankFinTech/WeBASELargeFiles/releases/download/v1.2.2/webase-deploy.zip

解压安装包:

unzip webase-deploy.zip

进入解压目录:

cd webase-deploy

修改配置文件:

① 修改配置文件(vi common.properties);

② mysql数据库我们需要改一下数据库账号密码,连接的ip设置为127.0.0.1

③ 一键部署支持使用已有链或者搭建新链。通过参数”if.exist.fisco”配置是否使用已有链,以下配置二选一即可:

一句话说明,如果进行了文章第一步链的搭建(按照官方文档),那就设为yes 没有就设置为no.

  • 当配置”yes”时,需配置已有链的路径
  • 当配置”no”时,需配置节点fisco版本和节点安装个数,搭建的新链默认两个群组

如果不使用一键部署搭建新链,可以参考FISCO BCOS官方文档搭建 FISCO BCOS部署流程

④ 服务端口不能小于1024。

#进入配置文件
vi common.properties
#进入insert模式 按a 或者 i
#esc退出插入,回到命令行,输入 :wq 保存退出

YES:有预先按官方文档链接搭建链的,按按照下面的内容配置:

要根据你自己实际使用的用户名修改

# 路径下要存在sdk目录,sdk里存放sdk证书(ca.crt、node.crt和node.key)
fisco.dir=/home/你的用户名/fisco/nodes/127.0.0.1
# 前置所连接节点的绝对路径
# 路径下要存在conf文件夹,conf里存放节点证书(ca.crt、node.crt和node.key)
node.path=/home/你的用户名/fisco/nodesnodes/127.0.0.1/node0

完整的common.properties文件内容:

# WeBASE版本(v1.1.0或以上版本)
webase.version=v1.2.2

# 节点管理子系统mysql数据库配置
mysql.ip=127.0.0.1
mysql.port=3306
mysql.user=dbUsername
mysql.password=dbPassword
mysql.database=webasenodemanager

# 节点前置子系统h2数据库名
front.h2.name=webasefront

# WeBASE管理平台服务端口
web.port=5000
# 节点管理子系统服务端口
mgr.port=5001
# 节点前置子系统端口
front.port=5002

# 节点监听Ip
node.listenIp=127.0.0.1
# 节点p2p端口
node.p2pPort=30300
# 节点链上链下端口
node.channelPort=20200
# 节点rpc端口
node.rpcPort=8545

# 是否使用国密(0: standard, 1: guomi)
encrypt.type=0

# 是否使用已有的链(yes/no)
if.exist.fisco=yes

# 使用已有链时需配置
# 已有链的路径,start_all.sh脚本所在路径
# 路径下要存在sdk目录,sdk里存放sdk证书(ca.crt、node.crt和node.key)
fisco.dir=/home/你的用户名/fisco/nodes/127.0.0.1
# 前置所连接节点的绝对路径
# 路径下要存在conf文件夹,conf里存放节点证书(ca.crt、node.crt和node.key)
node.path=/home/你的用户名/fisco/nodesnodes/127.0.0.1/node0

# 搭建新链时需配置
# FISCO-BCOS版本
fisco.version=2.1.0
# 搭建节点个数(默认两个)
node.counts=nodeCounts

**NO:**没有搭建链的,按照下面的内容配置:

完整的common.properties文件内容:

# WeBASE版本(v1.1.0或以上版本)
webase.version=v1.2.2

# 节点管理子系统mysql数据库配置
mysql.ip=127.0.0.1
mysql.port=3306
mysql.user=dbUsername
mysql.password=dbPassword
mysql.database=webasenodemanager

# 节点前置子系统h2数据库名
front.h2.name=webasefront

# WeBASE管理平台服务端口
web.port=5000
# 节点管理子系统服务端口
mgr.port=5001
# 节点前置子系统端口
front.port=5002

# 节点监听Ip
node.listenIp=127.0.0.1
# 节点p2p端口
node.p2pPort=30300
# 节点链上链下端口
node.channelPort=20200
# 节点rpc端口
node.rpcPort=8545

# 是否使用国密(0: standard, 1: guomi)
encrypt.type=0

# 是否使用已有的链(yes/no)
if.exist.fisco=yes

# 使用已有链时需配置,这部分的配置可以不用理了
# 已有链的路径,start_all.sh脚本所在路径
# 路径下要存在sdk目录,sdk里存放sdk证书(ca.crt、node.crt和node.key)
fisco.dir=/data/app/nodes/127.0.0.1
# 前置所连接节点的绝对路径
# 路径下要存在conf文件夹,conf里存放节点证书(ca.crt、node.crt和node.key)
node.path=/data/app/nodes/127.0.0.1/node0

# 搭建新链时需配置
# FISCO-BCOS版本
fisco.version=2.1.0
# 搭建节点个数(默认两个)
node.counts=2

部署所有服务

python3 deploy.py installAll

备注:

  • 部署脚本会拉取相关安装包进行部署,需保持网络畅通。
  • 首次部署需要下载编译包和初始化数据库,重复部署时可以根据提示不重复操作
  • 部署过程出现问题可以查看常见问题解答

至此,部署的工作就已经完全搞定了,下面放一些备用的命令行:

#停止所有服务:
python3 deploy.py stopAll

#服务部署后,如果需要单独启停,可以使用以下命令:
启动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-Front:        python3 deploy.py startFront
停止WeBASE-Front:        python3 deploy.py stopFront

访问 WeBASE管理平台 :

搭的这么辛苦,我们进去看看吧~

http://{deployIP}:{webPort}
示例:http://127.0.0.1:5000

备注:

  • 部署服务器IP和管理平台服务端口需对应修改,网络策略需开通
  • WeBASE管理平台使用说明请查看使用手册(获取WeBASE管理平台默认账号和密码,并初始化系统配置)

登录系统,重置密码:

管理平台默认用户为admin,默认密码为Abcd1234(第一次登陆成功后会要求重置密码,请按照密码标准设置一个更加安全的密码)。

再接下来的操作,比如添节点前置,大家就看官方的使用手册吧:webasedoc.readthedocs.io/zh_CN/lates…


完结撒花~

新年快乐,我在搭建完成使用了一段时间,发现会有一些问题。我用的是腾讯云,假如我有一天没有使用这个WeBASE平台,一些相关进程就会自动关闭。。比如说JAVA,通过java -version命令查看,java是否还运行,没运行的话,可以 用root角色,cd /&&source /etc/profile,重载java配置。重置完成之后再java -version查看情况。

另一个问题,得看看mysql是否在运行,docker ps命令查看全部运行容器,没有的话,就docker ps -a查看全部容器,找到mysql容器ID,使用docker start 容器ID,启动完成后,我们再docker ps查看全部运行容器。

倘若前面的两个都启动了之后,我们进入到webase-deploy这个目录,先执行python3 depoly.py stopAll命令,再执行python3 deploy.py startAll命令。主要是等到webase-node-manager与webase-front这两个服务启动,全部启动完成之后,我们就可以重新远程访问WeABSE平台了。。xxx.xxx.xxx.xxx:5000,跳到登录页面,要是能看到 验证码 出现,就说明,全部恢复了。注意:启动是需要花一定的时间的,要等一下,按照上面的步骤,要是没出现验证码的话,就等一下再刷新一下。

假如说,还遇到其他问题,大家可以去看各个服务的log,log里面都有挺详细的报错信息的