# 部署教程

# 简单部署

# 后端部署

# 部署命令

使用java -jar命令运行项目。


java -jar ****.jar

# linux下后台运行
nohup java -jar ****.jar > ****.log 2>&1 &

# 停止运行

  • window下关闭窗口,或者在命令窗口使用“Ctrl+C”。
  • linux下首先要找到PID(进程号),然后kill -9 PID
# 根据端口号找到PID
lsof -i:端口

# 直接杀死进程
kill -9 PID

# linux shell

linux下每次操作命令行都很麻烦。可以自己写简单的shell,运行服务。

如下例子

startup.sh:


#!/bin/sh

SERVER_NAME="hhh-api"
APP_NAME="$SERVER_NAME-2.0.0-SNAPSHOT.jar"

basepathForPlugins=$(cd `dirname -- $0`;cd ..; pwd)
logAddr="$basepathForPlugins/logs/$SERVER_NAME.log"
pidAddr="$basepathForPlugins/logs/$SERVER_NAME.pid"
configAddr="$basepathForPlugins/config/$SERVER_NAME.properties"
loadAddr="$basepathForPlugins/lib/$APP_NAME"

nohup java -jar -Xms256m -Xmx512m -Dspring.config.location=${configAddr} ${loadAddr} > $logAddr 2>&1 &
echo $! > $pidAddr
echo "$APP_NAME starting..."

shutdown.sh:


#!/bin/sh

SERVER_NAME="hhh-api"

basepathForPlugins=$(cd `dirname -- $0`; cd ..; pwd)
pidAddr="$basepathForPlugins/logs/$SERVER_NAME.pid"

PID=$(cat $pidAddr)
kill -9 $PID
rm -rf $pidAddr

# 前端部署

# nginx配置

server {
		
	listen       前端端口;
    server_name  127.0.0.1;
	
	location / {
		add_header Access-Control-Allow-Origin *;
		add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
		add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

		if ($request_method = 'OPTIONS') {
			return 204;
		}
		root   前端资源绝对路径;
		try_files $uri $uri/ /index.html;
		index  index.html index.htm;
	}
	
	error_page   500 502 503 504  /50x.html;
	location = /50x.html {
		root   /usr/share/nginx/html;
	}
}

# nginx命令


# 启动nginx
nginx -c nginx.conf

# 重启nginx
nginx -s reload

# 停止nginx
nginx -s stop

# 中台私有化部署

# 简介

# 部署架构图

img

# 环境准备

  • 需要准备linux服务器
  • 提前安装以下中间件
环境服务 说明
lsof 用于监控端口
jdk1.8 运行中台必备语言环境
nacos 要求设置认证密码
mysql 8.0版本
rabbitmq
redis 要求设置认证密码
nginx 前端启动使用
elasticsearch
minio 文件存储系统

# 服务清单

  • 无前端统一网关模式
服务id 服务名 端口 服务性质 是否允许外网访问
hhh-activit 30006 后端
hhh-auth 30015 后端
hhh-auth-ejxy 30016 后端
hhh-auth-pjxy 30017 后端
hhh-bot 30008 后端
hhh-system 30009 后端
hhh-transaction 30010(主进程)、30011(监听端口) 后端
usercenter 30014 后端
hhh-api 30007 后端
sev-subsystem 30013(主进程)、32014(运维日志子进程)、32015(xxl-job进程) 后端
hhh-filestore 30012 后端
hhh-zuul 后端接口统一网关服务 30020 后端
framework-app 移动端前端 30031 前端
framework-web 网页端前端 30001 前端
jxy-enterprise-web 管理后台前端 30002 前端
usercenter-web 用户统一登录认证前端 30000 前端
subsystem-web 运营端前端 30003 前端
  • 前端统一网关模式
服务id 服务名 端口 服务性质 是否允许外网访问
hhh-activit 30006 后端
hhh-auth 30015 后端
hhh-auth-ejxy 30016 后端
hhh-auth-pjxy 30017 后端
hhh-bot 30008 后端
hhh-system 30009 后端
hhh-transaction 30010(主进程)、30011(监听端口) 后端
usercenter 30014 后端
hhh-api 30007 后端
sev-subsystem 30013(主进程)、32014(运维日志子进程)、32015(xxl-job进程) 后端
hhh-filestore 30012 后端
hhh-zuul 后端接口统一网关服务 30020 后端
web-gateway 前端统一网关服务(技术中心提供方案) 30019 后端
framework-app 移动端前端 30031 前端
framework-web 网页端前端 30001 前端
jxy-enterprise-web 管理后台前端 30002 前端
usercenter-web 用户统一登录认证前端 30000 前端
subsystem-web 运营端前端 30003 前端

# 部署方式

# 手动部署

手动部署使用一键部署安装包

  • 初始化

A. 启动所有环境服务;

B. 将安装包解压到安装目录;

C. 进入bin目录,执行install.sh,按照提示,填写以下属性:

