前言:由于学习需要,我得用上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:https://download.java.net/jav...
(之前我用了weget命令来下载,但是下载半天没反应,所以我还是直接浏览器下载,然后上传到服务器里面去)
第二步:上传到服务器,并进入到该目录上解压。
上传工具,我使用的是WINSCP,当然也有其他很多种方式
cd进入到上传目录,解压 openjdk
tar -xzvf openjdk-11.0.1_linux-x64_bin.tar.gz
移动到要安装的目录, 比如我在根目录下创建一个software文件夹
mv jdk-11.0.1/ /software/
第三步:配置环境变量
这里用到的是官方的流程:
- 进入根目录,修改/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
接下来配置控制台的步骤,就可以按照官方的流程走了:https://fisco-bcos-documentat...
搭建好控制台之后,你也可以部署调用你的第一个合约,感受一下这里的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+环境的同学,可以参考:https://blog.csdn.net/weixin_...
3. MySQL的安装
我首先要吐槽一下,官方安装MySQL为啥不用docker呢?这个东西实在太香~啦~
安装流程参考(几乎照搬)的是:https://blog.csdn.net/qq_3696...
首先,我们来安装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)
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
- 查找Docker Hub上的mysql镜像
docker search mysql
上面这条命令我们可以看到有很多镜像,但是我们不用想,直接用MySQL5.7就完事了
- 选择安装版本
# 5.7是版本号
docker pull mysql:5.7
- 查看刚安装的MySQL
docker images | mysql
# 返回结果
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 .... 33 hours ago ...MB
启动Docker中的MySQL
- 启动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 用户的密码。
- 查看启动
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(第一次登陆成功后会要求重置密码,请按照密码标准设置一个更加安全的密码)。
再接下来的操作,比如添节点前置,大家就看官方的使用手册吧:https://webasedoc.readthedocs...
完结撒花~
新年快乐,我在搭建完成使用了一段时间,发现会有一些问题。我用的是腾讯云,假如我有一天没有使用这个WeBASE平台,一些相关进程就会自动关闭。。比如说JAVA,通过java -version命令查看,java是否还运行,没运行的话,可以 用root角色,cd /&&source /etc/profile,重载java配置。重置完成之后再java -version查看情况。
永久加载配置文件,在etc/bash.bashrc 文件最后添加以下内容
export JAVA_HOME=/software/jdk-11.0.1
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH==.:$JAVA_HOME/lib
cd /&&source bash.bashrc
这样就永久配置java了。