本篇博客是在和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 

授权root用户远程访问

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

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

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

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

测试连接和创建数据库
登录数据库

mysql -utest -p123456 -h localhost -P 

创建数据库

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-pip
sudo 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 setuptools
python -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..0_212
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH==.:$JAVA_HOME/lib
export JAVA_HOME CLASSPATH PATH

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

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

(4)命令whereis java、which java,确认java 位置

ubuntu@VM---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---ubuntu:/usr/bin# java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) -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.zip
mgr.package.url=https://www.fisco.com.cn/cdn/WeBASE/release/download/V1.0.1/webase-node-mgr.zip
front.package.url=https://www.fisco.com.cn/cdn/WeBASE/release/download/V1.0.1/webase-front.zip # 数据库配置
mysql.ip=localhost//本地mysql 地址
mysql.port=
mysql.user=root
mysql.password=123qwe
mysql.database=db_mgr # 各个服务的端口
web.port=8096//改为不会冲突的
mgr.port=
front.port= # 节点端口配置
node.p2pPort=
node.channelPort=
node.rpcPort= # 是否使用已有的链
if.exist.fisco=yes # 使用已有链时需配置(已有链的路径,start_all.sh脚本所在路径)
fisco.dir=/home/ubuntu/generator/nodeA/ # 搭建新链时需配置
fisco.version=2.0.
node.counts=

备注: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
path: /console
settings:
web-allow-others: false
trace: true server:
port:
context-path: /WeBASE-Front sdk:
orgName: orgTest
corePoolSize:
maxPoolSize:
queueCapacity:
timeout:
keepAlive:
ip: 127.0.0.1//这里的ip 要和nodeA对应节点的rpc 监听ip 一样
channelPort: logging:
config: classpath:log4j2.xml constant:
keyServer: 127.0.0.1:
transMaxWait:
monitorDisk: /home/ubuntu/generator/nodeA/
aesKey: EfdsW23D23d3df43

配置成功,登录,修改密码

控制台展示

节点管理

节点监控

至此,完成部署。

附录

辅助操作权限等,可以使用的命令

权限修改

常用方法如下:

sudo chmod 600 ××× (只有所有者有读和写的权限)
sudo chmod 644 ××× (所有者有读和写的权限,组用户只有读的权限)
sudo chmod 700 ××× (只有所有者有读和写以及执行的权限)
sudo chmod 666 ××× (每个人都有读和写的权限)
sudo chmod 777 ××× (每个人都有读和写以及执行的权限)

设置ubuntu 账户拥有当前文件夹变更拥有者
sudo chown -R ubuntu:users ./

读后感觉不错,有收获可以微信请作者喝杯咖啡,读后有疑问请加微信,拉群研讨,注明来意

第九章 webase 分布式中间件平台快速部署的更多相关文章

  1. <自动化测试方案_9>第九章、持续集成平台搭建

    第九章.持续集成平台搭建 (一)什么是持续集成 参考文章地址:https://blog.csdn.net/qq_32261399/article/details/76651376 敏捷软件开发(英语: ...

  2. 开源分布式中间件 DBLE 快速入门指南

    GitHub:https://github.com/actiontech/dble 官方中文文档:https://actiontech.github.io/dble-docs-cn/ 一.环境准备 D ...

  3. 分布式文件系统ceph快速部署

    架构图 配置ceph-deploy节点 管理节点配置ceph yum源 vim /etc/yum.repos.d/ceph.repo [ceph-noarch] name=Ceph noarch pa ...

  4. Java 分布式任务调度平台:PowerJob 快速开始+配置详解

    本文适合有 Java 基础知识的人群 作者:HelloGitHub-Salieri 引言 HelloGitHub 推出的<讲解开源项目>系列. 项目地址: https://github.c ...

  5. AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(二):配置WinClient分布式运行环境

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  6. XXL-JOB分布式任务调度平台安装与部署

    配XXL-JOB分布式任务调度平台安装与部署

  7. Gradle 1.12 翻译——第九章 Groovy快速入门

    由于时间关系,没办法同时做笔记和翻译,关于Gradle的用户指南,本博客不再做相关笔记,而只对未翻译章节进行翻译并在此发表. 有关其他已翻译的章节请关注Github上的项目:https://githu ...

  8. 快速部署 Spring PetClinic 到函数计算平台

    简介 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算准 ...

  9. 分布式任务调度平台XXL-JOB快速搭建教程

    1. XXL-JOB简介 XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用.它的有两个核心模块,一个模块叫做 ...

随机推荐

  1. Expression Blend学习二UI布局

    什么是布局? · Panels控件(其实就是容器控件) · 对内部的子控件提供了自动布局功能 · 可以在容器控件内继续添加容器控件(一个复杂的界面往往是多种容器控件嵌套而组成的) · 一些界面器控件也 ...

  2. SQLServer 以备份初始化订阅

    原文:SQLServer 以备份初始化订阅 在创建事务复制时,如果发布数据库很大,使用快照初始化时,将等待很久,如果出现问题可能又得重新初始化.使用备份初始化会省很多时间,但是数据库在创建发布订阅期间 ...

  3. 零元学Expression Blend 4 - Chapter 33 简单轻松的学会如何使用Visual States(下)

    原文:零元学Expression Blend 4 - Chapter 33 简单轻松的学会如何使用Visual States(下) 上篇提到了Visual State Manager中文翻译为视觉状态 ...

  4. C++ 标准库概览(一分钟就看完了)

    C++ 标准库以若干头文件的方式提供. 下面简单介绍一个各头文件的内容. 第一部分 容器 Containers <array> C++11 新增.提供了容器类模板 std::array,固 ...

  5. uwp开发————换背景图片

    原文:uwp开发----换背景图片 用后台代码来实现对容器背景的切换,用本地图片作为背景. 把需要的图片素材放到Assets文件夹下 前台xaml代码如下: <Grid x:Name=" ...

  6. Delphi 7.0常用函数速查手册(磁盘文件类)

    在Delphi 7.0中,已为我们定义好了非常多的函数,大致分类有6种:数据类型转换函数.字符串.数组操作函数.文件.磁盘操作函数.内存.指针操作函数.数学运算函数.日期函数. 在Delphi中调用函 ...

  7. 基于Delphi实现客户端服务端通信Demo

    在开始之前我们需要了解下这个Demo功能是啥 我们可以看到这是两个小project,左边的project有服务端和客户端1,右边的project只有一个客户端2 效果就是当两个客户端各自分别输入正确的 ...

  8. 在.NET Core 3.0中的WPF中使用IOC图文教程

    我们都知道.NET Core 3.0已经发布了第六个预览版,我们也知道.NET Core 3.0现在已经支持创建WPF项目了,刚好今天在写一个代码生成器的客户端的时候用到了WPF,所以就把WPF创建以 ...

  9. sqlserver 表值函数与标量值函数

    除了在我们常用的程序开发中要用到函数外,在sql语句中也常用到函数,不论哪种,思想都没有变,都是为了封装,可复用. 创建的方法和整体结构都大体相同,都少不了函数名,函数的形参,返回值等这些. 一.表值 ...

  10. JSON对象和JavaScript对象直接量的区别--不同之处

    JSON对象和JS对象直接量 在工作当中,我们总是可以听到人说将数据转换为JSON对象,或者说把JSON对象转换为字符串之类的话,下面是关于JSON的具体说明. JSON对象并不是JavaScript ...