有关如何在您自己的服务器上安装 SQLFlow 的说明。
SQLFow 由两部分组成:前端和后端。前端和后端可以安装在同一台服务器上,也可以分别安装在两台不同的服务器上。
先决条件
- SQLFlow 本地版本
- 至少有 8GB 内存的 linux 服务器(推荐使用 ubuntu 20.04)。
- 爪哇 8
- Nginx 网络服务器。
- 需要打开端口。(80, 8761,8081,8083。如果你设置了下面提到的nginx反向代理,只需要打开80端口)
安装环境(以 Ubuntu 为例)
sudo apt-get update
sudo apt-get install nginx -y
sudo apt-get install default-jre -y
中央操作系统
苹果
视窗
上传文件
创建一个目录:
#必须从根路径开始创建
sudo mkdir -p /wings/sqlflow
将包含后端和前端文件的 zip 文件上传到sqlflow
文件夹,然后像这样解压缩:
解压 sqlflow.zip
您应该像这样组织文件:
/wings/
└── sqlflow
├── backend
│ ├── bin
│ │ ├── backend.bat
│ │ ├── backend.sh
│ │ ├── eureka.bat
│ │ ├── eureka.sh
│ │ ├── eureka.vbs
│ │ ├── gspLive.bat
│ │ ├── gspLive.sh
│ │ ├── gspLive.vbs
│ │ ├── monitor.bat
│ │ ├── monitor.sh
│ │ ├── sqlservice.bat
│ │ ├── sqlservice.sh
│ │ ├── sqlservice.vbs
│ │ ├── stop.bat
│ │ ├── stop.sh
│ ├── lib
│ │ ├── eureka.jar
│ │ ├── gspLive.jar
│ │ ├── sqlservice.jar
│ ├── conf
│ │ ├── gudu_sqlflow_license.txt
│ │ ├── gudu_sqlflow.conf
│ ├── data
│ │ ├── job
│ │ │ ├── task
│ │ │ ├── {userid}
│ │ ├── schema
│ │ ├── session
│ │ ├── version
│ ├── log
│ ├── tmp
│ │ └── cache
└── frontend
├── config.public.json
├── images
│ ├── check.svg
│ ├── Join.svg
│ ├── pic_Not logged in.png
│ └── visualize.svg
├── index.********************.css
├── index.********************.css
├── index.********************.css
├── index.********************.css
└── index.html
└── lang
├── page.*********************.js
├── page.*********************.js
├── page.*********************.js
├── page.*********************.js
├── public.*********************.js
├── widget
│ ├── index.js
│ ├── sqlflow-library.version.css
│ └── sqlflow-library.version.js
设置文件夹权限:
sudo chmod -R 755 /wings/sqlflow
Nginx 反向代理
1.配置Nginx
打开你的 nginx 配置文件(在/etc/nginx/sites-available/default
ubuntu 下),添加一个服务器:
服务器{
听 80 default_server ;
听[::]:80 default_server ;
根/wings/sqlflow/frontend/;
索引index.html;
位置~* ^/index.html {
add_header X-Frame-Options 拒绝;# 如果您想在 iframe 中嵌入 sqlflow,请删除此行
add_header Cache-Control no-store;
}
位置 / {
try_files $uri $uri / =404 ;
}
位置 /api/ {
proxy_pass http://127.0.0.1:8081/;
proxy_connect_timeout 600s ;
proxy_read_timeout 600s ;
proxy_send_timeout 600s ;
proxy_set_header主机$host ;
proxy_set_header X-Real-IP $remote_addr ;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
proxy_set_header用户代理$http_user_agent ;
}
}
注意8081
inproxy_pass http://127.0.0.1:8081/
应该和 gspLive.jar 的端口一样。
/api
http://127.0.0.1:8081
在上述配置中映射到。如果您的公司不允许8081
从外部访问端口,这将很有用。
2.修改前端配置文件config.private.json
- 打开配置文件“/wings/sqlflow/frontend/config.private.json”
- 修改ApiPrefix属性
"ApiPrefix": "/api"
自定义端口
如果您不想更改默认服务端口,请忽略此部分,否则请按照以下说明操作。
1. 默认端口
- 网络端口是
80
- SQLFlow 后端服务端口:
文件 | 港口 |
---|---|
尤里卡.jar | 8761 |
gspLive.jar | 8081 |
sqlservice.jar | 8083 |
2.修改web端口
将默认 Web 端口从 更改80
为9000
(或您喜欢的任何端口)。
3.修改java服务端口
将默认 gspLive 端口从 更改8081
为9001
(或您喜欢的任何端口)。
-
更改 nginx 配置文件中的端口
-
更改 gspLive.sh(gspLive.bat) 中的端口
启动后端服务
在后台启动服务:
sudo /wings/sqlflow/backend/bin/backend.sh
请等待 3-5 分钟以启动服务。
用于ps -ef|grep java
检查这 3 个处理是否正在运行。
ubuntu 11047 1 0 Nov02 ? 00:04:44 java -server -jar eureka.jar
ubuntu 11076 1 0 Nov02 ? 00:04:11 java -server -Xmn512m -Xms2g -Xmx2g -Djavax.accessibility.assistive_technologies= -jar sqlservice.jar
ubuntu 11114 1 0 Nov02 ? 00:05:17 java -server -jar gspLive.jar
启动前端服务
启动你的 nginx :
sudo 服务 nginx 启动
或重新加载:
sudo nginx -s 重新加载
打开电动志趣享以查看 SQLFlow。
打开电动志趣享查看 Restful API 文档。要么
打开http://yourdomain.com:8081/gspLive_backend/doc.html?lang=en查看 Restful API 文档。
后端服务配置
sqlflow 提供了几个选项来控制服务分析逻辑。打开sqlservice配置文件(conf/gudu_sqlflow.conf)
-
关系_limit:默认值为2000.当所选对象关系的计数大于Relation_limit时,SQLFlow将退回到简单模式,请忽略所有记录集。如果简单模式的关系仍然大于relation_limit,sqlflow 将只显示摘要信息。
-
big_sql_size:默认值为 4096。如果 sql 长度大于 big_sql_size,则 sqlflow 提交工作队列中的 sql 并执行。如果工作队列已满,sqlflow 会抛出异常并返回错误消息“对不起,服务正忙。请稍后再试。”
Sqlflow客户端api调用
- 从 gudu_sqlflow.conf 获取 userId
- 打开配置文件“/wings/sqlflow/backend/conf/gudu_sqlflow.conf”
- anonymous_user_id 字段的值为 webapi userId
匿名用户 ID=xxx
- 注意: on-promise 模式,webapi 调用不需要 token 参数
-
通过 curl 测试 webapi
- 测试sql:
从用户中选择名称
- 卷曲命令:
curl -X POST " http://yourdomain.com/api/gspLive_backend/sqlflow/generation/sqlflow " -H "接受:application/json;charset=utf-8 " -F " userId=您的用户 ID 这里" -F " dbvendor=dbvoracle " -F " sqltext=从用户中选择名称"
- 回复:
{ “代码”:200, “数据”:{ “dbvendor”:“ dbvoracle ”, “dbobjs”:[ ... ], “关系”:[ ... ] }, “会话 ID”:... }
- 如果代码返回401,请检查 userId 是否设置或 userId 是否有效。
故障排除
- 获取许可证信息失败。
如果您看到此错误,只需再等待 3-5 分钟,等待后端服务启动成功并刷新网页。
或者,这个问题可能是浏览器缓存造成的,直接使用Incognito mode
访问Sqlflow页面并清除缓存即可。