简介
开发Java应用程序只是成功的一半。第二个同样重要的部分是将应用高效部署到生产服务器。许多开发者在将应用从本地机器迁移到VPS时会遇到困难:环境配置、构建、后台运行以及安全性保障。本文将完整解析Java应用部署到VPS(虚拟专用服务器)的全流程——从购买服务器到配置HTTPS。所有步骤均包含代码示例和配置说明。
我们将使用Ubuntu 22.04 LTS作为VPS操作系统,示例应用为一个打包成JAR文件的简单Spring Boot REST应用。如果您使用其他框架(Jakarta EE、Micronaut、Quarkus),总体部署原则保持一致。
1. VPS准备与Java安装
1.1. 连接服务器
购买VPS后,您将获得IP地址、用户名(通常为root)以及密码或SSH密钥。通过终端连接服务器:
ssh root@your-server-ip如果使用SSH密钥,请指定密钥路径:
ssh -i /path/to/private_key root@your-server-ip1.2. 系统更新与Java安装
首先更新包管理器并安装Java开发工具包(JDK)。对于大多数现代Java应用,OpenJDK 17或21已足够:
apt update && apt upgrade -yapt install openjdk-17-jdk -y验证安装:
java -version您应该看到类似以下信息:
openjdk version "17.0.10" 2024-01-16 LTSOpenJDK Runtime Environment (build 17.0.10+7-Ubuntu-122.04.1)OpenJDK 64-Bit Server VM (build 17.0.10+7-Ubuntu-122.04.1, mixed mode, sharing)1.3. 环境变量配置(可选)
如果您的应用需要特定环境变量(例如JAVA_HOME),请将其添加到~/.bashrc或/etc/environment文件中:
echo "export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64" >> ~/.bashrcsource ~/.bashrc2. 构建应用并上传至服务器
2.1. 在本地机器上构建JAR/WAR
假设您有一个Maven项目。执行构建:
mvn clean package -DskipTests构建完成后,target/文件夹中会出现myapp-0.0.1-SNAPSHOT.jar(或.war)文件。
2.2. 上传JAR文件至VPS
使用scp将文件复制到服务器:
scp target/myapp-0.0.1-SNAPSHOT.jar root@your-server-ip:/opt/myapp/如果服务器上不存在应用目录,请创建:
mkdir -p /opt/myapp2.3. 检查服务器文件结构
上传后,确认文件已正确放置:
ls -la /opt/myapp/您应该能看到myapp-0.0.1-SNAPSHOT.jar。
3. 配置应用启动(systemd + Nginx)
3.1. 手动运行JAR文件(测试)
在配置持久化启动之前,确保应用能正常启动:
java -jar /opt/myapp/myapp-0.0.1-SNAPSHOT.jar --server.port=8080如果应用无错误启动,请继续创建systemd服务。
3.2. 创建systemd服务
Systemd允许Java应用作为守护进程(后台)运行,并在崩溃或服务器重启时自动重启。
创建服务文件:
nano /etc/systemd/system/myapp.service插入以下配置:
[Unit]Description=我的Java应用程序After=network.target
[Service]Type=simpleUser=rootWorkingDirectory=/opt/myappExecStart=/usr/bin/java -jar /opt/myapp/myapp-0.0.1-SNAPSHOT.j