前言

本文介绍Jeepay Plus支付系统云服务环境部署,以下部署是在阿里云4核8G服务器部署,其他环境安装仅供参考。

注:以下部署内容需要有一定java和运维经验,如不懂如何部署可联系官方收费技术支持服务,Tel:18611727422(同微信)。

以下部署环境适合测试环境,生成环境的部署可联系售后技术支持。

环境准备

1. 服务器准备

云服务器推荐购买阿里云(腾讯云 或 华为云)的主机,建议不低于以下配置:

操作系统 CPU 内存 带宽 其他
Linux CentOS 7.X 4核 8G 5M+(或弹性) 开发测试环境配置再低些也可以部署

注:如生产环境部署,建议至少8核16G配置,数据库建议使用RDS。

2. 基础软件安装

软件环境需安装:

软件名称 版本 说明
Jdk 1.8.0 java运行环境,在jdk1.8下开发,其他版本没测试(不支持OpenJdk) 需使用Oracle编译版本 且大于JDK1.8_121 (121会存在: SSLException: Received fatal alert: internal_error;不建议使用JDK1.8_381版本(会产生运行异常及/bcprov-jdk15to18包冲突等问题)推荐使用 java_1.8.0_261版本)
Redis 3.2.8 分布式缓存,高版本也支持
MySQL 5.7 不低于5.7,支持8.0高版本, 推荐8.0
MQ ActiveMQ(推荐) 或 RabbitMQ 或 RocketMQ 消息中间件

ActiveMQ适配版本: apache-activemq-5.15.16(开启延迟配置)

rabbitMQ适配版本:Erlang/OTP 24.0 / rabbitmq-server-3.8 , 请安装延迟插件: https://www.rabbitmq.com/community-plugins.html

RocketMQ适配版本:rocketmq-4.9.0(需要设置自动创建topic)
Nginx x 非必须,反向代理使用,其他版本也支持
Maven 3.6.3 项目构建工具 版本:<=3.8.1 , 推荐: Apache Maven 3.6.3

以上软件请自行安装,MySQL、Redis、Nginx 的安装也可使用宝塔安装,宝塔下如何安装请自行查阅文档。

服务端部署

1. 项目下载

购买jeepay plus后,联系售后技术支持获得最新服务端源码。

2. 项目编译

使用命令行进入项目内(应该在jeepay项目最外层的pom.xml中, 不可进入到jeepay-manager项目下执行,否则会出现问题)

$ mvn package

注意: windows 建议使用 【cmd】 , 若使用【powershell】可能会出现问题。
其他知识点: powershell 添加参数需要使用: mvn package ‘-Dmaven.test.skip=true’ 添加引号的方式, 否则会报错。

编译成功后,会在每个模块的target目录下生成以下名字的.jar文件,如下:

jeepay-agent/target/jeepay-agent.jar
jeepay-bill/target/jeepay-bill.jar
jeepay-manager/target/jeepay-manager.jar
jeepay-member/target/jeepay-member.jar
jeepay-merchant/target/jeepay-merchant.jar
jeepay-payment/target/jeepay-payment.jar

3. 项目启动

1) 项目启动前的准备

a. 字体安装 (推荐使用开源字体https://www.alibabafonts.com/#/font): 详见后端源代码中(/docs/fonts/字体.7z)压缩包里包含字体文件和安装说明。 【使用码牌需安装,否则将显示 方块字体】

b. 若使用的 ActiveMQ,  需要开启延迟消息配置 `schedulerSupport=“true”` 参考: https://blog.csdn.net/weixin_42869411/article/details/109072107  【未配置将出现通知商户没有延迟效果】

c. 解除java加解密的无限制权限: 进入:【 https://docs.jeequan.com/docs/jeepay/jeepay-1d99ciatu11h5#g5exgq 】  搜索 Illegal key size 关键字

2)使用 root 用户登录云服务器,创建 jeepay 用户。切换到 jeepay 用户,并在 /home/jeepay 目录下创建 service 和 upload 文件目录。参考命令如下:

# 创建用户
useradd jeepay
# 切换用户
su jeepay
# 进入目录
cd /home/jeepay/
# 创建目录service和upload
mkdir service && mkdir upload

3)在 service 目录下创建目录 manager 、 agent 、merchant 、 payment 目录,然后将上面编译后的.jar文件分别传入对应的目录下。参考如下命令:

