源码部署
请使用 v2.9、v2.8 等已发布分支的代码运行 DataEase。请勿使用 dev 等分支,dev 等分支代码均处于开发或测试阶段,部分依赖并没有上传到中央仓库,编译时可能出现依赖缺失。
本文所使用源码为 DataEase v2.9 分支,操作系统为 CentOS 7.9,举例说明如何以源码的形式编译 DataEase 工程。所有操作均在阿里云(新加坡区) 4核8G 环境中执行。
1 项目结构¶
```
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Dockerfile # 构建容器镜像使用的 Dockerfile
├── LICENSE # License 申明
├── README.md
├── SECURITY.md
├── core # 社区版功能源码
├── de-xpack # 企业版功能源码(不开源)
├── drivers # 数据源驱动文件
├── installer # 安装工程源码
├── mapFiles # 地图文件
├── pom.xml # 整体 maven 项目使用的 pom 文件
├── sdk # DataEase 基础接口工程源码
└── staticResource # 静态资源文件
```
2 配置环境¶
2.1 安装 JDK 21¶
DataEase v2 使用 JDK21, Oracle 官网下载 JDK21 安装包,根据 CPU 架构,选择对应安装包。本文档所用测试服务器 CPU 架构为 x64,下载的 x64 架构的 rpm 安装包。
# 下载 JDK21 RPM 安装包
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.rpm
# 安装 RPM 安装包
yum -y install jdk-21_linux-x64_bin.rpm
验证 JDK 正确安装。
[root@iZt4n8oa58aqukyv8sf1ciZ ~]# java -version
java version "21.0.10" 2024-01-16 LTS
Java(TM) SE Runtime Environment (build 21.0.10+11-LTS-240)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.10+11-LTS-240, mixed mode, sharing)
2.2 安装 Git¶
执行命令安装 Git。
yum install -y git
验证 Git。
[root@iZt4n8oa58aqukyv8sf1ciZ ~]# git --version
git version 1.8.3.1
2.3 安装配置 Maven¶
到 Apache Maven 官网下载最新版本的 Maven,官网地址如下:https://maven.apache.org/download.cgi 。
执行命令安装 Maven。
# 下载并安装 Maven
wget https://dlcdn.apache.org/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz
tar zxvf apache-maven-3.9.6-bin.tar.gz
mv apache-maven-3.9.6 /opt
echo "export M2_HOME=/opt/apache-maven-3.9.6" >> ~/.bashrc
echo "export PATH=\$PATH:\$M2_HOME/bin" >> ~/.bashrc
source ~/.bashrc
验证 Maven。
[root@iZt4n8oa58aqukyv8sf1ciZ ~]# mvn -v
Apache Maven 3.9.6 (bc0240f3c744dd6b6ec2920b3cd08dcc295161ae)
Maven home: /opt/apache-maven-3.9.6
Java version: 17.0.10, vendor: Oracle Corporation, runtime: /usr/lib/jvm/jdk-21-oracle-x64
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.105.1.el7.x86_64", arch: "amd64", family: "unix"
2.4 安装配置 nodejs¶
执行命令安装 nodejs。
# 下载并安装 nodejs
wget https://nodejs.org/dist/v16.15.0/node-v16.15.0-linux-x64.tar.xz
tar xvf node-v16.15.0-linux-x64.tar.xz
mv node-v16.15.0-linux-x64 /opt
echo "export PATH=\$PATH:/opt/node-v16.15.0-linux-x64/bin" >> ~/.bashrc
source ~/.bashrc
验证 nodejs。
[root@iZt4n8oa58aqukyv8sf1ciZ ~]# node --version
v16.15.0
[root@iZt4n8oa58aqukyv8sf1ciZ ~]# npm version
{
npm: '8.5.5',
node: '16.15.0',
v8: '9.4.146.24-node.20',
uv: '1.43.0',
zlib: '1.2.11',
brotli: '1.0.9',
ares: '1.18.1',
modules: '93',
nghttp2: '1.47.0',
napi: '8',
llhttp: '6.0.4',
openssl: '1.1.1n+quic',
cldr: '40.0',
icu: '70.1',
tz: '2021a3',
unicode: '14.0',
ngtcp2: '0.1.0-DEV',
nghttp3: '0.1.0-DEV'
}
3 代码运行¶
3.1 源码准备¶
下载源码到本地
cd /opt
git clone -b v2.9 https://github.com/dataease/dataease.git
3.2 源码编译¶
cd dataease
mvn clean install
cd core
mvn clean package -Pstandalone -U -Dmaven.test.skip=true
如下图所示输出,则编译成功。
编译完成后,可以在 core-backend/target 目录下看到编译后的 jar 包 CoreApplication.jar
core-backend 源码引用到 calcite-core 依赖,是 DataEase 基于 Apache Calcite 工程修改后的依赖包,不属于开源部分。该依赖包会持续迭代,并上传到公共仓库中,对社区版源码的编译和使用不会造成任何影响。
3.3 配置运行环境¶
操作系统设置
参数设置,增加系统监听文件数量。
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
MySQL 配置
使用 MySQL 8.0 及以上版本进行,以下是推荐的 MySQL 配置。
[mysqld]
datadir=/var/lib/mysql
default-storage-engine=INNODB
character_set_server=utf8
lower_case_table_names=1
table_open_cache=128
max_connections=2000
max_connect_errors=6000
innodb_file_per_table=1
innodb_buffer_pool_size=1G
max_allowed_packet=64M
transaction_isolation=READ-COMMITTED
innodb_flush_method=O_DIRECT
innodb_lock_wait_timeout=1800
innodb_flush_log_at_trx_commit=0
sync_binlog=0
group_concat_max_len=1024000
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
skip-name-resolve
[mysql]
default-character-set=utf8
[mysql.server]
default-character-set=utf8
CREATE DATABASE `dataeaseV2demo` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
运行目录设置
创建 DataEase 运行目录。
mkdir -p /opt/dataease2.0/config /opt/dataease2.0/drivers/ /opt/dataease2.0/cache/ /opt/dataease2.0/data/map /opt/dataease2.0/data/static-resource
cp -rp /opt/dataease/drivers/* /opt/dataease2.0/drivers/
cp -rp /opt/dataease/mapFiles/* /opt/dataease2.0/data/map/
cp -rp /opt/dataease/staticResource/* /opt/dataease2.0/data/static-resource/
cd /opt/dataease2.0/config
server:
tomcat:
connection-timeout: 70000
spring:
servlet:
multipart:
max-file-size: 500MB
max-request-size: 500MB
datasource:
url: jdbc:mysql://YOUR_IP:PORTS/YOUR_DATABASE?autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: YOUR_USER
password: YOUR_PASSWORD
3.4 运行 jar¶
在 core-backend/target 目录下找到编译后的 jar 包 CoreApplication.jar,复制到运行目录下,运行 jar 包。
cp /opt/dataease/core/core-backend/target/CoreApplication.jar /opt/dataease2.0/
cd /opt/dataease2.0
java -jar CoreApplication.jar
如下代码准备就绪,说明 DataEase 已成功运行,此时已经可以通过 IP:8100 访问服务。
4 镜像制作¶
4.1 安装 Docker¶
在服务器上安装 Docker,本文使用 DataEase 项目组编写安装脚本进行安装,用户可自行选择如何安装 Docker(需安装 docker compsose)。
curl -fsSL https://resource.fit2cloud.com/get-docker-linux.sh | bash
# 设置 docker 开机自启,并启动 docker 服务
systemctl enable docker; systemctl daemon-reload; service docker start
4.2 制作镜像¶
进入 DataEase 项目根目录,执行镜像制作命令。
cd /opt/dataease
docker build -t registry.cn-qingdao.aliyuncs.com/dataease/dataease:v2.3-rc1 .
如下输出日志参考,使用 docker images 可查看镜像是否成功打包。
5 镜像运行¶
5.1 配置运行环境¶
创建运行目录。
mkdir -p /opt/dataease2.0
version: '2.1'
services:
dataease:
image: registry.cn-qingdao.aliyuncs.com/dataease/dataease:v2.3-rc1
container_name: dataease
ports:
- 8100:8100
volumes:
- /opt/dataease2.0/conf:/opt/apps/config
mkdir -p /opt/dataease2.0/conf
touch application.yml
server:
tomcat:
connection-timeout: 70000
spring:
servlet:
multipart:
max-file-size: 500MB
max-request-size: 500MB
datasource:
url: jdbc:mysql://YOUR_IP:PORTS/YOUR_DATABASE?autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: YOUR_USER
password: YOUR_PASSWORD
5.2 运行镜像¶
在运行目录下执行 docker-compose(docker compose) 命令。
docker-compose up -d
# 或者 docker compose up -d
验证 DataEase 服务状态,状态为 health 则正常,浏览器输入 IP:PORTS 访问服务。