阅读量:3
CentOS 上部署 Java 微服务的实用方案
一 环境准备与目录规范
- 系统建议:CentOS 7/8,更新系统并安装常用工具:
yum update -y && yum install -y wget curl vim - 创建运行用户与目录(避免直接使用 root):
useradd -m -s /bin/bash javaapp- 目录:
/home/javaapp/soft(安装包)、/home/javaapp/app(微服务 JAR)、/home/javaapp/app/logs(日志) - 授权:
chown -R javaapp:javaapp /home/javaapp
- 安装 JDK 8(示例为 OpenJDK 8):
yum install -y java-1.8.0-openjdk* - 如需容器化,安装 Docker 与 Docker Compose(可选,见下文)
二 方式一 直接运行可执行 JAR
- 上传与目录:将各微服务的 JAR 上传至
/home/javaapp/app/<服务名>/,配置文件放入同目录或子目录(如config/) - 前台启动验证(排查错误优先):
java -jar /home/javaapp/app/<服务名>/.jar - 后台启动与日志:
nohup java -jar /home/javaapp/app/<服务名>/.jar > /home/javaapp/app/logs/<服务名>.log 2>&1 & - 查看进程:
jps -l或ps -ef | grep java
- 停止服务:
kill -15(先优雅,必要时kill -9) - 配置管理:通过外部化 application.yml / bootstrap.yml 或环境变量注入数据库、注册中心、MQ 等地址,避免硬编码
三 方式二 使用 systemd 托管 JAR(推荐用于生产)
- 以服务 eureka 为例创建单元文件:
/etc/systemd/system/eureka.service
[Unit]
Description=Eureka Service
After=network.target
[Service]
Type=simple
User=javaapp
Group=javaapp
Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="JAVA_OPTS=-Xms512m -Xmx1024m -Djava.security.egd=file:///dev/urandom"
WorkingDirectory=/home/javaapp/app/eureka
ExecStart=/usr/bin/java -jar /home/javaapp/app/eureka/eureka.jar
ExecStop=/bin/kill -15 $MAINPID
SuccessExitStatus=143
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
- 启用与启动:
systemctl daemon-reloadsystemctl enable --now eurekasystemctl status eureka
- 日志:
journalctl -u eureka -f - 说明:如采用 Tomcat/WAR 形态,也可用 systemd 托管 Tomcat 的启动脚本,思路一致
四 方式三 Docker 容器化部署(可配合 docker-compose)
- 单服务 Dockerfile(示例基于 openjdk:11)
FROM openjdk:11
VOLUME /tmp
ADD target/app.jar /opt/app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/opt/app.jar"]
- 构建与运行:
docker build -t app:1.0 .docker run -d -p 8080:8080 --name app app:1.0
- 使用 docker-compose 编排多服务(示例片段)
version: "3.8"
services:
eureka:
image: eureka:1.0
ports: ["8761:8761"]
environment:
- JAVA_OPTS=-Xms512m -Xmx1g
gateway:
image: gateway:1.0
ports: ["8080:8080"]
depends_on:
- eureka
config:
image: config:1.0
depends_on:
- eureka
- 编排要点:基础组件(如 Eureka/Config)优先启动,业务服务后启;必要时在
command中使用sleep等手段做启动顺序协调;容器网络下,应用配置中的数据库/注册中心地址应使用宿主机 内网 IP 或服务名(同一 compose 网络)
五 网络与防火墙及常见问题
- 防火墙与端口:
- 按需开放端口(示例):
firewall-cmd --permanent --add-port=8080/tcp --add-port=8761/tcp && firewall-cmd --reload - 或临时关闭防火墙(仅测试环境):
systemctl stop firewalld
- 按需开放端口(示例):
- 启动慢问题:添加
-Djava.security.egd=file:///dev/urandom可加速 JVM 启动 - 架构适配:在 ARM(鲲鹏) 服务器上,优先使用适配 aarch64 的 JDK 与基础镜像,并配置 鲲鹏镜像站 加速依赖安装
- 容器网络:避免将数据库、注册中心地址写为 localhost/127.0.0.1,应使用宿主机 IP 或服务发现机制
以上就是关于“CentOS Java微服务如何部署”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm