专栏名称: 厦门哈希科技
哈希科技创立于2017年5月,是专业的区块链技术服务商,专注于区块链技术的研发,基于区块链底层技术,提供智能合约定制开发服务,并可实现对应区块链应用的落地。
目录
相关文章推荐
南方人物周刊  ·  网络诈骗的全球泛滥 | 刊中人 ·  昨天  
51好读  ›  专栏  ›  厦门哈希科技

哈希科技区块链系列教程(第九篇)

厦门哈希科技  · 公众号  ·  · 2019-07-30 10:10

正文

区块链系列教程(9)

webase 分布式中间件平台快速部署

哈希科技作为一家区块链技术服务商,有责任也有义务为推广区块链贡献一份力量。计划连续推出区块链教程,欢迎大家交流。

哈希科技拥有全面的区块链能力,支持Hyperledger Fabric、Ethereum、FISCO BCOS及腾讯Trust SQL等主流框架。

FISCO BCOS是微众银行、腾讯等联合推出的,安全可控、适用于金融行业且开源的区块链底层平台。哈希科技与微众区块链团队进行过深度对接合作,也得到了微众团队童鞋们的鼎力支持和帮助,在此一并感谢!

本教程作者为哈希科技CTO林滨,这是一位才华在线颜值担当的90后有为青年,推荐大家关注。

本篇博客是在和FISCO BCOS团队、微众银行WeBASE团队联调了一个下午,最终把许多坑填上,完成WeBASE的搭建后完成的!感谢小伙伴们的找错纠错,感谢!

参考资料:https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE/install.html#id8

前提

快速部署webase 版本,目前支持标准版,国密版本不支持。

一、安装各个环境

Java jdk1.8

MySQL MySQL-5.6

Python 2.7

MySQL-python 1.2.5

确认环境

java 查询版本:java -version

MySQL:mysql -v

python :python2 --version

mysql 操作

1、修改root 密码

sudo passwd

输入两次新密码

2、用root 登录

su root

输入root的密码

3、重启mysql

sudo service mysql restart

要在root 用户下操作

授权访问和添加用户

使用root用户登录,密码为初始化设置的密码

mysql -uroot -p -h localhost -P 3306

授权root用户远程访问

mysql > GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;mysql > flush PRIVILEGES;

备注:由于root 不适合对外,建议使用test用户。

创建test用户并授权本地访问

mysql > GRANT ALL PRIVILEGES ON *.* TO 'test'@localhost IDENTIFIED BY '123456' WITH GRANT OPTION;mysql > flush PRIVILEGES;

测试连接和创建数据库

登录数据库

mysql -utest -p123456 -h localhost -P 3306

创建数据库

mysql > create database db_mgr;

二、正式操作

1、拉取部署脚本

获取部署安装包:

wget https://github.com/WeBankFinTech/WeBASELargeFiles/releases/download/V1.0.1/webase-deploy.zip

2、解压安装包:

unzip webase-deploy.zip

3、进入目录:

cd webase-deploy

找不到MySQLdb

Traceback (most recent call last):...ImportError: No module named MySQLdb

解法

sudo apt-get install -y python-pipsudo pip install MySQL-python

遇到问题,试试:解决 Command "python setup.py egg_info" failed with error code 1 问题

在执行 pip install -r requirements.txt 时遇到错误:

Command "python setup.py egg_info" failed with error code 1

解决方法是更新 setuptools 和 pip:

pip install --upgrade setuptoolspython -m pip install --upgrade pip

针对该问题:提的github pr https://github.com/WeBankFinTech/WeBASE/pull/26

4、安装oracle sdk

opensdk 和oracle sdk差别(做一些了解)

https://blog.csdn.net/weilin705/article/details/88950522

下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

(1)下载 8.212 版本
sudo tar -zxvf jdk-8u212-linux-x64.tar.gz
(2)解压目录下
tar -zxvf jdk-8u211-linux-x64.tar.gz




    
(3)配置sudo vi /etc/profile
JAVA_HOME=/home/ubuntu/software/jdk1.8.0_212PATH=$PATH:$JAVA_HOME/binCLASSPATH==.:$JAVA_HOME/libexport JAVA_HOME CLASSPATH PATH

