You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

435 lines
12 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

### 一、$DataEase$最新版本下载
```apl
https://community.fit2cloud.com/#/products/dataease/downloads
```
**在线安装**
```shell
curl -sSL https://dataease.oss-cn-hangzhou.aliyuncs.com/quick_start_v2.sh | sh
```
**在线升级**
```shell
dectl upgrade
```
### 二、$DataEase$发布
#### 1、$80$端口发布
##### 拉取
```shell
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/openresty/openresty:1.25.3.1-5-alpine-fat
```
##### 打标
```shell
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/openresty/openresty:1.25.3.1-5-alpine-fat docker.io/openresty/openresty:1.25.3.1-5-alpine-fat
```
##### 编辑 $nginx.conf$
```shell
vi /root/nginx.conf
```
```apl
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# DataEase 所在机器的IP
upstream dataease {
server 10.10.14.203:8100;
}
# 配置日志位置
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
server {
# 监听端口
listen 80;
# 监听域名修改为你自己的域名且域名与nginx所在服务器的IP绑定
#server_name dataease.test.com;
location / {
client_max_body_size 600m;
client_body_buffer_size 128k;
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_pass http://dataease;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
```
##### 运行
```shell
mkdir /root/nginx_logs
docker run --name openresty -d -v /root/nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf -v /root/nginx_logs:/var/log/nginx -p 80:80 openresty/openresty:1.25.3.1-5-alpine-fat
```
#### 2、用$/dataease/$发布
> 参考:[DataEase v2 设置动态访问路径,使用 Nginx 路径代理 - FIT2CLOUD 知识库](https://kb.fit2cloud.com/?p=57a47d64-4eda-4ae8-a0b0-4329e57b13ff)
**步骤1**
```shell
vi /opt/dataease2.0/conf/application.yml
```
```yaml
server:
servlet:
context-path: /dataease
```
**步骤2**
```shell
echo 'DE_CONTEXT_PATH=/dataease' >> /opt/dataease2.0/.env
```
### 三、访问方式
```xml
系统登录信息如下:
访问地址: https://www.edusoa.com/dataease
用户名: admin
初始密码: DataEase@123456
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202410240933597.png)
**华为云部署主机的账号**
```
117.78.60.214
52025
root
DsIdeal@123
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202410171024499.png)
### 四、异常记录
#### $Centos$ $7.9$ $root$账号,输入$reboot$不重新启动,怎么办?
答:
```shell
yum update -y
```
然后使用在线安装,注意:不要使用离线包,离线包问题多多!
```
curl -sSL https://dataease.oss-cn-hangzhou.aliyuncs.com/quick_start_v2.sh | sh
```
[DataEase v2 设置动态访问路径,使用 Nginx 路径代理 - FIT2CLOUD 知识库](https://kb.fit2cloud.com/?p=57a47d64-4eda-4ae8-a0b0-4329e57b13ff)
### 五、备份与还原
```
# 原版本机器上运行
dectl upgrade
# 两个机器都要执行
service dataease stop
# 在备份的机器上执行
tar -jcv -f dataease.tar.bz2 /opt/dataease2.0
# 备份机器上启动服务
service dataease start
# 下载 dataease.tar.bz2 并在还原的机器上传
# 还原
mv /opt/dataease2.0 /opt/dataease2.0.bak
mkdir /opt/dataease2.0 -p
tar -xjf dataease.tar.bz2 -C /
# 在还原机上执行
service dataease start
```
### 六、运维
##### 数据库用户名和密码
```
username: root
password: Password123@mysql
```
##### 停止
```
dectl stop
```
##### 启动
```
dectl start
```
### 七、黑科技
> $Q$、如果在线修改数据库中的表,以达到大屏数据直接修改的目的,而且最初的大屏是产品经理使用$Excel$进行模拟数据进行设计的,并不是真正的$Mysql$数据源,能不迁移到$Mysql$数据源就达到这个修改的目标吗,全部迁移到$Mysql$的数据源还有好多工作要做,太麻烦~
$A$:可以采用两个步骤来完成这个目标:
1. **将$Mysql$数据库的$3306$端口暴露出来,让$JAVA$可以连接上**
修改$Mysql$可以使用局域网$IP$访问
```shell
vi /opt/dataease2.0/docker-compose-mysql.yml
```
添加
```
ports:
- "0.0.0.0:3306:3306"
```
完整文件
```yaml
version: '3'
services:
mysql-de:
image: registry.cn-qingdao.aliyuncs.com/dataease/mysql:8.4.0
container_name: ${DE_MYSQL_HOST}
ports:
- "0.0.0.0:3306:3306"
althcheck:
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost", "-u${DE_MYSQL_USER}", "-p${DE_MYSQL_PASSWORD}", "--protocol","tcp"]
interval: 5s
timeout: 3s
retries: 10
env_file:
- ${DE_BASE}/dataease2.0/conf/mysql.env
lumes:
- ${DE_BASE}/dataease2.0/conf/my.cnf:/etc/mysql/conf.d/my.cnf
${DE_BASE}/dataease2.0/bin/mysql:/docker-entrypoint-initdb.d/
- ${DE_BASE}/dataease2.0/data/mysql:/var/lib/mysql
tworks:
- dataease-network
```
启动,这样才能按$mysql->dataease$ 顺序去启动
启动
```
dectl start
```
这样,$DataEase$自己带的$Mysql$数据库就可以通过宿主机$IP$+$3306$来访问到了。
2. **通过修改其中的数据集完成修改工作**
**查询数据表**
```sql
-- 数据源表
-- core_datasource
select * from core_datasource where name like '%岐山%';
-- 数据集组
select * from core_dataset_group where name like '全省人口变化总体趋势预测'; -- id=1033797259734683648
-- 数据集表
select table_name from core_dataset_table where dataset_group_id='1034544942506184704';
-- 查询或者修改
select * from `excel_人口变化趋势_e1c9395feb`
```
更详细的见项目代码。
> **$Q$:我想在主页面显示云南省的地图然后点击地图中某个城市比如昆明市进打开一个新的页面里面是昆明市的地图如果点击的是楚雄州打开的新的页面就是楚雄州的地图并且要求不能开发16个市州的页面那样太麻烦了我只想开发一个市州的页面让第一页省地图将参数传递到市州的页面完成类似于钻取的工作可以吗**
$A$: 目前的$DataEase$ $V2$版本支持外部参数向仪表盘类组件传递参数,但对于地图是不支持的,地图是哪个地区,必然在页面上指定:
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202411010759402.png)
这样一来,上面的需求就无法满足了。
只好继续使用黑科技!
找到记录某个大屏使用了哪表记录上面的地区信息:
```sql
select * from data_visualization_info where name ='黄海测试的市州地图';
-- 1049327041104711680 黄海测试的市州地图
-- 配置值
select * from core_chart_view where scene_id=1049327041104711680 and type='map';
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202411010801598.png)
返回的字段$custom\_attr$中有是哪个地区的配置信息:
```json
"map":{"level":"city","id":"156532300"}
```
很明显
```json
level:[province,city,district]
156530102:五华区
156530100:昆明市
```
上$baidu$查找了一下,$DataEase$中区划表执行的是:
**[2023年省市县行政区划名称及编码对照表、最新省市区表](https://blog.csdn.net/isworking/article/details/128630487)**
由于本次项目只是云南省的市/州就可以了,所以我们只需要找出下面的数据即可:
```sql
DROP TABLE IF EXISTS `t_city_code`;
CREATE TABLE `t_city_code` (
`area_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '地区行政区划码',
`area_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '地区名'
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of t_city_code
-- ----------------------------
INSERT INTO `t_city_code` VALUES ('156530100', '昆明市');
INSERT INTO `t_city_code` VALUES ('156530300', '曲靖市');
INSERT INTO `t_city_code` VALUES ('156530400', '玉溪市');
INSERT INTO `t_city_code` VALUES ('156530500', '保山市');
INSERT INTO `t_city_code` VALUES ('156530600', '昭通市');
INSERT INTO `t_city_code` VALUES ('156530700', '丽江市');
INSERT INTO `t_city_code` VALUES ('156530800', '普洱市');
INSERT INTO `t_city_code` VALUES ('156530900', '临沧市');
INSERT INTO `t_city_code` VALUES ('156532300', '楚雄彝族自治州');
INSERT INTO `t_city_code` VALUES ('156532500', '红河哈尼族彝族自治州');
INSERT INTO `t_city_code` VALUES ('156532600', '文山壮族苗族自治州');
INSERT INTO `t_city_code` VALUES ('156532800', '西双版纳傣族自治州');
INSERT INTO `t_city_code` VALUES ('156532900', '大理白族自治州');
INSERT INTO `t_city_code` VALUES ('156533100', '德宏傣族景颇族自治州');
INSERT INTO `t_city_code` VALUES ('156533300', '怒江傈僳族自治州');
INSERT INTO `t_city_code` VALUES ('156533400', '迪庆藏族自治州');
```
#### 外部参数的处理办法
https://www.jianshu.com/p/cc9982e986f5
1、省通过跳转设备 转到JAVA接口填写如下
http://10.10.21.20:9000/dsBase/dataease/route?city_name=[city_name]
其中[city_name]是在省地图上显示的热力数据比如GDP=10000等
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202411010919859.png)
```java
// http://10.10.21.20:9000/dsBase/dataease/route?city_name=昆明市
// http://10.10.21.20:9000/dsBase/dataease/route?city_name=楚雄彝族自治州
// http://10.10.21.20:9000/dsBase/dataease/route?city_name=西双版纳傣族自治州
// !!!必须发布后访问才能做到进入此接口,否则浏览器就走缓存,不进来这个接口了!!!
/**
* 路由跳转
*
* @param city_name 城市名称
*/
@Before({GET.class})
@EmptyInterface({"city_name"})
public void route(String city_name) {
//大屏名称
String dataVisualizationName = BaseApplication.PropKit.get("dataEase.dataVisualizationName");
//发布的地址
String publish_url = BaseApplication.PropKit.get("dataEase.publish_url");
//先更新一下数据表
dm.updateCity(dataVisualizationName, city_name);
//再拼接一下URL的最终地址
JSONObject jo = new JSONObject();
jo.put("city_name", city_name);
String base64Str = Base64.encode(jo.toString());
//跳转
redirect(publish_url + "/#/de-link/zud8IQ8J?attachParams=" + base64Str);
}
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202411010921229.png)
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202411010921376.png)