在VPS上部署Java应用程序:从A到Z的分步指南
开发Java应用程序只是工作的一半。另一半同样重要的部分是在服务器上部署它。许多开发人员在将代码从本地机器迁移到远程VPS时会遇到困难。在本文中,我们将详细讲解在运行Ubuntu 22.04操作系统的虚拟专用服务器(VPS)上部署Java应用程序(以Spring Boot为例)的完整过程。您将学习如何配置环境、构建项目、将其作为服务运行,并通过Nginx和SSL确保安全访问。
1. 准备VPS并安装必要软件
在上传代码之前,需要先准备服务器。我们将使用Ubuntu 22.04 LTS。通过SSH连接到服务器:
ssh root@您的IP地址更新包管理器并安装基本工具:
apt update && apt upgrade -yapt install curl git -y现在安装OpenJDK 17(大多数现代项目推荐的版本):
apt install openjdk-17-jdk -y检查安装:
java -version您应该看到类似以下内容:
openjdk version "17.0.9" 2023-10-17接下来安装Maven用于构建项目(如果您使用Gradle,请相应替换命令):
apt install maven -ymvn -version至此,基本环境准备完成。
2. 构建Java应用程序并上传到服务器
在本地构建您的Java应用程序。进入项目的根目录并执行:
mvn clean package -DskipTests构建成功后,在target文件夹中会出现一个JAR文件(例如myapp-0.0.1-SNAPSHOT.jar)。现在需要将其上传到服务器。使用scp(在本地机器上执行):
scp target/myapp-0.0.1-SNAPSHOT.jar root@您的IP地址:/opt/myapp/在服务器上创建应用程序目录并移动文件:
mkdir -p /opt/myappmv myapp-0.0.1-SNAPSHOT.jar /opt/myapp/myapp.jar检查JAR文件是否就位,并手动启动进行测试:
cd /opt/myappjava -jar myapp.jar如果应用程序启动没有错误,则进入下一步。
3. 配置systemd以实现自动启动
为了使应用程序在系统启动时自动运行,并在崩溃时自动重启,我们需要创建一个systemd服务。
创建服务文件:
nano /etc/systemd/system/myapp.service粘贴以下内容(将youruser替换为运行应用程序的用户名,或保留root):
[Unit]Description=My Java Spring Boot ApplicationAfter=network.target
[Service]User=rootWorkingDirectory=/opt/myappExecStart=/usr/bin/java -jar /opt/myapp/myapp.jarSuccessExitStatus=143Restart=alwaysRestartSec=10
[Install]WantedBy=multi-user.target参数说明:
After=network.target— 服务在网络就绪后启动。Restart=always— 崩溃时自动重启。RestartSec=10— 重启前等待10秒。SuccessExitStatus=143— 正确处理停止信号。
现在激活并启动服务:
systemctl daemon-reloadsystemctl enable myappsystemctl start myapp检查状态:
systemctl status myapp您应该看到Active: active (running)。现在您的应用程序将自动启动