CentOS 上部署 Java 微服务的实用方案
一 环境准备与目录规范
yum update -y && yum install -y wget curl vimuseradd -m -s /bin/bash javaapp/home/javaapp/soft(安装包)、/home/javaapp/app(微服务 JAR)、/home/javaapp/app/logs(日志)chown -R javaapp:javaapp /home/javaappyum install -y java-1.8.0-openjdk*二 方式一 直接运行可执行 JAR
/home/javaapp/app/<服务名>/,配置文件放入同目录或子目录(如 config/)java -jar /home/javaapp/app/<服务名>/<app>.jarnohup java -jar /home/javaapp/app/<服务名>/<app>.jar > /home/javaapp/app/logs/<服务名>.log 2>&1 &jps -l 或 ps -ef | grep javakill -15 <PID>(先优雅,必要时 kill -9)三 方式二 使用 systemd 托管 JAR(推荐用于生产)
/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 eurekajournalctl -u eureka -f四 方式三 Docker 容器化部署(可配合 docker-compose)
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.0version: "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
command 中使用 sleep 等手段做启动顺序协调;容器网络下,应用配置中的数据库/注册中心地址应使用宿主机 内网 IP 或服务名(同一 compose 网络)五 网络与防火墙及常见问题
firewall-cmd --permanent --add-port=8080/tcp --add-port=8761/tcp && firewall-cmd --reloadsystemctl stop firewalld-Djava.security.egd=file:///dev/urandom 可加速 JVM 启动