- bootstrap:discovery.enabled=false、注册字段与 access-control,与 V1 fat-jar 一致(宿主机仍 192.168.3.12) - application:v2-maven 使用 elevator-app、tomcat UTF-8;注释与静态 Ribbon 说明 - 新增 NincaCrkStdRibbonConfiguration + @RibbonClient,避免 Edgware 下 Feign 无可用实例 - deploy README 更新 Consul / ninca-crk-std 说明 Made-with: Cursor Former-commit-id: 0a6ac9552cb18403816120113c56f13876a5a11f
电梯应用双版本同路径部署
每个发行目录内 JAR、application.properties、bootstrap.properties(Consul)与 redis-override.properties 位于同一目录。run.sh 使用:
--spring.config.location=file:./application.properties,file:./redis-override.properties
(说明见下文:Boot 1.5 下 jar 内 classpath:/application.properties 往往最后生效,仅靠外置文件盖不住密码。)
目录
| 目录 | JAR | 端口(见配置首行) |
|---|---|---|
v1-legacy/ |
cw-elevator-application-V1.0.0.20211103.jar |
18080 |
v2-maven/ |
cw-elevator-application-2.0.0.jar |
18081 |
属性文件由历史包 cw-elevator-application-V1.0.0.20211103/application.properties 复制而来,仅在各自文件头部增加了 注释 与 server.port,便于双实例并行(对拍 / API 套件)。
一次性同步 JAR
在 deploy/ 下执行(需已存在 V1 原始 JAR;V2 优先用 releases/v2.0.0/,否则用 cw-elevator-application-starter/target/):
./sync-jars.sh
启动(两个终端)
cd v1-legacy && ./run.sh
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.12spring.cloud.consul.port=8500spring.cloud.consul.enabled=truespring.cloud.consul.discovery.register=truespring.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(与 JAR 同路径),重启进程生效。
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$//' {} +(在 反编译 根目录)