附录

    CentOS环境安装Java

    Ubuntu环境安装Java

    1. sudo apt install -y default-jdk
    2. # 查询Java版本
    3. java -version

    1.2. 数据库部署

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

    ① 安装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数据库,回车

    ② 授权访问和添加用户

    • 使用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 webasedata;

    1.3. Elasticsearch部署

    此处以Centos安装为例。详情请查看Elasticsearch官网

    ① 安装包下载

    下载elasticsearch和,注意版本要对应。

    1. # 上传elasticsearch安装包并解压
    2. tar -zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz /software/
    3. # 在elasticsearch的plugins目录创建子目录ik,并将ik分词插件上传解压到该目录
    4. mkdir /software/elasticsearch-7.8.0/plugins/ik
    5. # 进入目录
    6. cd /software/elasticsearch-7.8.0/plugins/ik
    7. unzip elasticsearch-analysis-ik-7.8.0.zip

    ② 启动

    在 ES 根目录下面,执行启动脚本文件:

    1. cd /software/elasticsearch-7.8.0
    2. bin/elasticsearch -d

    如果需要设置用户名密码访问,则进行以下操作:

    1. 在配置文件中开启x-pack验证, 修改config目录下面的elasticsearch.yml文件,在里面添加如下内容,并重启

      1. xpack.security.enabled: true
      2. xpack.license.self_generated.type: basic
      3. xpack.security.transport.ssl.enabled: true
    2. 设置用户名和密码,需要为4个用户分别设置密码(elastic,kibana,logstash_system,beats_system)

      1. bin/elasticsearch-setup-passwords interactive
    3. 如果需要修改密码,命令如下:

    ③ 验证

    打开浏览器,输入 http://localhost:9200/ 地址,然后可以得到下面的信息:

    1. {
    2. "name" : "node-1",
    3. "cluster_name" : "my-application",
    4. "cluster_uuid" : "K194HmUgRW2uwE9Zv0IDDQ",
    5. "version" : {
    6. "number" : "7.8.0",
    7. "build_flavor" : "default",
    8. "build_type" : "tar",
    9. "build_hash" : "757314695644ea9a1dc2fecd26d1a43856725e65",
    10. "build_date" : "2020-06-14T19:35:50.234439Z",
    11. "build_snapshot" : false,
    12. "lucene_version" : "8.5.1",
    13. "minimum_wire_compatibility_version" : "6.8.0",
    14. "minimum_index_compatibility_version" : "6.0.0-beta1"
    15. },
    16. "tagline" : "You Know, for Search"
    17. }

    ④ 停止

    查询进程并kill:

    1. ps -ef|grep elasticsearch
    2. kill -9 pid

    ① 安装包下载

    从下载对应版本的安装包,并解压到相应目录

    1. tar -zxvf zookeeper-XXX.tar.gz /software/

    ② 配置和启动

    ZooKeeper的安装包括单机模式安装,以及集群模式安装。具体步骤请参考官网说明:

    1.5 nginx部署

    ① 安装依赖

    在安装nginx前首先要确认系统中安装了gcc、pcre-devel、zlib-devel、openssl-devel。如果没有,请执行命令

    1. yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

    执行命令时注意权限问题,如遇到,请加上sudo

    ② 安装包下载

    nginx下载地址:https://nginx.org/download/(下载最新稳定版本即可),或者使用命令:

    1. wget http://nginx.org/download/nginx-1.9.9.tar.gz (版本号可换)

    将下载的包移动到/usr/local/下

    ③ 安装

    • 解压后进入目录
    1. tar -zxvf nginx-1.9.9.tar.gz
    • 配置
    1. ./configure --prefix=/usr/local/nginx
    • make
    1. make
    2. make install
    • 测试是否安装成功

    使用命令:

    1. /usr/local/nginx/sbin/nginx t

    正常情况的信息输出:

    1. nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    2. nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    • nginx几个常见命令
    1. /usr/local/nginx/sbin/nginx -s reload # 重新载入配置文件
    2. /usr/local/nginx/sbin/nginx -s reopen # 重启 Nginx
    3. /usr/local/nginx/sbin/nginx -s stop # 停止 Nginx
    4. ps -ef | grep nginx # 查看nginx进程

    2.1 脚本没权限

    • 执行shell脚本报错误”permission denied”或格式错误
    1. 赋权限:chmod + *.sh
    2. 转格式:dos2unix *.sh
    • 执行构建命令gradle build -x test抛出异常:
    1. A problem occurred evaluating root project 'WeBASE-Data-Collect'.
    2. Could not find method compileOnly() for arguments [[org.projectlombok:lombok:1.18.8]] on root project 'WeBASE-Data-Collect'.

    答:

    方法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. ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (110)
    1. GRANT ALL PRIVILEGES ON *.* TO 'TestUser'@'%' IDENTIFIED BY '此处为TestUser的密码’' WITH GRANT OPTION;
    • 数据存储时抛出异常:
    1. Error updating database. Cause: com.mysql.cj.jdbc.exceptions.PacketTooBigException: Packet for query is too large (1,048,871 > 1,048,576). You can change this value on the server by setting the 'max_allowed_packet' variable.

    答:插入数据量过大。MySQL根据配置文件会限制Server接受的数据包大小,有时候插入、更新或查询时数据包的大小,会受 max_allowed_packet 参数限制,导致操作失败。

    客户端执行命令查看大小:

    1. show VARIABLES like '%max_allowed_packet%';

    修改mysql的配置文件my.ini的配置,修改后重启mysql:

    1. max_allowed_packet=20M

    2.3 Elasticsearch问题

    • root账户启动失败
    1. org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root

    这个错误是因为使用了root账户启动Elasticsearch,换个非root账户启动就可以了。

    • 启动没权限
    1. -bash: bin/elasticsearch: Permission denied

    使用chmod命令给文件夹赋权限。

    • 虚拟内存太小
    1. max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

    这是因为设置的最大虚拟内存太小,elasticsearch需要较大内存,切换到root用户下,修改配置文件sysctl.conf

    1. vi /etc/sysctl.conf

    添加下面配置:

    1. vm.max_map_count=262144

    并执行命令:

    1. sysctl -p
    • 文件数太小
    1. max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

    这是用户最大可创建的文件数太小,只有4096,无法创建本地文件,需要增加到65536。切换到root用户,编辑limits.conf配置文件

    1. vi /etc/security/limits.conf

    添加如下两行,然后保存

    • 验证时报错

    确认是否设置了用户名密码,如果已设置,确认是否正确。

    3.2 WeBASE-Data-Fetcher

    参数默认值描述
    server.port5010当前服务端口
    server.servlet.context-path/WeBASE-Data-Fetcher当前服务访问目录
    mybatis.typeAliasesPackagecom.webank.webase.data.fetchermapper类扫描路径
    mybatis.mapperLocationsclasspath:mapper/.xmlmybatis的xml路径
    spring.datasource.driver-class-namecom.mysql.cj.jdbc.Drivermysql驱动
    spring.datasource.urljdbc:mysql://127.0.0.1:3306/webasedatamysql连接地址
    spring.datasource.usernamedefaultAccountmysql账号
    spring.datasource.passworddefaultPasswordmysql密码
    spring.elasticsearch.rest.uris127.0.0.1:9200elasticsearch服务的ip地址
    spring.elasticsearch.rest.usernameelasticAccountelasticsearch用户名,可以为空
    spring.elasticsearch.rest.passwordelasticPasswordelasticsearch密码,可以为空
    constant.ifEsEnablefalse是否使用elasticsearch
    constant.keywordAuditCron0 0 0/1 * ?关键字审计任务执行时间,默认每小时执行一次
    executor.corePoolSize50线程池大小
    executor.maxPoolSize100线程池最大线程数
    executor.queueSize50线程池队列大小
    executor.threadNamePrefixcustom-async-线程名前缀
    logging.configclasspath:log/log4j2.xml日志配置文件目录
    logging.levelcom.webank.webase.data.fetcher: info日志扫描目录和级别