1、连接到你的云主机。
2、 确保云主机上安装了Java 运行环境 (JRE)。
3、 将你的 Jar 包上传到云主机。
4、运行 Jar 包。
5、(可选) 保持程序在后台运行,并管理进程。
通常使用 SSH 协议进行连接。
Windows 用户可以使用 PuTTY 或 Windows Terminal / WSL 中的ssh
命令。
macOS / Linux 用户直接打开终端使用ssh
命令。
连接命令格式:
ssh username@your_server_ip
username
你的云主机操作系统用户名,例如root
,ubuntu
,ec2-user
等。
your_server_ip
你的云主机的公网 IP 地址。
ssh root@123.123.123.123
然后输入密码(如果使用密钥登录,可能需要指定密钥文件,如ssh -i /path/to/your-key.pem username@ip
)。
第二步:安装 Java 环境 (如果尚未安装)
你的 Jar 包需要特定版本的 Java 才能运行,请先确认你的 Jar 包需要的 Java 版本(如 Java 8, 11, 17 等)。
1、更新软件包列表:
sudo apt update # 适用于 Ubuntu/Debian # 或 sudo yum update # 适用于 CentOS/RHEL
2、安装 Java:
安装 JRE (Java Runtime Environment) - 仅用于运行程序
# 安装 OpenJDK 11 JRE (推荐) sudo apt install openjdk-11-jre # Ubuntu/Debian sudo yum install java-11-openjdk # CentOS/RHEL
安装 JDK (Java Development Kit) - 包含 JRE,如果需要编译或其他工具
sudo apt install openjdk-11-jdk # Ubuntu/Debian sudo yum install java-11-openjdk-devel # CentOS/RHEL
3、验证安装:
安装完成后,通过以下命令检查版本,确认安装成功:
java -version
输出应类似:
openjdk version "11.0.19" 2023-04-18 OpenJDK Runtime Environment (build 11.0.19+7-post-Ubuntu-0ubuntu122.04.1) OpenJDK 64-Bit Server VM (build 11.0.19+7-post-Ubuntu-0ubuntu122.04.1, mixed mode, sharing)
有几种常见方法:
方法 A:使用 SCP 命令 (命令行,最常用)
在你本地电脑的终端中执行,而不是在云主机的 SSH 会话中。
scp /path/to/your/local/file.jar username@your_server_ip:/path/on/server/
将本地的app.jar
上传到云主机的/home/ubuntu/
目录:
scp ./app.jar ubuntu@123.123.123.123:/home/ubuntu/
方法 B:使用 SFTP 客户端 (图形化界面)
使用 FileZilla, WinSCP 等工具,连接方式与 SSH 类似,使用主机 IP、用户名和密码/密钥,然后拖放文件即可。
方法 C:直接下载
如果你的 Jar 包已经在互联网上(如 GitHub Releases, 对象存储等),可以直接在云主机上使用wget
或curl
下载。
wget https://example.com/path/to/your-app.jar
上传后,在云主机的 SSH 终端中,进入 Jar 包所在的目录。
最简单的前台运行:
java -jar your-app.jar
这时程序会在前台运行,输出日志会直接打印在终端上。一旦你关闭 SSH 窗口,程序就会停止。
直接使用java -jar
会随着 SSH 会话的结束而终止,因此我们需要使用一些方法来让它在后台持续运行。
方法一:使用nohup
和&
(简单快速)
nohup
命令可以让进程忽略挂断信号(SSH 断开时发出的信号),&
让进程在后台运行。
nohup java -jar your-app.jar > output.log 2>&1 &
nohup
保证进程不会随着终端关闭而退出。
> output.log
将标准输出重定向到output.log
文件。
2>&1
将标准错误(2)也重定向到标准输出(1)所在的地方(即同一个日志文件)。
&
在后台运行。
查看输出和日志:
tail -f output.log # 实时查看日志尾部
关闭进程:
1、 找到进程 ID (PID):
ps aux | grep java
2、 使用kill
命令终止进程:
kill <PID>
方法二:使用systemd
创建系统服务 (生产环境推荐)
这是最专业、最可靠的方法,它可以实现开机自启、自动重启、集中管理日志等。
1、创建一个服务配置文件,例如myapp.service
:
sudo vim /etc/systemd/system/myapp.service
2、写入以下配置内容(根据你的实际情况修改):
[Unit] Description=My Java Application # 服务描述 After=syslog.target network.target # 在网络就绪后启动 [Service] User=ubuntu # 运行此服务的用户,建议使用非root用户 ExecStart=/usr/bin/java -jar /home/ubuntu/your-app.jar # 启动命令的绝对路径 SuccessExitStatus=143 Restart=always # 总是自动重启 RestartSec=10 # 重启前等待10秒 # 日志配置 (可选) StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target # 多用户模式下启用
3、重新加载 systemd 配置:
sudo systemctl daemon-reload
4、启动服务并设置开机自启:
sudo systemctl start myapp # 启动服务 sudo systemctl enable myapp # 启用开机自启
5、管理服务:
sudo systemctl status myapp # 查看服务状态和最新日志 sudo systemctl stop myapp # 停止服务 sudo systemctl restart myapp # 重启服务 sudo journalctl -u myapp -f # 实时查看服务的日志
如果你的 Jar 包是一个 Web 应用(如 Spring Boot),监听了某个端口(如 8080),你还需要在云服务商的控制台配置安全组规则,放行该端口的入站流量,否则无法从外网访问。
在阿里云、腾讯云、AWS 的控制台,找到你的云主机实例关联的安全组,添加一条规则:
类型自定义 TCP
端口范围8080
(或你的应用端口)
源0.0.0.0/0
(允许所有IP访问,或设置为特定IP更安全)
场景 | 推荐方法 | 命令示例 |
临时测试 | 前台运行 | java -jar app.jar |
简单后台运行 | nohup | nohup java -jar app.jar > log.log 2>&1 & |
生产环境 | systemd 服务 | sudo systemctl start myapp |
对于正式项目,强烈推荐使用systemd
方式,它能提供最完善的服务管理功能。
文章摘自:https://idc.huochengrm.cn/zj/15959.html
评论