title: 一卡通v5系统安装部署手册 date: 2016-06-22 11:27:47 tags:

文件修改控制

修改日期版本修改内容修改人
2015-10-06v1.0建立夏凯祥
2016-06-22v1.1增加服务环境配置要求等内容汤成

部署环境

  • 系统拓扑图 网络拓扑图

  • 数据库 数据库包括一卡通核心交易数据库(Oracle 11g)和缓存服务数据库(Redis)。交易数据库安装配置有专门DBA负责;缓存数据库由实施工程师负责安装配置,缓存服务器要求 4核CPU,8G 内存,500G 硬盘,一块千兆网卡。

  • 应用服务器 应用服务器提供一卡通服务门户、一卡通管理平台业务功能。一般需要部署两台服务器作为应用集群。服务器要求 4核CPU,8G 内存,200G硬盘,一块千兆网卡。操作系统为 CentOS 7OracleLinux 7 64 位。

  • API 服务器 API 服务器提供一卡通平台业务服务API,提供给包括设备前置、第三方应用前置、支付宝微信等充值服务前置接入的 API 服务。至少部署两台服务器作为应用集群,现场需要根据实际负载情况考虑增加 API 服务器数量。服务器要求 4核CPU,8G 内存,200G硬盘,一块千兆网卡。操作系统为 CentOS 7OracleLinux 7 64 位。

  • nginx 代理服务器 nginx 代理服务器提供了对应用服务、API服务的反向代理服务。从安全性的要求,需要提供一卡通外网访问地址,并且服务器需要启用 HTTPS 安全访问方式。推荐使用学校申请的 HTTPS 安全证书,如果环境不具备可以选择自行颁发不受信证书。

    服务器要求 2核CPU,4G 内存,200G硬盘,两块千兆网卡。操作系统为 CentOS 7OracleLinux 7 64 位。

    nginx 服务必须提供容错和负载功能,有两种部署方案:

    • CDN 域名解析
    • LVS + Keepalived 容错服务
  • 各种前置服务 前置服务包括消费前置、门禁前置、微信支付宝充值服务前置、圈存前置等等。前置服务需要根据现场使用情况进行配置,无特殊要求下,前置服务器配置:2核CPU,4G 内存,200G硬盘,一块千兆网卡,操作系统为 CentOS 7OracleLinux 7 64 位。

    消费前置- 消费前置可以部署两台实现容错。消费网关可以配置连接两台消费前置,网关会自动判断请求正常的消费前置。

安装说明

Redis 服务安装配置

redis 服务可以通过 yum 快捷安装:

$ yum install -y redis
$ systemctl enable redis.service
$ vi /etc/redis.conf # 修改 redis 配置
$ systemctl start redis.service
$ systemctl status redis.service # 检查服务状态
 redis.service - SYSV: Starts and stops the redis daemon.
   Loaded: loaded (/etc/rc.d/init.d/redis)
   Active: active (running) since  2016-06-22 14:31:02 CST; 15s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 31203 ExecStop=/etc/rc.d/init.d/redis stop (code=exited, status=0/SUCCESS)
  Process: 31205 ExecStart=/etc/rc.d/init.d/redis start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/redis.service
           ├─30562 /usr/bin/redis-server 127.0.0.1:6379
           └─31059 /usr/bin/redis-server 172.28.201.101:6379
$ redis-cli ping  # 验证服务是否正常,正常情况下会响应 PONG
PONG

redis 配置内容如下:

bind: host_ip  # host_ip 是服务器一卡通专网 IP
maxmemory: 4G  # 最大内存 4G

应用服务/API 服务安装配置

应用服务/API服务(以下简称服务)都是采用 Java 平台部署,需要先安装 JDK 7 环境和 Tomcat 7 应用服务器。安装过程请使用 root 用户进行操作。

JDK 7 可以通过 Oracle 官方网站下载,安装过程如下:

$ tar xvfz jdk-7u79-linux-x64.tar.gz -C /usr/local
$ mv /usr/local/jdk1.7.0_79 /usr/local/jdk7

