FineReport BI报表工具
FineReport报表是一个纯国产的BI工具,以表格、图表的形式来动态展示数据,通过报表进行数据分析,进而用于辅助经营管理决策。FineReport 是一款用于报表制作,分析和展示的工具,用户通过使用 FineReport 可以轻松的构建出灵活的数据分析和报表系统,大大缩短项目周期,减少实施成本,最终解决企业信息孤岛的问题,使数据真正产生其应用价值。......
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/
更多推荐
所有评论(0)