Debian 迁移 Java 应用实操指南
一 迁移前准备与评估
二 在 Debian 上准备运行环境
sudo apt update && sudo apt install -y openjdk-17-jdkjava -version、javac -versionecho 'JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64"' | sudo tee -a /etc/environmentsource /etc/environment && echo $JAVA_HOMEsudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk-amd64/bin/java 300sudo update-alternatives --config javasudo ufw allow 8080/tcp(生产建议仅开放必要端口,并用反向代理/TLS)。三 迁移可执行 JAR 的步骤
java -jar /opt/app/myapp.jar --spring.profiles.active=prodnohup java -jar /opt/app/myapp.jar > /var/log/myapp/stdout.log 2>&1 &创建服务文件:`sudo tee /etc/systemd/system/myapp.service >/dev/null <<‘EOF’ [Unit] Description=My Java Application After=network.target
[Service] Type=simple User=myapp WorkingDirectory=/opt/app ExecStart=/usr/bin/java -jar /opt/app/myapp.jar --spring.profiles.active=prod SuccessExitStatus=143 Restart=always RestartSec=10 StandardOutput=journal StandardError=journal Environment=JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 EnvironmentFile=/opt/app/config/app.env
[Install] WantedBy=multi-user.target EOF`
启用与启动:sudo systemctl daemon-reload && sudo systemctl enable --now myapp && sudo systemctl status myapp
sudo tee /etc/nginx/sites-available/myapp >/dev/null <<'EOF' server { listen 80; server_name your.domain.com; location / { proxy_pass http://127.0.0.1:8080; 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; } } EOFsudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/ && sudo systemctl reload nginx四 迁移 WAR 到 Tomcat 的步骤
sudo apt install -y tomcat9sudo systemctl restart tomcat9 或 sudo systemctl status tomcat9五 容器化迁移与最佳实践
FROM openjdk:17-jre-slim
WORKDIR /app
COPY target/myapp.jar /app/app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app/app.jar"]
docker build -t myapp:1.0 .docker run -d -p 8080:8080 --name myapp myapp:1.0version: "3.8"
services:
app:
build: .
environment:
- SPRING_PROFILES_ACTIVE=prod
ports:
- "8080"
nginx:
image: nginx:1.25
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
depends_on:
- app