环境服务 说明
appId 应用id,用uuid生成一个即可。如果要接入运维平台,会用到
appName 应用名称。技术中台一般按照:[地区]+中台命名。如:黑龙江中台
nacosHost 服务访问nacos地址
nacosUsername nacos认证账号
nacosPassowrd nacos认证密码
mysqlIp mysql数据库访问ip地址
mysqlPort mysql数据库访问端口
mysqlUsername mysql数据库访问账号
mysqlPassword mysql数据库访问密码
rabbitmqHost rabbitmq访问ip地址
rabbitmqPort rabbitmq访问端口
rabbitmqUsername rabbitmq访问账号
rabbitmqPassword rabbitmq访问密码
redisHost redis访问ip地址
redisPort redis访问端口
redisPassword redis访问密码
redisDatabase redis访问的数据库序号,默认0
esHost elasticsearch地址(例如:http://192.168.1.1:9200)
minioHost minio地址(例如:http://192.168.1.1:9200)
minioKey minio用户Key
minioSecret minio的秘钥
minioBucket minio默认bucket
txLcnHost 分布式事务服务访问的IP地址
txLcnPort 分布式事务服务访问端口(开通内网访问即可),不能与部署清单的服务端口相同
httpType 访问协议类型,填写http或者https
backEndAddress 后端网关访问地址
appH5Address 移动端H5前端访问地址
usercenterAddress 用户中心前端访问地址
ejxyDomain 管理后台前端访问域名,没有域名填写[IP:端口]
pjxyDomain 网页端前端访问域名,没有域名填写[IP:端口]
subDomain 运营平台前端访问域名,没有域名填写[IP:端口]
fileAddress 文件存储路径,用安装目录下的data文件夹
pjxyWebPath 网页端[前端]静态资源绝对路径(在config/status/framework-web)
appWebPath 移动端[前端]静态资源绝对路径(在config/status/framework-app)
ejxyWebPath 管理后台[前端]静态资源绝对路径(在config/status/jxy-enterprise-web)
ucWebPath 用户中心[前端]静态资源绝对路径(在config/status/usercenter-web)
subWebPath 运营平台[前端]静态资源绝对路径(在config/status/subsystem-web)
  • 创建数据库

1、创建数据库cloud-usercenter

A. 字符集[utf8mb4 -- UTF-8 Unicode],排序规则[utf8mb4_0900_ai_ci];

B. 运行config\mysqlInitSQL文件夹下的cloud-centercloud.sql;

C. 运行config\mysqlInitSQL文件夹下的cloud-usercenter-sql.sql。

2、创建数据库hhh-activiti

A. 字符集[utf8mb4 -- UTF-8 Unicode],排序规则[utf8mb4_0900_ai_ci];

B. 运行config\mysqlInitSQL文件夹下的hhh-activiti.sql。

3、创建数据库hhh-system

A. 字符集[utf8mb4 -- UTF-8 Unicode],排序规则[utf8mb4_0900_ai_ci];

B. 运行config\mysqlInitSQL文件夹下的hhh-system.sql。

4、创建数据库hhh-filestore

A. 字符集[utf8mb4 -- UTF-8 Unicode],排序规则[utf8mb4_0900_ai_ci];

B. 运行config\mysqlInitSQL文件夹下的hhh-filestore-initial.sql。

  • 运行后端

A. 进入bin文件夹,使用startup.sh运行应用;

B. 登录nacos管理后台,服务管理中如果发现11个服务,则代表后端启动成功;

C. 过程可能需要20分钟。

  • 运行前端

A. 进入config/status

B. 打开nginx.conf

C. 将http内的4个server配置复制到nginx的配置文件中。

D. 重启nginx

  • 停止后端

进入bin文件夹,运行shutdown.sh。

# k8s部署

按照持续部署要求,和技术中心-运维部门提供的资源进行部署

# 部署清单

服务id 服务名 端口 服务性质 是否允许外网访问
hhh-activit 30006 后端
hhh-auth 30015 后端
hhh-auth-ejxy 30016 后端
hhh-auth-pjxy 30017 后端
hhh-bot 30008 后端
hhh-system 30009 后端
hhh-transaction 30010(主进程)、30011(监听端口) 后端
usercenter 30014 后端
hhh-api 30007 后端
sev-subsystem 30013(主进程)、32014(运维日志子进程)、32015(xxl-job进程) 后端
hhh-filestore 30012 后端
hhh-zuul 后端接口统一网关服务 30020 后端
web-gateway 前端统一网关服务(技术中心提供方案) 30019 后端
framework-app 移动端前端 30031 前端
framework-web 网页端前端 30001 前端
jxy-enterprise-web 管理后台前端 30002 前端
usercenter-web 用户统一登录认证前端 30000 前端
subsystem-web 运营端前端 30003 前端

# 综合一体化部署

# 简介

现在很多政务信息化系统推崇一体化系统,将零散的系统整合一起。我们不希望对独立系统大改,中台脚手架进行了整合一体化的优化。将综合一体化系统从应用层分为“主应用”和“子应用”,从服务层上说就是将所有原应用都当做系统的微服务。

“主应用”由数字中台提供部署、“子应用”由原系统负责部门部署。

# 部署架构图

img

# 环境介绍

# 中台私有化

中台私有化下,需要待中台私有化后才能进行部署。

# 中台公有云

直接在公有云下注册应用,走部署流程即可。

# 主应用部署

# 环境准备

环境服务 说明
lsof 用于监控端口(手动部署时需要提供)
jdk1.8 运行中台必备语言环境
nacos 要求设置认证密码
mysql 8.0版本
redis 要求设置认证密码
nginx 前端启动使用
zt2.1 中台2.1

# 服务清单

服务id 服务名 端口 服务性质 是否允许外网访问
main-platform 30018 后端
main-platform-app 移动端主应用前端 30031 前端
main-platform-web 主应用前端 30004 前端

# 部署方式

# 手动部署
  • 初始化

1、启动所有环境服务;

2、将安装包解压到安装目录;

3、进入bin目录,执行install.sh,按照提示,填写以下属性:

环境服务 说明
appId 应用id,用uuid生成一个即可。如果要接入运维平台,会用到
appName 应用名称。技术中台一般按照:[地区]+中台命名。如:黑龙江中台
nacosHost 服务访问nacos地址
nacosUsername nacos认证账号
nacosPassowrd nacos认证密码
mysqlIp mysql数据库访问ip地址
mysqlPort mysql数据库访问端口
mysqlUsername mysql数据库访问账号
mysqlPassword mysql数据库访问密码
redisHost redis访问ip地址
redisPort redis访问端口
redisPassword redis访问密码
redisDatabase redis访问的数据库序号,默认0
mainAgentId PC端应用id
mainAgentSecret PC端应用秘钥
mainAppAgentId APP端应用id
mainAppAgentSecret APP端应用秘钥
httpType 访问协议类型,填写http或者https
mainPlatformAddress 主应用后端地址
usercenterAddress 用户中心前端访问地址
pjxyDomain 网页端前端访问域名,没有域名填写[IP:端口]
ejxyDomain 管理后台前端访问域名,没有域名填写[IP:端口]
zgDomain 监督[前端]访问域名,没有域名填写[IP:端口]
zgAppDomain 监督移动[前端]访问域名,没有域名填写[IP:端口]
craneDomain 起重机械[前端]访问域名,没有域名填写[IP:端口]
dcDomain 数据中心[前端]访问域名,没有域名填写[IP:端口]
attnDomain 实名制[前端]访问域名,没有域名填写[IP:端口]
attnDeviceDomain 实名制设备[前端]访问域名,没有域名填写[IP:端口]
smzAppDomain 实名制移动端[前端]访问域名,没有域名填写[IP:端口]
jcjgDomain 检测监管[前端]访问域名,没有域名填写[IP:端口]
splAppDomain 检测监管移动[前端]访问域名,没有域名填写[IP:端口]
jcjgMgtDomain 文明施工[前端]访问域名,没有域名填写[IP:端口]
concDomain 商混[前端]访问域名,没有域名填写[IP:端口]
concAppDomain 商混移动[前端]访问域名,没有域名填写[IP:端口]
sjkDomain 深基坑[前端]访问域名,没有域名填写[IP:端口]
zhgdDomain 智慧工地[前端]访问域名,没有域名填写[IP:端口]
fcDomain 消防[前端]访问域名,没有域名填写[IP:端口]
mainPlatformWebPath PC主应用[前端]静态资源绝对路径(在config/status/main-platform-web)
mainPlatformAppPath 移动主应用[前端]静态资源绝对路径(在config/status/main-platform-app)
  • 运行后端

1、进入bin文件夹,使用startup.sh运行应用;

2、登录nacos管理后台,服务管理中如果发现11个服务,则代表后端启动成功;

3、过程可能需要20分钟。

  • 运行前端 1、进入config/status 2、打开nginx.conf 3、将http内的2个server配置复制到nginx的配置文件中。 4、重启nginx

  • 停止后端

进入bin文件夹,运行shutdown.sh。

# k8s部署

按照持续部署要求,和技术中心-运维部门提供的资源进行部署

# 子应用

# 子应用前端-独立端口

  • 根据数字中台提供的部署清单第三页——服务修改信息,按照其根据简单部署的步骤进行部署

# 子应用前端-无独立端口

  • 如果首次使用无独立端口部署,请先查阅微前端单端口部署文档,对前端进行改造。
  • 根据数字中台提供的部署清单第三页——服务修改信息,按照其根据简单部署的步骤进行部署
  • 部署完成后,由于前端使用的端口不能被外网访问,所以需要将部署成功后的信息反馈给数字中台。
  • 手动部署时:返回部署好的前端内网地址给中台
  • k8s部署:将部署好的前端容器名、容器内端口、前端标识给到中台。