支付网关DaxPay部署测试改造过程

行云流水
2024-09-02 / 0 评论 / 46 阅读 / 正在检测是否收录...

前言

DaxPay单商户是一套开源支付网关系统,已经对接支付宝、微信支付相关的接口。可以独立部署,提供接口供业务系统进行调用,不对原有系统产生影响, 适用于小型项目或简单收单的场景。本文记录部署测试记录。

核心技术栈

  • JDK,1.8+,11版本可以正常使用,但17+版本暂不支持
  • SpingBoot, 2.7x
  • Redis, 5.x版本以上
  • Mysql,5.7.X以上
  • Vue,前端框架3.x

项目部署过程

数据库mysql,redis的部署过程略过。可以查阅一下往期的文章。本文主要记录项目代码部署的相关过程。

所有项目代码的地址: 【支付源码】开源免费支付系统DaxPay源码

数据库

创建一个daxpay的数据实例。同时在后端项目中_config/sql目录下找到dax-pay.sql数据库脚本文件,导入daxpay数据库。
# 建库
mysql -uroot -pmariadb@xxx -h 127.0.0.1
CREATE DATABASE `daxpay` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
create user 'dpuser'@'%' IDENTIFIED BY 'dpuserxxx';
grant all privileges on daxpay.* to 'dpuser'@'%';
flush privileges;

# 导入demo数据
mysql -udpuser -pdpuserxxx -h 127.0.0.1 daxpay < ./_config/mysql/dax-pay.sql

java环境

利用java和maven打包后端代码,在打包之前修改application.yml内的数据库连接信息。
# java和maven的安装
yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
wget https://downloads.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
tar xvf apache-maven-3.8.8-bin.tar.gz
mv apache-maven-3.8.8 /usr/local/maven

# maven配置国内源
vim ~/.m2/settings.xml
内容见下面...

# maven版本验证
java -version
mvn -version

# 项目打包
mvn -B clean package -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dautoconfig.skip

maven国内源:

<settings>
    <mirrors>
        <!-- 阿里云镜像 -->
        <mirror>
            <id>aliyun</id>
            <mirrorOf>*</mirrorOf>
            <url>https://maven.aliyun.com/repository/public</url>
        </mirror>
        <!-- 华为云镜像 -->
        <mirror>
            <id>hwcloud</id>
            <mirrorOf>*</mirrorOf>
            <url>https://mirrors.huaweicloud.com/repository/maven/</url>
        </mirror>
        <!-- 清华大学镜像 -->
        <mirror>
            <id>tsinghua</id>
            <mirrorOf>*</mirrorOf>
            <url>https://mirrors.tuna.tsinghua.edu.cn/maven/</url>
        </mirror>
        <!-- 中科大镜像 -->
        <mirror>
            <id>ustc</id>
            <mirrorOf>*</mirrorOf>
            <url>https://mirrors.ustc.edu.cn/maven/</url>
        </mirror>
    </mirrors>
</settings>

项目启动

项目代码在docker内运行,使用docker-compose.yml管理。docker和docker-compose的安装见往期文章。

构建docker镜像:

# java8基础镜像
FROM registry.cn-hangzhou.aliyuncs.com/mybud/java18:lastest

# 作者信息
MAINTAINER xxm1995@outlook.com

# 时区设置
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 启动命令
ENV JAVA_COMM="-Djava.security.egd=file:/dev/./urandom -Dfile.encoding=UTF-8"
# 启动选项配置
ENV JAVA_OPTS=""
# Agent配置
ENV JAVA_AGENT=""
# 参数配置
ENV JAVA_ARGS=""
# 工作目录
WORKDIR /

# 端口暴露
EXPOSE 9001

# 添加执行jar包
ADD daxpay-single-start/target/daxpay-start.jar dax-start.jar

# 执行启动命令
CMD java $JAVA_OPTS -jar dax-start.jar

构建命令:

docker build -t dax-start:latest .

docker-compose.yml内容

version: '3'
services:
  platform:
    image: dax-start:latest
    restart: always
    ports:
      - "9001:9001"
    environment:
      - JAVA_OPTS=-Xmx512m -Dconfig.file=/application.yml
      - JAVA_ARGS=--config /application.yml
      - JAVA_AGENT=
    volumes:
      # 读取外部化配置文件(根据实际服务器环境做修改), 宿主机目录:容器目录
      - ./runtime/logs:/logs # 日志
      - ./data/files:/data/files # 上传文件目录
      - ./config/application.yml:/application.yml
      - ./data/ip2region/ip2region.xdb :/data/ip2region/ip2region.xdb # ip归属地数据库

前端代码

因为项目采用前后端分离架构,前端代码需要单独构建。构建后将代码传输到服务器,然后用nginx服务器提供服务。
# 安装node和pnpm环境,博主是mac系统:
brew install node@16  pnpm@8

# 配置环境变量
echo 'export PATH="/opt/homebrew/opt/node@20/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/opt/homebrew/opt/pnpm@8/bin:$PATH"' >> ~/.zshrc

# 配置国内源
pnpm config set registry https://registry.npmmirror.com

# 项目构建
pnpm install   
pnpm build

nginx服务

服务有nginx代理静态资源,前端放caddy用于自动申请ssl证书。

nginx配置:

server {
    listen     803;
    server_name  0.0.0.0;
    root  /www/web/daxpay;
    server_tokens off;

    access_log /www/web_logs/daxpay_access.log wwwlogs;
    error_log  /www/web_logs/daxpay_error.log  notice;

    client_max_body_size 50m;

    index index.html;

    location /server/ {
        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://10.0.16.8:9001/;
        proxy_redirect default;
        # 处理跨域
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Headers X-Requested-With;
        add_header Access-Control-Allow-Methods *;
    }

    location /ws/  {
        proxy_pass http://10.0.16.8:9001/server/;        #通过配置端口指向部署websocker的项目
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header X-real-ip $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
    }

    location ~* \.(eot|ttf|woff|woff2|svg)$ {
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Headers X-Requested-With;
        add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
        expires      30d;
    }
    location ~ .*\.(js|css)?$ {
        expires      12h;
    }
}

caddy2代理配置:

dpay.xinruihuirong.com {
    tls xinruihuirong@139.com
    encode gzip
    log {
        output file /logs/dpay.log {
            roll_size_mb 50
        }
    }
    header / {
        Strict-Transport-Security "max-age=31536000;includeSubdomains;preload"
    }

    reverse_proxy 10.0.16.8:803
}

至此所有配置完成。可以通过web登录后台,配置账号,支付通道等。

评论 (0)

取消
只有登录/注册用户才可评论