附录

1. 安装示例

1.1 Java部署

CentOS环境安装Java

注意:CentOS下OpenJDK无法正常工作,需要安装OracleJDK下载链接

  1. # 创建新的文件夹,安装Java 8或以上的版本,将下载的jdk放在software目录
  2. # 从Oracle官网(https://www.oracle.com/technetwork/java/javase/downloads/index.html)选择Java 8或以上的版本下载,例如下载jdk-8u201-linux-x64.tar.gz
  3. $ mkdir /software
  4. # 解压jdk
  5. $ tar -zxvf jdk-8u201-linux-x64.tar.gz
  6. # 配置Java环境,编辑/etc/profile文件
  7. $ vim /etc/profile
  8. # 打开以后将下面三句输入到文件里面并保存退出
  9. export JAVA_HOME=/software/jdk-8u201 #这是一个文件目录,非文件
  10. export PATH=$JAVA_HOME/bin:$PATH
  11. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  12. # 生效profile
  13. $ source /etc/profile
  14. # 查询Java版本,出现的版本是自己下载的版本,则安装成功。
  15. java -version

Ubuntu环境安装Java

  1. # 安装默认Java版本(Java 8或以上)
  2. sudo apt install -y default-jdk
  3. # 查询Java版本
  4. java -version

1.2 Gradle部署

此处给出简单步骤,供快速查阅。更详细的步骤,请参考官网

(1)从官网下载对应版本的Gradle安装包,并解压到相应目录

  1. mkdir /software/
  2. unzip -d /software/ gradleXXX.zip

(2)配置环境变量

  1. export GRADLE_HOME=/software/gradle-4.9
  2. export PATH=$GRADLE_HOME/bin:$PATH

(3)查看版本

  1. gradle -version

1.3 数据库部署

此处以Centos安装MariaDB为例。MariaDB数据库是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。MariaDB完全兼容 MySQL,包括API和命令行。其他安装方式请参考MySQL官网

① 安装MariaDB

  • 安装命令
  1. sudo yum install -y mariadb*
  • 启停
  1. 启动:sudo systemctl start mariadb.service
  2. 停止:sudo systemctl stop mariadb.service
  • 设置开机启动
  1. sudo systemctl enable mariadb.service
  • 初始化
  1. 执行以下命令:
  2. sudo mysql_secure_installation
  3. 以下根据提示输入:
  4. Enter current password for root (enter for none):<–初次运行直接回车
  5. Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
  6. New password: <– 设置root用户的密码
  7. Re-enter new password: <– 再输入一次你设置的密码
  8. Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车
  9. Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车
  10. Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车
  11. Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车

② 授权访问和添加用户

  • 使用root用户登录,密码为初始化设置的密码
  1. mysql -uroot -p -h localhost -P 3306
  • 授权root用户远程访问
  1. mysql > GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
  2. mysql > flush PRIVILEGES;
  • 创建test用户并授权本地访问
  1. mysql > GRANT ALL PRIVILEGES ON *.* TO 'test'@localhost IDENTIFIED BY '123456' WITH GRANT OPTION;
  2. mysql > flush PRIVILEGES;

安全温馨提示:

  • 例子中给出的数据库密码(123456)仅为样例,强烈建议设置成复杂密码
  • 例子中root用户的远程授权设置会使数据库在所有网络上都可以访问,请按具体的网络拓扑和权限控制情况,设置网络和权限帐号

③ 测试连接和创建数据库

  • 登录数据库
  1. mysql -utest -p123456 -h localhost -P 3306
  • 创建数据库
  1. mysql > create database webasechainmanager;

2. 常见问题

2.1 脚本没权限

  • 执行shell脚本报错误”permission denied”或格式错误
  1. 赋权限:chmod + *.sh
  2. 转格式:dos2unix *.sh

2.2 构建失败

  • 执行构建命令gradle build -x test抛出异常:
  1. A problem occurred evaluating root project 'WeBASE-Stat'.
  2. Could not find method compileOnly() for arguments [[org.projectlombok:lombok:1.18.2]] on root project 'WeBASE-Stat'.

答:

方法1、已安装的Gradle版本过低,升级Gradle版本到4.10以上即可 方法2、直接使用命令:./gradlew build -x test

2.3 数据库问题

  • 服务访问数据库抛出异常:
  1. The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

答:检查数据库的网络策略是否开通

  1. 下面以centos7为例:
  2. 查看防火墙是否开放3306端口: firewall-cmd --query-port=3306/tcp
  3. 防火墙永久开放3306端口:firewall-cmd --zone=public --add-port=3306/tcp --permanent
  4. 重新启动防火墙:firewall-cmd --reload
  • 执行数据库初始化脚本抛出异常:
  1. ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (110)

答:MySQL没有开通该帐号的远程访问权限,登录MySQL,执行如下命令,其中TestUser改为你的帐号

  1. GRANT ALL PRIVILEGES ON *.* TO 'TestUser'@'%' IDENTIFIED BY '此处为TestUser的密码’' WITH GRANT OPTION;

3. application.yml配置项说明

参数默认值描述
server.port5008当前服务端口
server.servlet.context-path/WeBASE-Stat当前服务访问目录
mybatis.typeAliasesPackagecom.webank.webase.statmapper类扫描路径
mybatis.mapperLocationsclasspath:mapper/*.xmlmybatis的xml路径
spring.datasource.driver-class-namecom.mysql.cj.jdbc.Drivermysql驱动
spring.datasource.urljdbc:mysql://127.0.0.1:3306/webasestatmysql连接地址
spring.datasource.usernamedefaultAccountmysql账号
spring.datasource.passworddefaultPasswordmysql密码
logging.configclasspath:log/log4j2.xml日志配置文件目录
logging.levelcom.webank.webase.stat: info日志扫描目录和级别
constant.pageSize100每次拉取条数
constant.updateFrontInfoInterval600000更新前置信息时间间隔(毫秒)
constant.resetGroupListInterval60000刷新群组信息时间间隔(毫秒)
constant.pullGroupBasicDataInterval60000拉取群组基本信息时间间隔(毫秒)
constant.pullNetWorkDataInterval5000拉取网络流量数据时间间隔(毫秒)
constant.pullGasDataInterval5000拉取gas数据时间间隔(毫秒)
constant.pullNodeMonitorInterval5000拉取节点监控数据时间间隔(毫秒)
constant.pullServerPerformanceInterval5000拉取服务器性能信息时间间隔(毫秒)
constant.httpTimeOut10000http请求超时时间(毫秒)
executor.corePoolSize50线程池大小
executor.maxPoolSize100线程池最大线程数
executor.queueSize50线程池队列大小
executor.threadNamePrefix“stat-async-“线程名前缀