在本步骤操作,修改完成,查看java -version 依然是opensdk 版本

这是不对的,需要去修改。

(4)命令whereis java、which java,确认java 位置
ubuntu@VM-16-14-ubuntu:~$ which java/usr/bin/java
(5)把 /usr/bin/java 下面java 移走(因为这个java 会干扰我们正常的java配置)
mv /usr/bin/java /home/ubuntu/software
(6)重新载入配置
source /etc/profile
(7)查看java 版本
root@VM-16-14-ubuntu:/usr/bin# java -versionjava version "1.8.0_212"Java(TM) SE Runtime Environment (build 1.8.0_212-b10)Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)

5、修改配置,运行

修改 common.properties

[common]
# 下载链接,默认不修改web.package.url=https://www.fisco.com.cn/cdn/WeBASE/release/download/V1.0.1/webase-web.zipmgr.package.url=https://www.fisco.com.cn/cdn/WeBASE/release/download/V1.0.1/webase-node-mgr.zipfront.package.url=https://www.fisco.com.cn/cdn/WeBASE/release/download/V1.0.1/webase-front.zip
# 数据库配置mysql.ip=localhost//本地mysql 地址mysql.port=3306mysql.user=rootmysql.password=123qwemysql.database=db_mgr
# 各个服务的端口web.port=8096//改为不会冲突的mgr.port=8081front.port=8082
# 节点端口配置node.p2pPort=30300node.channelPort=20200node.rpcPort=8545
# 是否使用已有的链if.exist.fisco=yes
# 使用已有链时需配置(已有链的路径,start_all.sh脚本所在路径)fisco.dir=/home/ubuntu/generator/nodeA/
# 搭建新链时需配置fisco.version=2.0.0node.counts=4

备注:8080 端口nginx 占用,所以端口也要改一下,改为8096 只要不冲突就好了

保存,并重新启动部署

python deploy.py installAll

6、目前支持127.0.0.1 等内网一键部署,不支持外网

需要将/generator/nodeA 中config.ini 节点配置修改

把rpc的listen_ip改成127.0.0.1重启一下,只改一个节点

7、生成sdk 目录到指定目录

由于webase 部署需要用到sdk 证书等,所以必须在这里生成。

执行如下命令

./generator --generate_sdk_certificate ./nodeA ./dir_agency_ca/agencyA/
./generator --generate_sdk_certificate ./nodeB ./dir_agency_ca/agencyB/

8、重启节点,并且重新部署服务

bash ./nodeA/stop_all.sh

进入webase-deploy目录,重新启动服务

python deploy.py installAll

备注:如果此时有些端口占用问题出现,使用如下命令去查找,并将其kill

sudo lsof -i:[port]
sudo kill [PID]

9、成功部署搭建

简单查看一下目录结构

log是一键安装的日志,webase-*是webase的三个组件

(1)登录账号密码 http://148.70.170.96:8096/#/login

写入官方的默认账号和密码

admin/Abcd1234

参考资料:https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Console-Suit/index.html#id5

一开始发现 数据库异常,原来是mysql root 权限问题,

进入目录::/home/ubuntu/webase-deploy/webase-node-mgr/conf

vim application.yml

将对应的mysql 的用户 改为test的

(2)配置端口,发现端口无法连接

这个时候配置发现无法连接。

问题定位: 1、证书验证不通过

2、ssl 和节点的连接失败

将链的控制台 证书等copy 给对应目录下

修改 application.yml文件的配置

spring:  datasource:    url: jdbc:h2:file:~/.h2/front_db;DB_CLOSE_ON_EXIT=FALSE    databaseName: db    driverClassName: org.h2.Driver    serverName:    username:    password:  jpa:    database-platform: org.hibernate.dialect.H2Dialect    database: H2    openInView: false    show_sql: false    generate-ddl: true    hibernate:      ddl-auto: update      naming-strategy: org.hibernate.cfg.EJB3NamingStrategy      session:        events:          log: false    properties:      hibernate.cache.use_query_cache: false      hibernate.generate_statistics: false  h2:    console:      enabled: true






请到「今天看啥」查看全文