# 部署教程
# 简单部署
# 后端部署
# 部署命令
使用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
# 中台私有化部署
# 简介
# 部署架构图

# 环境准备
- 需要准备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 | 前端 | 否 |
# 综合一体化部署
# 简介
现在很多政务信息化系统推崇一体化系统,将零散的系统整合一起。我们不希望对独立系统大改,中台脚手架进行了整合一体化的优化。将综合一体化系统从应用层分为“主应用”和“子应用”,从服务层上说就是将所有原应用都当做系统的微服务。
“主应用”由数字中台提供部署、“子应用”由原系统负责部门部署。
# 部署架构图

# 环境介绍
# 中台私有化
中台私有化下,需要待中台私有化后才能进行部署。
# 中台公有云
直接在公有云下注册应用,走部署流程即可。
# 主应用部署
# 环境准备
| 环境服务 | 说明 |
|---|---|
| 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部署
按照持续部署要求,和技术中心-运维部门提供的资源进行部署
# 子应用
# 子应用前端-独立端口
- 根据数字中台提供的部署清单第三页——服务修改信息,按照其根据简单部署的步骤进行部署
# 子应用前端-无独立端口
← 移动端