FineReport报表是一个纯国产的BI工具,以表格、图表的形式来动态展示数据,通过报表进行数据分析,进而用于辅助经营管理决策。

FineReport 是一款用于报表制作,分析和展示的工具,用户通过使用 FineReport 可以轻松的构建出灵活的数据分析和报表系统,大大缩短项目周期,减少实施成本,最终解决企业信息孤岛的问题,使数据真正产生其应用价值。

1. FineReport简介

1.1. 官网和文档

FineReport官网:https://www.finereport.com/

FineReport文档:https://help.fanruan.com/finereport/

1.2. 功能概述
  • FineReport拥有多种报表模式,可适用于不同场景,满足不同需求;
  • 数据查询和过滤;
  • 数据填报
  • 可视化图表
  • 报表管理平台
  • 部署继承
  • 拓展开发
1.3. 使用场景
  • 简化数据可视化的BI报表开发,解放后端java接口开发人员
  • 数据填报,同样解放后端与数据库的数据交换
  • 可视化图表,将excel高手才能做出的报表在FineReport中完成
  • 数据可视化大屏开发,完全替换掉前后端,将中心更多放在数据开发上
  • 可集群化部署,实现报表工具的高可用

2. 安装部署

FineReport已经整合了Tomvat和jdk在安装包中,无需配置环境,直接在服务器解压部署即可

2.1. 环境准备
# FineReport要求服务器内核X86或者ARM版
uname -r
# 查看系统位数
getconf LONG_BIT
# 查看系统版本
cat /etc/redhat-release
2.2. 进入官网下载对应内核的FineReport安装包

访问:https://www.finereport.com/product/download

在这里插入图片描述

2.3. 上传到服务器并解压
# 上传到指定目录,如:/opt/software/tomcat-linux.tar.gz
# 解压
tar -zxvf tomcat-linux.tar.gz -C /opt/
# 修改一下名字
mv tomcat-linux finereport
# 直接启动即可
sh /opt/finereport/bin/startup.sh
# 查看日志
tailf -1000 /opt/finereport/logs/catalina.out
2.4. 页面访问

默认的访问地址是:http://IP:端口号/工程名/decision

  • 端口:默认8080
  • 工程名:默认webroot
2.5. 设置外接数据库

finereport可选不使用外接数据库,但推荐使用外接数据库,这样管理和迁移更方便

1)第一次创建管理员用户后选择外接数据库

2)管理系统–>系统管理–>常规–>外接数据库配置

3)进入外接数据库配置后,正常填写即可

至此单机版finereport安装完成

3. 集群部署

单个工程已不能满足用户需求,用户需要较高的并发支撑性能。

单机不可用时,系统停止将会造成业务中断、数据/模板丢失等问题,用户需要确保系统 7*24h 稳定运行

3.1. Redis(单机版)

Redis作为状态服务器,Redis 在 Web 集群中用来做状态服务器,主要用于存储缓存登录、模板锁、 SessionID、WebSocket 等,发挥并对所有的访问和操作进行验证的作用

1)安装gcc编辑器

yum -y install gcc gcc-c++ 查看是否安装完成:gcc -v

2)添加Python3(Linux7默认是python2.7)环境

# 下载安装包
wget http://cdn.npm.taobao.org/dist/python/3.6.5/Python-3.6.5.tgz
# 安装以下依赖包
yum install -y zlib*
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel  
# 进入Python安装目录
cd /opt/Python-3.6.5/
# 指定安装目录
./configure --prefix=/usr/local/python3 --with-ssl
# 编译
make
# 编译安装
make install

# 建议软链接(linux7版本的服务器,根据需求建软链接,linux8默认python3.6.5)
ln -s /usr/local/python3/bin/python3 /usr/bin/python3 
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

2)下载并上传服务器Redis

Redis下载地址:Index of /releases/ (redis.io),这里选择:redis-7.0.4.tar.gz

解压:tar -zxvf redis-7.0.4.tar.gz -C /usr/redis/

3)安装Redis

# 进入Redis安装目录
cd /usr/redis/redis-7.0.4/
# 编译
make
# 编译测试
make test
# 编译安装
make install
# 进入src目录
cd /usr/redis/redis-7.0.4/src
# 检查安装结果
redis-server -v
# 如果编译失败且报mkreleasehdr这个文件权限不足
cd /usr/redis/redis-7.0.4/src #进入安装目录
ll|grep mkreleasehdr #查看文件信息
chmod 755 /usr/redis/redis-7.0.4/src/mkreleasehdr.sh

4)修改配置

vi /usr/redis/redis-7.0.4/redis.conf

修改内容如下:

bind 127.0.0.1 ---> # bind 127.0.0.1
protected-mode yes ---> protected-mode no
daemonize no ---> daemonize yes # 默认以后台程序方式运行,不需要加&强制后台运行了
port 6379 ---> port 7379  # 将端口改为 7379
pidfile /var/run/redis_6379.pid ---> pidfile /var/run/redis_7379.pid  # 将端口改为 7379
# requirepass foobared ---> requirepass XXXXXX  # XXXXXX为密码可任意替换
maxmemory 4294967296  # 配置内存为 4G 单位是 byte,也可以配置成其他大小,推荐大小为4G(需添加内容)
maxmemory-policy allkeys-lru # 过期策略,LRU 近期最少使用算法(需添加内容)

