介绍Jeepay Plus支付系统云服务环境部署(Docker等其他部署方式,后续推出),以下部署是在阿里云4核8G服务器部署,其他环境安装仅供参考。

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

环境准备

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

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

软件环境需安装:

软件名称 版本 说明
Jdk 1.8 java运行环境,在jdk1.8下开发,其他版本没测试
Redis 3.2.8 分布式缓存,高版本也支持
MySQL 5.7 不低于5.7,支持8.0高版本
MQ ActiveMQ 或 RabbitMQ 或 RocketMQ 消息中间件
Nginx x 非必须,反向代理使用,其他版本也支持

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

服务端部署

  1. 项目下载

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

  1. 项目编译
mvn clean package -Dmaven.test.skip=true -Ptest

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

jeepay-manager/target/jeepay-manager.jar
jeepay-agent/target/jeepay-agent.jar
jeepay-merchant/target/jeepay-merchant.jar
jeepay-payment/target/jeepay-payment.jar
  1. 项目启动

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

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

2)在service目录下创建目录manager,agent,merchant,payment,然后将上面编译后的.jar文件分别传入对应的目录中。

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

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

执行项目下 docs/sql/init_0.sql docs/sql/init_1_t_sys_entitlement.sql docs/sql/channel.sql ,确保所有语句执行成功。

4)下面以启动manager为例

将项目下 docs/scpript/app.sh 上传到至 /home/jeepay/service/manager 下。

将项目下 conf/manager/application.yml 上传至 /home/jeepay/service/manager 下。

此时manager目录下应该有 jeepay-manager.jar、app.sh、application.yml 三个文件。

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

server:
  port: 9217 #设置端口
  servlet:
    context-path: / #设置应用的目录.  前缀需要带/, 无需设置后缀, 示例 【 /xxx 】 or 【 / 】

# 数据库的配置项, 自定义配置放置在配置顶层
db-config:
  master: #主库配置(必填)
    # yml填写url连接串, 无需将&符号进行转义
    url: jdbc:mysql://127.0.0.1:3306/jeepaydb?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true
    username: jeepay
    password: 123456
    encrypt-account: false # 连接账号和密码是否已加密。 true:db的账密需配置密文,函数详见 DBProp.main(); false: db账密请填写明文
    # 连接池配置项
    initial-size: 5 #初始化时建立物理连接的个数
    min-idle: 5 #最小连接池数量
    max-active: 30 #最大连接池数量
    max-wait: 60000 #获取连接时最大等待时间,单位毫秒
    # 检测相关
    test-while-idle: true # 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
    test-on-borrow: false # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
    test-on-return: false # 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
    time-between-eviction-runs-millis: 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
    min-evictable-idle-time-millis: 300000 #连接保持空闲而不被驱逐的最小时间
    validation-query: SELECT 1 FROM DUAL
    # 是否缓存preparedStatement
    pool-prepared-statements: false # 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
    max-pool-prepared-statement-per-connection-size: 20 # 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。
    # 配置监控统计拦截的filters,去掉后监控界面sql无法统计 通过connectProperties属性来打开mergeSql功能;慢SQL记录
    filters: stat,wall
    connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

  slave: #从库配置(可选), 若没有显式配置则使用master的配置项。 配置参数与master一致。

# spring-boot组件配置
spring:
  servlet:
    multipart:
      enabled: true #是否启用http上传处理
      max-request-size: 10MB #最大请求文件的大小
      max-file-size: 10MB #设置单个文件最大长度
  resources:
    static-locations: classpath:/static #项目静态资源路径 (可直接通过http访问)
  freemarker:
    template-loader-path: classpath:/templates  #freemarker模板目录
    template-encoding: UTF-8
    suffix: .ftl
    settings:
      classic_compatible: true # 如果变量为null,转化为空字符串,比如做比较的时候按照空字符做比较
      number_format: '#' #数字格式进行原样显示,不加格式化字符例如  100,00
  cache:
    type: redis
  redis:
    host: 127.0.0.1
    port: 6379
    database: 1    #1库:运营平台  #2库:商户系统 #3库:支付网关 #4库:代理商
    timeout: 1000
    password:

# #activeMQ配置 ( 注意: activeMQ配置项需在spring的下级 )
  activemq:
    broker-url: failover:(tcp://127.0.0.1:61616?wireFormat.maxInactivityDuration=0)  #连接地址
    in-memory: false # Jeepay项目不可使用内存模式, 需要连接多个消费者。
    user: system # activeMQ默认无需账密认证。 打开认证:activemq.xml添加simpleAuthenticationPlugin标签,账密在credentials.properties文件。
    password: manager
    pool:
      enabled: true
      max-connections: 10
      idle-timeout: 30000  # 空闲的连接过期时间,默认为30秒

  #日志配置参数。
  # 当存在logback-spring.xml文件时: 该配置将引进到logback配置,  springboot配置不生效。
  # 不存在logback-spring.xml 文件时, 使用springboot的配置, 同样可用。
logging:
  level:
    root: info   #主日志级别
    com.jeequan.jeepay: debug   #该项目日志级别,当需要打印sql时请开启为debug
  path: ./logs  #日志存放地址

#系统业务参数
isys:

  jwt-secret: t7w3P8X6472qWc3u #生成jwt的秘钥。 要求每个系统有单独的秘钥管理机制。

  #是否允许跨域请求 [生产环境建议关闭, 若api与前端项目没有在同一个域名下时,应开启此配置或在nginx统一配置允许跨域]
  allow-cors: true

  #是否内存缓存配置信息: true表示开启如支付网关地址/商户应用配置/服务商配置等, 开启后需检查MQ的广播模式是否正常; false表示直接查询DB.
  cache-config: false

  oss:
    file-root-path: /home/jeepay/upload #存储根路径 ( 无需以‘/’结尾 )
    file-public-path: ${isys.oss.file-root-path}/public #公共读取块  ( 一般配合root-path参数进行设置,需以‘/’ 开头, 无需以‘/’结尾 )
    file-private-path: ${isys.oss.file-root-path}/private #私有化本地访问,不允许url方式公共读取 ( 一般配合root-path参数进行设置,需以‘/’ 开头, 无需以‘/’结尾  )

  mq:
    vender: activeMQ  #  切换MQ厂商, 支持:【 activeMQ  rabbitMQ  rocketMQ  aliYunRocketMQ 】, 需正确配置 【对应的yml参数】 和 【jeepay-components-mq项目下pom.xml中的依赖包】。

启动manager项目:sh ./app.sh start
常用命令:start 启动程序 stop 停止程序 restart 重启程序

查看系统日志:tail -f ./logs/mgr.all.log 注:如果日志没内容,可能启动失败,查看start.log日志:tail -f ./start.log 看问题。

其他agentmerchantpayment 参考manager项目启动即可。

web端部署

  1. 项目下载

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

  1. 项目编译

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端口以你服务端真实部署为准)。

3)修改后按如下命令执行

进入到项目根目录,如jeepay-ui-manager下,执行:

安装依赖:npm install

打包文件:npm run build

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

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

Nginx配置

将域名mgr.x.jeepay.vipagent.x.jeepay.vipmch.x.jeepay.vippay.x.jeepay.vip解析到服务器IP

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 /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;
    }

}

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 /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;
    }

}

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 /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";
    }

}

payment项目配置

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/cashier;

    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;
    }

}

初始账号

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

运营平台

账号:jeepay
密码:jeepay123

代理商系统 商户系统

账号在运营平台创建, 默认密码:jeepay666。创建账号的初始密码可通过运营平台配置。

演示环境

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

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

文档更新时间: 2022-04-21 09:01   作者:大森林