一、使用场景:
企业内部系统想要快速接入报表功能,但是局限于人力资源不足,不想沿用传统的前端+后端开发模式,可以尝试使用开源报表工具 DataEase。
二、架构设计:
使用最简便的报表集成方式,通过DataEase开发完成报表后,生成公开链接,配置到数据库,前端加载时通过接口返回报表的公开链接,前端页面通过iframe的方式加载展示报表。
缺点:安全性低,获取到公开链接后,可以绕开系统的安全体系访问报表数据。
应对策略:定时更改报表的公开链接。
三、报表环境搭建
以 v 1.18.9 社区版 为例
(1)下载地址: https://community.fit2cloud.com/#/products/dataease/downloads
(2)安装部署
选择1台 Linux 主机
将下载的安装文件压缩包放在主机目录:/home/download
解压安装包
tar zxvf dataease-v1.18.9-offline.tar.gz
(3)修改配置文件
进入解压后的目录
cd /home/download/dataease-v1.18.9-offline
修改配置文件 install.conf 的2个属性 (其它属性不需要修改)
DE_BASE=/home/abc/DataEase
DE_ENGINE_MODE=local
# 基础配置
## 安装目录
DE_BASE=/home/abc/DataEase
## Service 端口
DE_PORT=80
## 部署及运行模式,可选值有 local、simple、cluster,分别对应 本地模式、精简模式、集群模式
DE_ENGINE_MODE=local
## docker 网段设置
DE_DOCKER_SUBNET=172.19.0.0/16
## docker 网关 IP
DE_DOCKER_GATEWAY=172.19.0.1
## Apache Doris FE IP (外部 Doris 此参数无效)
DE_DORIS_FE_IP=172.19.0.198
## Apache Doris BE IP (外部 Doris 此参数无效)
DE_DORIS_BE_IP=172.19.0.199
## 登录超时时间,单位min。如果不设置则默认8小时,也就是480
DE_LOGIN_TIMEOUT=480
# 数据库配置
## 是否使用外部数据库
DE_EXTERNAL_MYSQL=false
## 数据库地址
DE_MYSQL_HOST=mysql
## 数据库端口
DE_MYSQL_PORT=3306
## DataEase 数据库库名
DE_MYSQL_DB=dataease
## 数据库用户名
DE_MYSQL_USER=root
## 数据库密码
DE_MYSQL_PASSWORD=P@ssw0rdL2#@mysql
## 数据库参数
DE_MYSQL_PARAMS="autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false"
# Apache Doris 配置
## 是否使用外部 Apache Doris
DE_EXTERNAL_DORIS=false
## Doris 地址
DE_DORIS_HOST=doris-fe
## Doris 查询连接端口
DE_DORIS_PORT=9030
## Doris http端口
DE_DORIS_HTTPPORT=8030
## Doris 数据库名称
DE_DORIS_DB=dataease
## Doris 用户名
DE_DORIS_USER=root
## Doris 密码
DE_DORIS_PASSWORD=Password123@doris
# Kettle 配置
## 是否使用外部 Kettle - (目前还不支持外部Kettle,除非不需运行Kettle,否则请不要修改此参数)
DE_EXTERNAL_KETTLE=false
## Kettle 服务器地址
DE_CARTE_HOST=kettle
## Kettle 访问端口
DE_CARTE_PORT=18080
## Kettle 用户名
DE_CARTE_USER=cluster
## Kettle 密码
DE_CARTE_PASSWORD=cluster
(4)执行安装脚本
cd /home/download/dataease-v1.18.9-offline
/bin/bash install.sh
(5)配置证书
如果将要集成的系统访问方式是 https 则需要将DataEase 报表公开链接也设置成 https 访问。这就需要将 DataEase 服务访问方式设置成 https
在阿里云上申请域名 如:xyz.com
从阿里云下载域名 xyz.com 的证书拷贝到DataEase安装后根目录 /home/abc/DataEase/dataease
证书文件以 .key .pem 结尾
(6)配置Nginx
进入Nginx程序目录
cd /usr/local/nginx/conf
编辑配置文件 nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name 172.16.35.40;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# 配置 报表强制跳转 https
server {
listen 80;
#修改为实际环境的域名
server_name xyz.com;
return 301 https://$server_name$request_uri;
}
# 配置https访问
server {
listen 7443 ssl;
server_name xyz.com;
ssl_certificate /home/abc/DataEase/dataease/xyz.pem;
ssl_certificate_key /home/abc/DataEase/dataease/xyz.com.key;
ssl_session_timeout 1d;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
#将IP和端口改为DataEase服务器的访问地址和端口
proxy_pass http://172.16.35.40:9531/;
server_name_in_redirect off;
# websocket 代理
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect http:// https://;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
(6)配置防火墙
打开防火墙
systemctl start firewalld
查看当前防火墙状态
systemctl status firewalld
列出已经开放的端口
firewall-cmd --list-ports
开放服务器的 9531 7443 端口
firewall-cmd --zone=public --add-port=9531/tcp --permanent
(6)登录访问
https://xyz.com:7443/