CentOS Java项目部署有哪些注意事项
小樊
38
2025-12-27 05:02:24
CentOS Java项目部署注意事项
一 系统与基础环境
- 选择稳定版本与基础资源:生产常用 CentOS 7/8,云上实例建议至少 2核4G,并具备固定公网IP与稳定网络,便于拉取依赖与对外服务。系统与应用均需及时更新补丁与内核/组件。
- 安全基线:仅开启必要端口与服务,禁用不必要的 root 直登与弱口令,采用 firewalld 做最小暴露(如仅开放 8080/3306/22 等),并定期安全审计与加固。
- Java 运行时:依据应用选择 JDK 8/11/17 等 LTS 版本;优先用包管理器安装 OpenJDK(如 java-1.8.0-openjdk-devel),便于维护与更新。
- 环境变量与多版本:统一在 /etc/profile.d/java.sh 中设置 JAVA_HOME/PATH,避免直接改动全局 profile;多版本用 alternatives --config java 切换,便于回滚与灰度。
二 部署与运行方式
- 打包与发布:传统 WAR 部署至 Tomcat/webapps;Spring Boot 通常打包为 JAR 直接运行。构建使用 Maven/Gradle,上传至服务器后启动。
- 进程管理:生产环境避免前台运行,使用 systemd 或 nohup java -jar app.jar & 托管进程,确保重启与开机自启;日志统一输出到 /var/log/ 便于采集与轮转。
- 端口与防火墙:如用 Tomcat 8080,需执行 firewall-cmd 放行并重载;云上安全组同样要放通对应端口。
- 反向代理与域名:建议前置 Nginx 做反向代理与静态资源服务,统一 80/443 入口、开启 gzip/缓存、设置合适的 proxy_read_timeout,对外隐藏后端端口与实现 HTTPS。
三 JVM 与性能调优
- 堆与 GC:根据物理内存与应用特性设置 -Xms/-Xmx(如 -Xms6g -Xmx6g 起步),选择匹配负载的垃圾回收器(如 G1GC),避免频繁 Full GC 与过早晋升。
- 容器与内存:在容器/虚拟化环境设置与容器一致的 -Xmx,避免超过 cgroup 限制导致 OOM 或容器被 kill。
- 连接与会话:合理设置 Tomcat maxThreads/acceptCount 与 JDBC 连接池(如 HikariCP 的 maximumPoolSize、idleTimeout),并启用连接泄漏检测。
- 监控与剖析:上线前与压测阶段使用 JMX/VisualVM/JProfiler 定位瓶颈;运行期结合 vmstat/htop/iostat 观察 CPU/内存/IO,配合 JMeter 做容量评估与回归压测。
四 安全加固
- 系统与网络:仅开放必要端口,限制数据库端口对公网访问,开启 firewalld 与云安全组策略;禁用不必要的内核模块与自启服务。
- 应用与数据:杜绝 SQL 注入/XSS/CSRF,启用 RBAC 最小权限;敏感配置(数据库、密钥)使用 配置中心/Secret 管理,禁止硬编码;开启 SSL/TLS 加密传输。
- 运行与审计:以非 root用户运行应用;关键目录与配置文件设置合适权限;启用 AuditD 记录关键文件与命令审计,集中日志留存与告警。
五 监控 日志 高可用与自动化
- 监控告警:对 CPU/内存/磁盘/网络 与 JVM GC/线程/HTTP 5xx 建立阈值告警;结合 JMX 与 APM(如 New Relic)做业务与性能可观测。
- 日志管理:统一日志格式与路径(如 /var/log/myapp/),使用 logrotate 做按日切分与保留;避免在生产打印敏感信息。
- 高可用与扩展:多实例部署 + Nginx/HAProxy 负载均衡,数据库主从/读写分离与定期备份;按流量与 SLA 规划水平扩容与灰度发布。
- 自动化交付:使用 Jenkins/GitLab CI 实现构建-测试-打包-部署流水线;基础设施即代码(如 Ansible)统一环境一致性;大规模或弹性场景优先考虑 Docker/Kubernetes。