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容器部署

🌈特别说明

自定义配置如下:

  • 自定义运行参数: docker run opensnail/snail-job java -XX:+UseZGC -jar app.jar --server.port=8081

  • 使用 env: docker run -e SERVER_PORT=8081 opensnail/snail-job

配置项参考文件:/snail-job-server/src/main/resources/application.yml

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

shell
docker run \
  -e SPRING_DATASOURCE_USERNAME=root \
  -e SPRING_DATASOURCE_PASSWORD=root \
  -e SPRING_DATASOURCE_URL='jdbc:mysql://ip:port/snail_job?useSSL=false&characterEncoding=utf8&useUnicode=true' \
  -e SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver \
  -p 8080:8080 \
  -p 17888:17888 \
  --name snail-job-server-mysql \
  -d opensnail/snail-job:{Latest Version}
shell
docker run \
  -e SPRING_DATASOURCE_USERNAME=root \
  -e SPRING_DATASOURCE_PASSWORD=root \
  -e SPRING_DATASOURCE_URL='jdbc:mariadb://IP:3307/snail_job' \
  -e SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.mariadb.jdbc.Driver \
  -p 8080:8080 \
  -p 17888:17888 \
  --name snail-job-server-mariadb \
  -d opensnail/snail-job:{Latest Version}
shell
docker run \
  -e SPRING_DATASOURCE_USERNAME=postgres \
  -e SPRING_DATASOURCE_PASSWORD=root \
  -e SPRING_DATASOURCE_URL='jdbc:postgresql://IP:5432/snail_job' \
  -e SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.postgresql.Driver \
  -p 8080:8080 \
  -p 17888:17888 \
  --name snail-job-server-mariadb \
  -d opensnail/snail-job:{Latest Version}
shell
docker run \
  -e SPRING_DATASOURCE_USERNAME=SA \
  -e SPRING_DATASOURCE_PASSWORD=SnailJob@24 \
  -e SPRING_DATASOURCE_URL='jdbc:sqlserver://IP:1433;DatabaseName=snail_job;SelectMethod=cursor;encrypt=false;rewriteBatchedStatements=true' \
  -e SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.microsoft.sqlserver.jdbc.SQLServerDriver \
  -p 8080:8080 \
  -p 17888:17888 \
  --name snail-job-server-sqlserver \
  -d opensnail/snail-job:{Latest Version}
shell
docker run \
  -e SPRING_DATASOURCE_USERNAME=snail_job \
  -e SPRING_DATASOURCE_PASSWORD=SnailJob \
  -e SPRING_DATASOURCE_URL='jdbc:oracle:thin:@//IP:1521/XEPDB1' \
  -e SPRING_DATASOURCE_DRIVER_CLASS_NAME=oracle.jdbc.OracleDriver \
  -p 8080:8080 \
  -p 17888:17888 \
  --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 容器日志,检查错误信息并进行排查。