Files
starRiverProperty/maven-cw-elevator-application/deploy/README.md
T
反编译工作区 ee9c0aa26d fix: relocate cwos-portal decompiled output to correct path; remove nested directory
Former-commit-id: 7a35ba61e92ede5d81f132d969713dabe7a27194
2026-04-29 12:11:22 +08:00

108 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 电梯应用双版本同路径部署
每个发行目录内 **JAR**、**`application.properties`**、**`application-access-control.properties`**(与生产 access-control 对齐)、**`bootstrap.properties`**Consul)与 **`redis-override.properties`** 位于**同一目录**。`run.sh` 使用:
```bash
--spring.config.location=file:./application.properties,file:./application-access-control.properties,file:./redis-override.properties
```
(说明见下文:Boot 1.5 下 jar 内 `classpath:/application.properties` 往往最后生效,仅靠外置文件盖不住密码;**profile=access-control** 的分表与门禁业务参数以外置 **`application-access-control.properties`** 为准,内容已与 **`星中心/cw-elevator-application-V1.0.0.20211103/application-access-control.properties`** 同步。)
## 目录
| 目录 | JAR | 端口(见配置首行) |
|------|-----|-------------------|
| `v1-legacy/` | `cw-elevator-application-V1.0.0.20211103.jar` | **18080** |
| `v2-maven/` | `cw-elevator-application-2.0.0.jar` | **18081** |
**`application.properties`**:在验证环境常用的 JDBC / Redis / Ribbon / Kafka / 端口等覆盖(数据库为生产还原时,请把 **jdbc-url、账号** 指到承载还原库的实例)。
**`application-access-control.properties`**:生产门禁侧参数(含 **ShardingSphere 分表 `2020..2030`**、门禁阈值、定时任务开关等),与 **星中心** 部署目录保持一致;更新时请从星中心同名文件覆盖后再提交。
属性文件最初由历史包 `cw-elevator-application-V1.0.0.20211103/application.properties` 演化而来;头部保留 **`server.port`**18080 / 18081)便于双实例并行(对拍 / API 套件)。
## 一次性同步 JAR
**`deploy/`** 下执行(需已存在 V1 原始 JAR;V2 优先用 `releases/v2.0.0/`,否则用 `cw-elevator-application-starter/target/`):
```bash
./sync-jars.sh
```
## 启动(两个终端)
```bash
cd v1-legacy && ./run.sh
```
```bash
cd v2-maven && ./run.sh
```
探活示例:`curl -s http://127.0.0.1:18080/actuator/health``18081`
## Consul`192.168.3.12` Docker
本仓库在 **`v1-legacy/bootstrap.properties`**、**`v2-maven/bootstrap.properties`** 中写入,并与 **V1 运行包 `bootstrap.properties` 中 Consul 段**对齐:
- `spring.cloud.consul.host=192.168.3.12`
- `spring.cloud.consul.port=8500`
- `spring.cloud.consul.enabled=true`
- `spring.cloud.consul.discovery.register=true`
- **`spring.cloud.consul.discovery.enabled=false`**(与 V1 一致:不作为 Consul **客户端**做服务发现)
- `spring.profiles.active=access-control`(与 V1 一致)
用于覆盖 fat-jar 内 **`10.128.161.95:8500`**,与 **`deploy/consul-docker`**`hashicorp/consul:1.22`)对齐。在同一目录执行 `./run.sh` 时,Spring Cloud 会加载上述 **`bootstrap.properties`**。
验证 Consul`curl -s http://192.168.3.12:8500/v1/status/leader`。浏览器打开 **`http://192.168.3.12:8500`** 可看 UI。
**说明**jar 内 **Dubbo / ZooKeeper** 仍可能指向旧 IP(如 `10.128.161.95:2181`);若启动报 ZK 连接失败,需在 **`application.properties`** 中另行改 Dubbo 注册中心(本次仅处理 Consul)。
### Feign `ninca-crk-std`Ribbon
**`spring.cloud.consul.discovery.enabled=false`**(与 V1 对齐)时,不从 Consul 拉 **`ninca-crk-std`** 实例,需在 **`application.properties`** 中配置 **Ribbon 静态列表**`ninca-crk-std.ribbon.*``ninca-crk-std.ip`),按环境改成可访问的 **`主机:端口`**。Maven 构建的 `cw-elevator-application-2.0.0.jar` 另含 `NincaCrkStdRibbonConfiguration`,避免 Edgware 下静态列表被忽略。
## Redis 与 `SPRING_APPLICATION_JSON`
fat JAR 的 `classpath:/application.properties` 会带内网旧 **host****password**;在 Spring Boot 1.5 下,同目录的 `application.properties` / `redis-override.properties` 往往**压不过** jar 里同文件(见上节说明)。
**当前做法**`deploy/merge-redis-json.sh` 读取各目录下的 **`redis-override.properties`**,生成一行 **`SPRING_APPLICATION_JSON`**(包含 `spring.redis.host` / `port` / `password`),由 `run.sh` **`export`** 后再启动 JVM,优先级高于打包配置。
- 默认已指向 **`redis-override.properties`** 中的地址与口令(若你的环境不一致,直接改该文件)。
- **临时覆盖口令**`SPRING_REDIS_PASSWORD='别的密码' ./run.sh`(若设为**空字符串**表示使用无密码 Redis)。
- 需要 **python3**
- **勿把生产口令提交到公开仓库**;团队协作时口令宜走密钥管理,`redis-override.properties` 仅作本机示例。
## 修改配置
直接编辑对应目录下的 **`application.properties`**、**`application-access-control.properties`**(与 JAR 同路径),重启进程生效。
**Consul KV** 中存在同名 `spring.shardingsphere.*` 等键,**运行时仍以 Consul 覆盖为准**,需与库表、本地文件三方对齐后再做生产模拟。
## 生产模拟时还可对齐的项(按需)
| 配置来源(星中心) | deploy 中对应位置 | 说明 |
|-------------------|------------------|------|
| `bootstrap.properties`Consul / Dubbo | `v1-legacy/bootstrap.properties` | 当前保留验证用 Consul 地址;生产 Consul host、Dubbo `zookeeper://...` 若需一致,在确认网络可达后按需合并(V2 构建一般不写 Dubbo)。 |
| `application.properties`jdbc/redis/kafka | 同上目录 `application.properties` + `redis-override.properties` | 还原库在哪台 MySQL、Redis 是否同生产,由你在本机改 URL/口令;**勿将生产口令提交到公开仓库**。 |
| `application-access-control.properties` | 已内置与星中心同内容 | 生产变更分表年限时,从星中心覆盖此文件。 |
## JDK 版本(避免 `InaccessibleObjectException` / CGLIB
历史 JAR 面向 **JDK 8**。本仓库在 **`deploy/common-java.sh`** 顶部用变量 **`DEPLOY_JDK8`** 写死默认路径(当前为 **`/usr/lib/jvm/java-8-openjdk-amd64`**)。换机器请只改这一处,或通过环境变量临时覆盖:
`DEPLOY_JDK8=/你的/jdk8 ./run.sh`
**默认**`run.sh` 使用 **`DEPLOY_JDK8`****不跟随** Conda 的 `JAVA_HOME`
- 坚持用当前 Shell 里的 Java(如 Conda JDK17):
`ELEVATOR_USE_ENV_JAVA=1 ./run.sh`
非 JDK8 时会自动追加 `--add-opens=...`
- 额外 JVM
`ELEVATOR_JAVA_OPTS="-Xmx512m" ./run.sh`
## Shell 脚本换行(若出现 `bash\r`
在 Windows 或某些编辑器下保存成 **CRLF** 会导致 `#!/usr/bin/env bash\r`。仓库根已有 **`.editorconfig`** 约束 `*.sh` 使用 **LF**;若再出现可执行:
`find . -name '*.sh' -type f -exec sed -i 's/\r$//' {} +`(在 `反编译` 根目录)