Skip to content

准备环境

在开始部署服务之前,需要准备好必要的环境和工具。

  • 服务器:确保服务器已安装操作系统,并且能够访问互联网。
  • 依赖工具:安装必要的依赖工具,如 Docker、Git 等。

服务器要求

  • 操作系统:建议使用 Ubuntu 20.04 LTS 或 CentOS 8。
  • CPU:至少 2 核。
  • 内存:至少 4GB。
  • 存储:至少 50GB 可用空间。

数据库构建

服务端需要初始化数据库表,在源码的 /doc/sql/ 目录下,现已经适配 mysql、达梦V8、oracle、Postgre SQL、SQL Server:

  • /doc/sql/snail_job_dm8.sql
  • /doc/sql/snail_job_mysql.sql
  • /doc/sql/snail_job_oracle.sql
  • /doc/sql/snail_job_postgre.sql
  • /doc/sql/snail_job_sqlserver.sql
数据库自动化构建

🌈特别说明

为了让小伙伴快速搭建测试数据库环境, SnailJob提供了docker compose的数据库构建支持,如果不熟悉 docker 的小伙伴, 可以参考本文档的数据库默认连接信息构建本地相应的数据库环境,或者修改application.yml文件的spring.datajdbc信息。

docker compose 快速构建数据库环境

要求 docker 支持 docker compose v2

shell
cd ./doc/docker
shell
## 启动 mysql
docker compose up -d mysql
shell
## 启动 mariadb
docker compose up -d mariadb
shell
## 启动 postgres
docker compose up -d postgres
shell
## 启动 oracle
docker compose up -d oracle
shell
## 启动 sqlserver
docker compose up -d sqlserver
docker compose exec sqlserver bash /tmp/create_schema.sh
shell
## 下载达梦安装包
wget https://download.dameng.com/eco/dm8/dm8_20240613_x86_rh6_64_rq_ent_8.1.3.140_pack5.tar
## 加载达梦镜像
docker load -i dm8_20240613_x86_rh6_64_rq_ent_8.1.3.140_pack5.tar
## 启动
docker compose up -d dm8
## 执行数据库脚本
docker compose exec dm8 bash -c 'exec /opt/dmdbms/bin/disql SYSDBA/SYSDBA001 \`/tmp/schema.sql'
数据库默认连接信息
数据库类型端口数据库(Schema)用户名密码其他
MySQL3306snail_jobrootroot
MariaDB3308snail_jobrootroot
Postgres5432snail_jobrootroot
Oracle1521snail_jobsnail_jobSnailJob容器名称: XEPDB1
MS SQL Server1433snail_jobsaSnailJob@24

获取代码

通过 Git 从版本控制系统中获取最新的项目代码。

bash
git clone https://gitee.com/aizuda/snail-job.git
cd project
bash
git clone https://github.com/aizuda/snail-job.git
cd project

配置环境

数据源配置

yaml
# 配置数据源
spring:
  datasource:
    name: snail_job
    url: jdbc:mysql://localhost:3306/snail_job?useSSL=false&characterEncoding=utf8&useUnicode=true
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
    #....其他配置信息....
yaml
# 配置数据源
spring:
  datasource:
    name: snail_job
    url: jdbc:mariadb://localhost:3308/snail_job
    username: root
    password: root
    driver-class-name: org.mariadb.jdbc.Driver
    #....其他配置信息....
yaml
# 配置数据源
spring:
  datasource:
    name: snail_job
    url: jdbc:postgresql://localhost:5432/snail_job
    username: postgres
    password: root
    driver-class-name: org.postgresql.Driver
    #....其他配置信息....
yaml
# 配置数据源
spring:
  datasource:
    name: snail_job
    url: jdbc:sqlserver://localhost:1433;DatabaseName=snail_job;SelectMethod=cursor;encrypt=false;rewriteBatchedStatements=true
    username: SA
    password: EasyRetry@24
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    #....其他配置信息....
yaml
# 配置数据源
spring:
  datasource:
    name: snail_job
    url: jdbc:oracle:thin:@//localhost:1521/XEPDB1
    username: snail_job
    password: EasyRetry
    driver-class-name: oracle.jdbc.OracleDriver
    #....其他配置信息....