# 进入到service目录下
cd /home/jeepay/service
# 创建目录manager,agent,merchant,payment,bill,member
mkdir manager && mkdir agent && mkdir merchant && mkdir payment && mkdir bill && mkdir member

4)初始化数据库

在msyql5.7 或 mysql8.0下创建数据库 jeepaydb ,用户 jeepay ,密码 123456 (数据库和账号密码可自己设定,密码不要过于简单)。

参考数据库说明:https://docs.jeequan.com/docs/jeepay-plus/jeepay-plus-1doq37i2jnsf1 执行SQL语句,初次部署执行init开头的文件,确保所有语句执行成功。

5)以启动 manager 项目为例

将项目下 docs/scpript/app.sh 、conf/manager/application.yml 文件上传至 /home/jeepay/service/manager 下。此时manager目录下应该有 jeepay-manager.jar、app.sh、application.yml 三个文件。

修改 application.yml 中的配置为你自己环境对应配置,主要涉及:服务端口、数据库连接配置、Redis配置、MQ配置等。

# 启动项目,常用命令:start 启动程序   stop 停止程序  restart 重启程序
sh ./app.sh start
# 查看系统日志
tail -f ./logs/mgr.all.log
# 如果日志没内容,可能启动失败,查看start.log日志排查
tail -f ./start.log

其他项目:agent 、 merchant 、payment、bill、member 参考manager项目启动。

4. 定时任务

在jeepay plus v2.9.1版本以后,引入了xxl-job分布式定时任务。可更好的支持jeepay的分布式环境部署,同时对任务分片等有更好的支持。

部署步骤参考上面的manager项目部署,注意以下几点:
1)修改的配置文件为 application.properties,主要修改数据库配置。
2)目前jeepay中payment项目使用了定时任务,需要修改payment项目中application.yml文件中xxl-job的配置。
3)如果有防火墙,切记开放端口。需开放payment所在服务器的执行器端口9316,开放xxl-job-admin所在机器的9300端口(访问任务管理平台需要)。
4)xxl-job-admin管理平台地址:http://ip:9300/xxl-job-admin ,账号:admin,密码:123456 。
5)如管理平台显示任务执行失败,需要查看执行器(payment项目)是否启动,端口是否开放等。

Web管理端部署

1. 项目下载

购买jeepay plus后,联系技术支持获得最新前端源码。管理端需要部署运营平台、代理商系统、商户系统。

2. 项目编译

1)项目下载后在 jeepay-plus-ui 下会有三个目录,分别是:

jeepay-ui-manager:运营平台对应的前端代码
jeepay-ui-agent:代理系统对应的前端代码
jeepay-ui-merchant:商户系统对应的前端代码

2)以 jeepay-ui-manager 为例

进入到目录 jeepay-ui-manager 下,修改服务端接口配置。修改文件 .env 中的 VITE_API_BASE_URL 配置,如果前端和服务端部署在同一域名下,该值留空,否则需要设置为服务端接口地址。

修改为manager服务地址,如:http://mgr.xxx.comhttp://202.112.102.18:9217 (域名和ip端口以你服务端真实部署为准)。

在 jeepay-ui-manager 根目录下,执行编译打包。参考如下命令:

# 安装依赖
npm install

# 打包文件
npm run build

注意: node 版本需要 >= v16.7.0

打包后,生成dist目录,将dist目录下所有文件上传至服务器,如: /home/jeepay/html/manager下。

其他 jeepay-ui-agent 和 jeepay-ui-merchant 参考 manager 的打包和部署。

Nginx配置

可以通过nginx,将上面部署的服务端和web端通过域名进行访问。一般需要准备5个域名(常用二级域名,如域名为:x.jeepay.vip)将域名mgr.x.jeepay.vip(运营平台),agent.x.jeepay.vip(代理系统),mch.x.jeepay.vip(商户系统),mbr.x.jeepay.vip(会员系统),pay.x.jeepay.vip(支付网关) 解析到服务器所在IP。如没有购买代理和会员系统,则不用准备代理和会员域名。

1. manager项目配置

upstream mgr-api {
    server 127.0.0.1:9217 weight=1 max_fails=2 fail_timeout=30s;
}