打开配置文件:vim ~/.bash_profile ,在尾部添加下面内容,然后重新登录

export JAVA_HOME=/usr/java/jdk7
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export JAVA_ENV=-Dfile.encoding=utf-8

为了简化配置,我们提供了标准配置好的 Tomcat 包,请通这里下载。下载后安装步骤如下:

$ tar xvfz apache-tomcat7-config.tar.gz -C /opt/tomcat

Tomcat 数据库连接配置需要通过加密配置,加密串可以通过密码管理服务或者请技术支持提供加密串。当获取加密配合后修改 conf/context.xml 文件。

启动、停止 Tomcat 服务方式如下:

$ cd /opt/tomcat/bin
$ ./startup.sh # 启动服务
$ ./shutdown.sh # 停止服务

nginx 代理服务器安装配置

nginx 代理服务安装步骤如下:

$ yum install -y nginx
$ systemctl enable nginx.service
$ vi /etc/nginx/nginx.conf
$ systemctl start nginx.service
$ systemctl status nginx.service
 nginx.service - Nginx Web Server
   Loaded: loaded (/etc/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since  2016-05-02 23:19:37 CST; 1 months 20 days ago
     Docs: http://nginx.org
 Main PID: 2607 (nginx)
   CGroup: /system.slice/nginx.service
           ├─2607 nginx: master process /usr/local/sbin/nginx
           └─2610 nginx: worker process

nginx.conf 配置模板如下,需要根据现场情况自行修改配置:

#user  nobody;
worker_processes  2;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    proxy_headers_hash_max_size 51200;
    proxy_headers_hash_bucket_size 6400;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx-access.log  main;

    sendfile        on;
    tcp_nopush     on;

    keepalive_timeout  65;

    gzip  on;

    upstream epay_balance {
      # 每个server表示一个服务地址
      server app1:8080 weight=5;
      server app2:8080 weight=5;
      keepalive 20;
    }

    upstream epayapi_balance {
      # 每个server表示一个服务地址
      server api1:8080 weight=5;
      server api2:8080 weight=5;
      keepalive 20;
    }

    # HTTPS server
    server {
        listen       8443 ssl;
        # 如果用户提供域名,请使用域名访问
        server_name  localhost;

        ssl_certificate      /etc/nginx/conf/server.crt;
        ssl_certificate_key  /etc/nginx/conf/server.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location = / {
          rewrite ^ https://$host:$server_port/epay/ permanent;
        }
        rewrite ^/epayapi/services/api/(.*)$ /epay/api/$1 break;
        
        location /epay {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $http_x_forwarded_for;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_pass http://epay_balance;
            proxy_redirect http:// https://;
        }

        location /epayapi {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $http_x_forwarded_for;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_pass http://epayapi_balance;
            proxy_redirect http:// https://;
        }
    }
}

数据库初始化

按照文件名顺序执行数据库初始化脚本

  • 0.create_tablespace.sql
  • 1.create_user.sql
  • 2.create_table_ecard.sql
  • 3.create_table_epay.sql
  • 4.create_view_ecard.sql
  • 5.create_procedure_epay.sql
  • 6.create_procedure_ecard.sql
  • 7.initdata_ecard.sql
  • 8.initdata_epay.sql
  • 9.update.sql

发布epay和epayapi

  • 发布epayapi

在服务器上安装好tomcat,上传epayapi的发布包,并解压生成epayapi文件夹。

修改epayapi配置文件。路径:tomcat/webapps/epayapi/WEB-INF/classes下的ksconfig.properties文件。修改对应前面安装的redis的ip和端口信息。

正常启动后,打开浏览器输入http://ip:port/epayapi/services/common/getsystemversion(ip为部署服务器的ip,端口port为默认8080的端口)会返回主机名+"-version"字样。

  • 发布epay

epay的发布和epayapi差不多。首先上传epay的发布包到tomcat/webapps并解压。生成epay文件目录。 同样根据实际情况修改tomcatepay/conf下的 context.xml 文件配置。