系统参数配置

根据项目需求配置环境变量和其他必要的设置。 详情配置 see: 服务端配置

启动服务

源码部署

  • maven 打包镜像
bash
maven clean install
  • 启动
java -jar snail-job-server-exec.jar

Docker容器部署

🌈特别说明

如需自定义 mysql 等配置,可通过 "-e PARAMS" 指定,参数格式 PARAMS="--key1=value1 --key2=value2" ; 配置项参考文件:/snail-job-server/src/main/resources/application.yml 如需自定义 JVM内存参数 等配置,可通过 "-e JAVA_OPTS" 指定,参数格式 JAVA_OPTS="-Xmx512m" ;

正式发布版 点击查看最新版本号

shell
docker run  -e PARAMS="--spring.datasource.username=root --spring.datasource.password=root  --spring.datasource.url=jdbc:mysql://IP:3306/snail_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai --spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver" -p 8080:8080 -p 1788:1788 --name snail-job-server-mysql -d opensnail/snail-job:{Latest Version}
shell
docker run  -e PARAMS="--spring.datasource.username=root --spring.datasource.password=root  --spring.datasource.url=jdbc:mariadb://IP:3307/snail_job --spring.datasource.driver-class-name=org.mariadb.jdbc.Driver" -p 8080:8080 -p 1788:1788 --name snail-job-server-mariadb -d opensnail/snail-job:{Latest Version}
shell
docker run  -e PARAMS="--spring.datasource.username=postgres --spring.datasource.password=root  --spring.datasource.url=jdbc:postgresql://IP:5432/snail_job --spring.datasource.driver-class-name= org.postgresql.Driver" -p 8080:8080 -p 1788:1788 --name snail-job-server-postgres -d opensnail/snail-job:{Latest Version}
shell
docker run  -e PARAMS="--spring.datasource.username=SA --spring.datasource.password=SnailJob@24  --spring.datasource.url=jdbc:sqlserver://IP:1433;DatabaseName=snail_job;SelectMethod=cursor;encrypt=false;rewriteBatchedStatements=true --spring.datasource.driver-class-name= com.microsoft.sqlserver.jdbc.SQLServerDriver" -p 8080:8080 -p 1788:1788 --name snail-job-server-sqlserver -d opensnail/snail-job:{Latest Version}
shell
docker run  -e PARAMS="--spring.datasource.username=snail_job --spring.datasource.password=SnailJob  --spring.datasource.url=jdbc:oracle:thin:@//IP:1521/XEPDB1 --spring.datasource.driver-class-name=oracle.jdbc.OracleDriver" -p 8080:8080 -p 1788:1788 --name snail-job-server-oracle -d opensnail/snail-job:{Latest Version}

高可用部署

需要配置业务侧和netty端口的代理,配置完成后正常启动各节点的服务即可,代理配置如下:

业务侧代理:

bash
server {
        listen 端口;
        server_name localhost;

        location /snail-job/ {
                proxy_ignore_client_abort on;
                proxy_http_version 1.1;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://snail-job-server/snail-job/;
        }
}

upstream snail-job-server {
        server 服务端节点一IP:业务端口 weight=5 max_fails=2 fail_timeout=3s;
        server 服务端节点二IP:业务端口 weight=5 max_fails=2 fail_timeout=3s;
        …节点n…
}

netty通信代理:

bash
server {
        listen netty端口;
        server_name localhost;

        location / {
                proxy_ignore_client_abort on;
                proxy_http_version 1.1;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://snail-job-server-comm/;
        }
}

upstream snail-job-server-comm {
        server 服务端节点一IP:netty端口 weight=5 max_fails=2 fail_timeout=3s;
        server 服务端节点二IP:netty端口 weight=5 max_fails=2 fail_timeout=3s;
        …节点n…
}

验证部署

确保服务正常运行,进行基本的功能测试。

测试 API 接口 使用 curl 或 Postman 进行 API 测试,确保服务响应正确。

bash
http://localhost:8000/snail-job
用户名: admin
密码: admin

问题一:无法连接数据库 检查数据库连接字符串是否正确,并确保数据库服务正在运行。

问题二:服务启动失败 查看 Docker 容器日志,检查错误信息并进行排查。