云主机如何运行Jar包?

HCRM技术_小炮 云主机 2025-09-18 2 0

核心思路

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)

第三步:上传 Jar 包到云主机

有几种常见方法:

方法 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, 对象存储等),可以直接在云主机上使用wgetcurl 下载。

wget https://example.com/path/to/your-app.jar

第四步:运行 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
简单后台运行nohupnohup java -jar app.jar > log.log 2>&1 &
生产环境systemd 服务sudo systemctl start myapp

对于正式项目,强烈推荐使用systemd 方式,它能提供最完善的服务管理功能。

文章摘自:https://idc.huochengrm.cn/zj/15959.html

评论