5)启动和停止redis

# 启动redis
cd /usr/redis/redis-7.0.4/src/
./redis-server /usr/redis/redis-7.0.4/redis.conf
# 进入redis
redis-cli -p 7379 -a XXXXXX
# 停止redis
redis-cli -p 7379 -a 密码 shutdown
# 远程访问redis
redis-cli -h ipaddress -p 7379 -a XXXXXX
# Redis 缓存服务器里有脏数据,清理 Redis
keys *  # 查看所有 key 值
flushall  # 清空整个 Redis 服务器的数据

6)redis开机自启动

# 新建服务器文件
vi /etc/systemd/system/redis.service

# 输入以下内容
[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
ExecStart=/usr/redis/redis-7.0.4/src/redis-server /usr/redis/redis-7.0.4/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

# 重载系统服务
systemctl daemon-reload
# 启动redis
systemctl start redis
# 查看redis状态
systemctl status redis
# 服务开机自启动
systemctl enable redis

3.2. MySQL

finereport外接数据库建议使用mysql5.7

1)下载MySQL5.7

https://dev.mysql.com/downloads/mysql/

2)上传服务器并解压得到rpm文件

3)安装配置

# 卸载已有的mysql
rpm -qa | grep mysql
rpm -e --nodeps 包名
# 卸载CentOS自带的mariadb,查看mariadb命令:rpm -qa|grep mariadb
# 卸载mariadb相关,执行命令:rpm -e --nodeps 文件名

# 执行安装:
rpm -ivh mysql-community-common-5.7.15-1.el6.x86_64.rpm --force --nodeps 
rpm -ivh mysql-community-libs-5.7.15-1.el6.x86_64.rpm --force --nodeps 
rpm -ivh mysql-community-libs-comp-5.7.15-1.el6.x86_64.rpm --force --nodeps 
rpm -ivh mysql-community-client-5.7.15-1.el6.x86_64.rpm --force --nodeps 
rpm -ivh mysql-community-server-5.7.15-1.el6.x86_64.rpm --force --nodeps

# 修改my.cnf配置文件
vim /etc/my.cnf
[client]
default-character-set=utf8
[mysqld]
skip-grant-tables
character_set_server=utf8
init_connect='SET NAMES utf8'
max_connections=2000

# 启动
systemctl start mysqld

3)创建管理员用户

# 直接登录
mysql -uroot

# 创建管理员用户
create user 'qianmm'@'%' identified by 'Qwer123$';

# 设置远程可访问权限
grant all privileges on *.* to 'admin'@'localhost' identified by 'XXXXXX'; //本地授权
grant all privileges on *.* to 'admin'@'%' identified by 'XXXXXX'; //远程权限
 
# 查看所有用户及权限
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

# 刷新权限
flush privileges;

4)完成安装

# 手工创建目录,并权限归属于 Mysql(非必要)
mkdir -p /var/run/mysqld
chown -R mysql:mysql /var/run/mysqld

# 重启mysql
vim /etc/my.cnf
## 注释掉skip-grant-tables
systemctl restart mysqld
systemctl enable mysqld
3.3. ftp文件服务器

ftp文件服务器有很多,FineReport官方推荐linux中部署vsftp,我使用的是一款功能更齐全,使用web端管理的更高效快捷的sftpgo开源软件,

文章链接:https://blog.csdn.net/qq_45661358/article/details/126580800

3.4. 开启集群

1)配置MySQL外接数据源

管理系统–>系统管理–>常规–>外接数据库–>(填写安装的MySQL数据库信息)

在这里插入图片描述

2)配置Redis状态服务器

管理系统–>智能运维–>集群配置–>开启状态服务器

在这里插入图片描述

3)配置ftp文件服务器

管理系统–>智能运维–>集群配置–>文件服务器共享

在这里插入图片描述

4)开启按钮

管理系统–>智能运维–>集群配置–>开启集群

在这里插入图片描述

5)其他节点开启集群

将其他节点的webapps/webroot文件删除,将刚才配置好的节点替换所有从节点即可

# 删除从节点webroot文件
rm -rf /opt/finereport/webapps/webroot
# 拷贝主节点的webroot到从节点
scp -R /opt/finereport/webapps/webroot workers:/opt/finereport/webapps
# 启动所有从节点
sh /opt/finereport/bin/startup.sh

6)查看主从节点是否同步

4. 总结

  • FineReport安装部署非常简单易用
  • FineReport支持高可用,高并发的集群部署,防止单点故障并提高并发查询性能
  • FineReport对比PowerBI等报表工具而言,其功能更加齐全,操作更加简单易用
  • FineReport的运行BUG比较少,售后也比较专业
  • 借鉴文章:https://help.fanruan.com/finereport/
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