在VPS上部署Java应用程序:分步指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

简介

开发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-ip


1.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 ~/.bashrc


2. 构建应用并上传至服务器

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/myapp


2.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

博客

书籍推荐