server
{
    listen 80;
    server_name mgr.x.jeepay.vip;
    index index.html index.htm ;
    root /home/jeepay/html/manager;

    #解决vue刷新404问题
    try_files $uri $uri/ /index.html;

    # 主页面不允许缓存(避免项目升级 空白页的问题)
    location /index.html {
      add_header Expires -1;
      add_header Cache-Control no-cache;
    }

    location /api/
    {
        proxy_next_upstream http_502 http_504 error timeout invalid_header;
        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://mgr-api;
        # 启用支持websocket连接
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

}

2. agent项目配置

upstream agent-api {
    server 127.0.0.1:9219 weight=1 max_fails=2 fail_timeout=30s;
}

server
{
    listen 80;
    server_name agent.x.jeepay.vip;
    index index.html index.htm ;
    root /home/jeepay/html/agent;

    #解决vue刷新404问题
    try_files $uri $uri/ /index.html;

    # 主页面不允许缓存(避免项目升级 空白页的问题)
    location /index.html {
      add_header Expires -1;
      add_header Cache-Control no-cache;
    }

    location /api/
    {
        proxy_next_upstream http_502 http_504 error timeout invalid_header;
        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://agent-api;
        # 启用支持websocket连接
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

}

3. merchant项目配置

upstream mch-api {
    server 127.0.0.1:9218 weight=1 max_fails=2 fail_timeout=30s;
}

server
{
    listen 80;
    server_name mch.x.jeepay.vip;
    index index.html index.htm;
    root /home/jeepay/html/merchant;

    #解决vue刷新404问题
    try_files $uri $uri/ /index.html;

    # 主页面不允许缓存(避免项目升级 空白页的问题)
    location /index.html {
      add_header Expires -1;
      add_header Cache-Control no-cache;
    }

    location /api/
    {
        proxy_next_upstream http_502 http_504 error timeout invalid_header;
        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://mch-api;
        # 启用支持websocket连接
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

}

4. member项目配置

upstream mbr-api {
    server 127.0.0.1:9221 weight=1 max_fails=2 fail_timeout=30s;
}

server
{
    listen 80;
    server_name mbr.x.jeepay.vip;
    index index.html index.htm;
    root /home/jeepay/html/member;

    #解决vue刷新404问题
    try_files $uri $uri/ /index.html;

    # 主页面不允许缓存(避免项目升级 空白页的问题)
    location /index.html {
      add_header Expires -1;
      add_header Cache-Control no-cache;
    }

    location /api/
    {
        proxy_next_upstream http_502 http_504 error timeout invalid_header;
        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://mbr-api;
        # 启用支持websocket连接
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

}

5. payment项目配置

两种方式: 选择一种即可。

A: 收银台前端文件, 直接使用后端java内置文件

upstream pay-api {
    server 127.0.0.1:9216 weight=1 max_fails=2 fail_timeout=30s;
}

server
{
    listen 80;
    server_name pay.x.jeepay.vip;
    index index.html index.htm;
    root /home/jeepay/html/payment;

    location /
    {
        proxy_next_upstream http_502 http_504 error timeout invalid_header;
        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://pay-api;
    }

}

B: 收银台前端放置到nginx, 需要将jeepay-ui-uapp-cashier 进行打包操作。

提示: 打包方式为 jeepay-ui-uapp-cashier 导入Hbuilder --> 发行 --> 网站-PC

打包后将文件放在/home/jeepay/html/payment/cashier目录下,包括 assets、static、index.html 。

upstream pay-api {
    server 127.0.0.1:9216 weight=1 max_fails=2 fail_timeout=30s;
}

server
{
    listen 80;
    server_name pay.x.jeepay.vip;
    index index.html index.htm;
    root /home/jeepay/html/payment;

    #解决vue刷新404问题
    try_files $uri $uri/ /cashier/index.html;

    location /api/
    {
        proxy_next_upstream http_502 http_504 error timeout invalid_header;
        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://pay-api;
    }

}

【扩展知识】
vue路由有两种模式 hash和history, 官方介绍: https://router.vuejs.org/guide/essentials/history-mode.html

初始账号

系统部署后初始账号密码。

运营平台

账号:jeepay
密码:jeepay123

代理商系统和商户系统账号在运营平台创建, 默认密码:jeepay666。创建账号的初始密码可通过运营平台配置。

演示环境

官方演示账号:https://docs.jeequan.com/docs/jeepay-plus/jeepay-plus-1doq35st0u4vu

官方支付体验地址:支付体验

文档更新时间: 2024-09-23 10:50   作者:大森林