Ubuntu Java应用部署指南
一 环境准备与Java安装
sudo apt update && sudo apt install openjdk-11-jdk -yjava -version、javac -versionsudo update-alternatives --config java(复制所选 JDK 的安装前缀,如 /usr/lib/jvm/java-11-openjdk-amd64)echo 'JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"' | sudo tee -a /etc/environmentsource /etc/environmentsudo apt install maven -y,验证:mvn -vsudo apt install gradle -y,验证:gradle -v二 构建与发布
java -jar /var/www/java-app/app.jarmvn clean package,产物在 target/yourapp.jargradle build,产物在 build/libs/yourapp.jarscp target/yourapp.jar user@server:/var/www/java-app/FROM eclipse-temurin:17-jre-jammy AS runtime
WORKDIR /app
COPY target/app.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.0
cd /usr/local
sudo wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.74/bin/apache-tomcat-9.0.74.tar.gz
sudo tar xzf apache-tomcat-9.0.74.tar.gz
sudo mv apache-tomcat-9.0.74 tomcat
export CATALINA_HOME=/usr/local/tomcat
$CATALINA_HOME/bin/startup.sh
三 运行与进程托管
[Unit]
Description=Java Web Application
After=network.target
[Service]
User=www-data
WorkingDirectory=/var/www/java-app
ExecStart=/usr/bin/java -jar /var/www/java-app/app.jar
SuccessExitStatus=143
TimeoutStopSec=10
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start java-app
sudo systemctl enable java-app
sudo systemctl status java-app
sudo journalctl -u java-app -f
sudo apt install nginx -yserver {
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;
}
}
sudo nginx -t && sudo systemctl restart nginxsudo ufw allow 80,443/tcp;如需直连应用端口:sudo ufw allow 8080/tcp。四 监控与维护
top/htop(安装:sudo apt install htop -y)jps -v、jstat、jstack、jmapsudo apt install python3-pip && pip3 install jtop 后运行 jtop)journalctl -u java-app -f五 安全与优化
-Xms512m -Xmx2g -XX:+UseG1GC-Djava.security.egd=file:/dev/./urandom-Dspring.profiles.active=prod 配合 server.shutdown=graceful