Linux 上 Java 分布式部署实操指南
一 架构与方案选型
二 快速落地步骤
三 示例配置与命令
[Unit]
Description=My Java App
After=network.target
[Service]
Type=simple
User=app
WorkingDirectory=/opt/app
ExecStart=/usr/bin/java -Xms2g -Xmx2g -jar /opt/app/app.jar --spring.profiles.active=prod
Restart=always
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
常用命令:systemctl daemon-reload
systemctl enable --now app
journalctl -u app -f
upstream backend {
server 192.168.100.2:8080 max_fails=3 fail_timeout=30s;
server 192.168.100.3:8080 max_fails=3 fail_timeout=30s;
keepalive 32;
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --zone=public --add-port=8848/tcp --permanent
firewall-cmd --reload
FROM openjdk:11-jre-slim
COPY target/app.jar /app.jar
CMD ["java","-jar","/app.jar"]
Kubernetes(示例):kubectl create deployment app --image=myorg/app:1.0 --replicas=3
kubectl expose deployment app --port=80 --target-port=8080
上述托管、Nginx 与防火墙示例适用于裸机/虚拟机部署;Docker/K8s 示例用于容器化与编排场景。四 生产级注意事项