使用SSH工具(如Windows的PuTTY、Mac/Linux的终端)连接到目标Debian服务器,命令格式如下:
ssh username@remote-server-ip
替换username为服务器用户名(如root或普通用户),remote-server-ip为服务器IP地址。连接成功后会进入服务器命令行界面。
Java应用需要JDK支持,推荐使用OpenJDK(开源且稳定)。以OpenJDK 17为例,执行以下命令:
sudo apt update # 更新系统软件包列表
sudo apt install openjdk-17-jdk # 安装OpenJDK 17
安装完成后,验证Java版本:
java -version
若输出类似openjdk version "17.0.xx"的信息,则说明安装成功。
将本地编译好的Java应用(如JAR/WAR文件)上传至服务器。常用scp命令(需本地安装OpenSSH):
scp /local/path/to/your-app.jar username@remote-server-ip:/remote/deploy/path
替换/local/path/to/your-app.jar为本地JAR文件路径,/remote/deploy/path为服务器目标目录(如/opt/java-apps)。
通过java -jar命令直接运行JAR文件(适用于Spring Boot等打包为可执行JAR的应用):
cd /remote/deploy/path # 进入应用目录
java -jar your-app.jar # 启动应用
若应用需要后台运行(避免终端关闭后停止),可使用nohup命令:
nohup java -jar your-app.jar > app.log 2>&1 &
日志会输出到app.log文件中。
若需应用随服务器重启自动运行,可使用systemd创建服务:
sudo nano /etc/systemd/system/your-app.service # 创建服务文件
在文件中添加以下内容(根据实际情况修改路径和用户):
[Unit]
Description=Your Java Application
After=network.target
[Service]
User=your-user # 替换为运行应用的用户(如`www-data`)
ExecStart=/usr/bin/java -jar /remote/deploy/path/your-app.jar
SuccessExitStatus=143
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
保存并退出(Ctrl+O→Enter→Ctrl+X),然后执行以下命令启用并启动服务:
sudo systemctl enable your-app.service # 启用开机自启动
sudo systemctl start your-app.service # 立即启动服务
查看服务状态:
sudo systemctl status your-app.service
若服务器启用了ufw防火墙,需开放应用监听的端口(如Spring Boot默认8080端口):
sudo ufw allow 8080/tcp # 开放8080端口
sudo ufw reload # 重新加载防火墙规则
验证端口是否开放:
sudo ufw status
若需隔离环境或快速部署,可使用Docker:
sudo apt update && sudo apt install docker.ioDockerfile,内容如下:FROM openjdk:17-jre-slim # 使用轻量级OpenJDK镜像
COPY target/your-app.jar /app/your-app.jar # 复制JAR文件到容器
WORKDIR /app
CMD ["java", "-jar", "your-app.jar"] # 启动命令
docker build -t your-java-app . # 构建镜像
docker run -d -p 8080:8080 --name my-java-app your-java-app # 运行容器(映射8080端口)
/etc/nginx/sites-available/default),添加反向代理规则:server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:8080; # 转发到Docker容器
}
}
重新加载Nginx:sudo systemctl reload nginx以上步骤覆盖了Debian系统Java远程部署的全流程,从环境准备到运行管理,可根据实际需求选择合适的方式(直接运行、systemd服务或Docker容器)。