CentOS Java微服务如何搭建
导读:在 CentOS 上搭建 Java 微服务的实操指南 一 环境准备与基础组件 安装 JDK 8(OpenJDK):执行命令:sudo yum install -y java-1.8.0-openjdk-devel,验证:java -ver...
在 CentOS 上搭建 Java 微服务的实操指南
一 环境准备与基础组件
- 安装 JDK 8(OpenJDK):执行命令:
sudo yum install -y java-1.8.0-openjdk-devel,验证:java -version、javac -version。如使用 Oracle JDK,需自行下载并设置 JAVA_HOME。 - 创建运行用户与应用目录:建议非 root 部署,创建用户
javaapp,目录结构如/home/javaapp/soft(安装包)、/home/javaapp/app(微服务 JAR)、/home/javaapp/app/logs(日志)。 - 基础中间件按需安装:如 Redis 6.x(缓存/会话)、MySQL 5.7(业务库)、Zookeeper 3.4.x(Dubbo 注册中心)、或 Tomcat 9(War 部署/传统场景)。示例:Redis 编译安装、配置后台运行与 systemd 单元;Zookeeper 下载解压、复制并重命名
zoo_sample.cfg为zoo.cfg后启动。 - 防火墙放行端口:例如
firewall-cmd --add-port=8080/tcp --permanent & & firewall-cmd --reload(按实际端口调整)。
二 两种常见微服务落地方式
-
方式 A Spring Boot + Spring Cloud(内嵌容器,JAR 直跑)
- 构建:使用 Maven/Gradle 打包得到可执行 fat-jar。
- 运行:
- 前台调试:
java -jar app.jar - 后台运行:
nohup java -jar app.jar > /dev/null 2> & 1 & - JVM 建议:
-Xms512m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m,并输出 GC 日志便于排查。
- 前台调试:
- 配置:外置
application.yml,通过--spring.config.location=...指定;多环境用application-{ profile} .yml。 - 进程与日志:
jps查看 Java 进程;日志建议统一落盘到/home/javaapp/app/logs/。 - 服务治理:使用 Eureka/Consul/Nacos 做服务发现;网关用 Spring Cloud Gateway/Zuul;配置中心可选 Spring Cloud Config/Nacos。
-
方式 B Spring Boot + Dubbo(RPC 框架)
- 架构角色:Provider/Consumer/Registry/Monitor/Container。
- 注册中心:安装 Zookeeper(单机或集群),启动后用
./zkServer.sh status检查。 - 工程结构:定义 API 模块(接口与 DTO),Provider 实现并暴露服务,Consumer 引用并调用。
- 依赖示例(Dubbo 2.7.x + Zookeeper):
dubbo-spring-boot-starter:2.7.3与 Zookeeper 客户端依赖。 - 部署与验证:Provider/Consumer 分别打包为 JAR 在 CentOS 上运行,观察注册中心与服务调用日志。
三 部署与运维要点
- 进程管理:优先使用 systemd 托管(示例模板见下节),便于开机自启、日志轮转与统一启停;临时方式可用
nohup ... &并配合jps、kill。 - 配置与密钥:数据库、MQ、注册中心等敏感信息放入 外部配置 或 KMS/Vault,避免硬编码;不同环境使用独立 profile。
- 日志与监控:规范日志目录与滚动策略(如按天/按大小),接入 Prometheus + Grafana(Micrometer/Spring Boot Actuator),关键业务埋点。
- 网络与安全:仅开放必要端口;启用 HTTPS/TLS;对外网关做 限流/熔断/鉴权;数据库与中间件使用最小权限账号。
四 最小可用示例命令清单
- 安装 JDK 8
sudo yum install -y java-1.8.0-openjdk-develjava -version & & javac -version
- 以普通用户部署并后台运行(示例)
su - javaappcd /home/javaapp/app/order-service- 前台试跑:
java -jar order-service-0.0.1-SNAPSHOT.jar --spring.config.location=./application-prod.yml - 后台常驻:
nohup java -Xms512m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:./logs/gc.log -jar order-service-0.0.1-SNAPSHOT.jar --spring.config.location=./application-prod.yml > ./logs/run.log 2> & 1 & - 查看进程:
jps或ps -ef | grep java
- 停止服务(先查 PID 再 kill)
jps获取进程号 PIDkill -9 < PID>(生产建议优雅停机:kill < PID>或调用 Actuator shutdown)
- 防火墙放行示例端口
firewall-cmd --add-port=8080/tcp --permanent & & firewall-cmd --reload
- 使用 systemd 托管示例(创建文件:/etc/systemd/system/order-service.service)
- 内容示例:
[Unit] Description=Order Service After=network.target [Service] Type=simple User=javaapp WorkingDirectory=/home/javaapp/app/order-service ExecStart=/usr/bin/java -Xms512m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -jar /home/javaapp/app/order-service/order-service-0.0.1-SNAPSHOT.jar --spring.config.location=./application-prod.yml SuccessExitStatus=143 Restart=on-failure StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target - 启用与启动:
sudo systemctl daemon-reloadsudo systemctl enable --now order-servicesudo systemctl status order-service- 查看日志:
journalctl -u order-service -f
- 内容示例:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Java微服务如何搭建
本文地址: https://pptw.com/jishu/769744.html
