云服务器上如何运行可运行jar包,jar包启动命令是什么?

在云服务器上运行可运行的jar包,核心就三步:上传jar包、安装Java环境、用命令或systemd启动并保持后台运行。 今天我用一套可直接照抄的流程,帮你把“能跑”变成“跑得稳”。

云服务器怎么运行jar包?先搞清楚这三件事

很多朋友第一次把jar包丢到云服务器上,直接敲java -jar app.jar,窗口一关服务就没了,或者外网死活访问不到,问题往往出在下面这三件事上:

linux jar服务的启动和停止写法
加载中
linux jar服务的启动和停止写法
  • 确认这个jar包本身能独立运行:本地执行java -jar app.jar,如果报“没有主清单属性”或缺少依赖,说明包没打对,先解决打包问题再谈部署。
  • 确认云服务器上Java环境版本匹配:用java -version查看,如果项目是JDK 8编译的,服务器上装了JDK 17,可能能跑,但某些框架会有兼容性警告;反过来老版本JDK跑新版class会直接报UnsupportedClassVersionError。
  • 确认端口、防火墙和云安全组都放行:这一步最容易被忽略,即使你本地测试一切正常,云服务器外网访问不了,八成是安全组没开端口,而不是程序的问题。

把这三件事捋顺,部署jar包就算走完了一半。

云服务器部署jar包完整步骤:从上传到启动

下面以Linux云服务器(CentOS/Ubuntu/Debian都适用)为例,带你走一遍完整流程。

第一步:把jar包上传到云服务器

常见做法有三种,根据你的使用习惯选一种即可:

  • scp命令上传(适合习惯终端的你):在本地电脑执行scp ./app.jar root@你的服务器IP:/opt/app/,回车后输入密码,注意/opt/app目录要先建好。
  • 宝塔面板上传(适合有可视化面板的你):登录宝塔,进入文件管理,找到目标目录,直接拖拽上传,操作感类似网盘。
  • 使用云厂商的对象存储中转(适合大文件):先把jar包传到OSS或COS,再通过内网下载到服务器,速度比公网scp快很多。

不管哪种方式,请把jar包放到固定目录,比如/opt/app/,后面所有命令和配置都基于这个路径。

第二步:检查并安装匹配的Java环境

先执行java -version看看有没有Java,如果没有,或者版本不对,按下面的命令安装OpenJDK(以Ubuntu为例):

sudo apt update
sudo apt install openjdk-8-jdk   # 如果你的项目基于JDK 8
sudo apt install openjdk-11-jdk  # 如果基于JDK 11
sudo apt install openjdk-17-jdk  # 如果基于JDK 17

CentOS使用yum install java-1.8.0-openjdk

云服务器上如何运行可运行jar包,jar包启动命令是什么?

或yum install java-17-openjdk,装完后再执行java -version确认,行业共识认为,Java 8和11依然是存量项目的主力,新项目选17或21的人也越来越多,但请务必以你项目编译时的版本为准。

第三步:启动jar包并保持后台运行

先在前台跑一次,确认无报错:

cd /opt/app
java -jar app.jar --server.port=8080

看到“Started Application in x seconds”之类的日志后,说明程序正常启动,这时Ctrl+C结束前台进程,然后改用后台方式启动:

nohup java -jar app.jar --server.port=8080 > app.log 2>&1 &

这条命令把日志写入app.log,进程进入后台,使用ps -ef | grep app.jar查看进程,使用tail -f app.log查看运行日志,但这种方式的缺点是:服务器重启后进程不会自动拉起,进程被误杀也不会自动恢复,所以更推荐下面的systemd方案。

用systemd把jar包做成系统服务

在/etc/systemd/system/app.service中写入配置:

[Unit]
Description=My Java Jar App
After=network.target
[Service]
ExecStart=/usr/bin/java -jar /opt/app/app.jar --server.port=8080
WorkingDirectory=/opt/app
Restart=always
RestartSec=10
User=root
[Install]
WantedBy=multi-user.target

然后执行:

systemctl daemon-reload
systemctl start app
systemctl enable app

这样无论进程崩溃还是服务器重启,服务都会自动拉起,这也是目前云服务器运行jar包的主流做法。

云服务器运行jar包常见问题:内存、端口、日志

内存不足怎么办?

很多云服务器默认只有2G内存,Spring Boot项目启动后可能直接报OutOfMemoryError,先用free -h查看内存用量,然后给JVM限定堆内存,比如给1G内存的分配512M:

java -Xms256m -Xmx512m -jar app.jar

如果还嫌不够,可以考虑增加swap分区,但性能不如物理内存,只适合应急。

端口被占用或外网访问不到?

端口被占用时执行lsof -i:8080或netstat -tlnp | grep 8080,找到占用进程PID后kill -9 PID即可。

外网访问不到,重点检查四件事:

  • 云安全组:登录云控制台,找到对应的服务器实例,在安全组规则中放行8080端口(入方向,源设为0.0.0.0/0)。
  • 系统防火墙:Ubuntu用ufw status查看,CentOS用firewall-cmd --list-all查看,如果开启,放行对应端口。
  • 监听地址:启动jar包时默认监听0.0.0.0,但如果你配置了

    云服务器上如何运行可运行jar包,jar包启动命令是什么?

    server.address=127.0.0.1,外网肯定访问不了,改成0.0.0.0或删掉该配置。

  • 程序本身的访问路径:访问时要带上下文路径,比如http://IP:8080/api。

日志怎么看?

使用tail -f app.log实时追踪日志,如果日志文件太大,用ls -lh app.log确认大小,超过几百M可以考虑配置logback按天滚动,排查问题最常用的命令就是journalctl配合systemd服务,不过前提是你用了systemd方案。

云服务器jar包部署用哪种方式好?直接命令、screen还是systemd

很多教程会让你用screen挂jar包,确实比nohup直观些,但论稳定性,三种方案各有优劣:

方式 优点 缺点 适用场景
nohup 简单、零学习成本 服务器重启不自动拉起,进程容易丢 临时测试、快速验证
screen 可挂载多个会话,方便查看 同样需要登录后手动恢复,且root权限下易误操作 轻量后台运行
systemd 开机自启、崩溃自动重启、日志统一管理 配置稍复杂,需了解systemd语法 生产环境、长期运行

多数情况下,我建议直接用systemd,它不只是“运行jar包”,而是把jar包当成一个服务来管理,这也是云服务器部署应用的标准姿势。

云服务器跑jar包要什么配置?

很多朋友爱问“1核2G够不够”这类问题,坦白讲,这取决于你的应用类型:

  • 纯API接口服务,并发不高:1核2G可以跑,JVM堆内存控制在512M-1G即可。
  • Spring Boot +MySQL + Redis,有一定业务逻辑:建议2核4G起步,留出数据库和缓存的空间。
  • 定时任务、数据处理类应用:CPU比内存更重要,同样2核4G起步。

如果担心内存不够,可以先用java -XX:+PrintFlagsFinal -version查看默认堆大小,再根据服务器实际内存调整-Xmx参数,需要注意的是,即使配置再高,JVM堆内存也该有上限,避免内存溢出拖垮整台服务器。

简米云服务器部署jar包与常见坑

以简米云为例,部署流程和通用步骤完全一致,但有两个简米云特有的“坑”值得单独说:

  • 安全组有两层:简米云控制台的云服务器ECS安全组需要放行端口,同时如果你还启用了云防火墙,也要一并放行,很多人只改了系统防火墙,忘了安全组,结果端口一直不通。
  • 云服务器上如何运行可运行jar包,jar包启动命令是什么?

  • 使用公网IP直连还要注意安全:如果直接裸奔8080端口,建议尽快改成通过Nginx反向代理到内部端口,并使用HTTPS证书。

这里插一句经验:酷番云服务器运行jar包时,经常遇到“nohup启动后SSH断开服务就挂掉”的问题,其实是因为启动后没有标准输入重定向,加上连接断开未完全杀掉进程组。 解决方法是把启动命令写成:

nohup java -jar app.jar </dev/null > app.log 2>&1 &

把</dev/null加上,再配合systemd,基本就不会出现断SSH丢进程的情况了。

云服务器运行jar包,如何保活和自启动?

这一步实际上是生产环境的最后一块拼图,除了systemd的Restart=always,你还可以配合定时健康检查:

/5     /usr/bin/health_check.sh

核心逻辑:检测进程是否存活,如果挂了就执行systemctl restart app,不过既然用了systemd,这个定时脚本并非必需,systemd已经能处理绝大多数异常退出场景。

简单总结:上传、配环境、启动,是云服务器运行jar包的基本动作;systemd负责保活和自启动,安全组负责外网访问,日志文件负责排查问题。 把这四件事串起来,你的jar包就能像正式服务一样稳定运行了。

云服务器运行jar包:3个高频问题

云服务器运行jar包提示“没有主清单属性”怎么办?

这个问题的全称是no main manifest attribute in app.jar,意思是jar包里缺少启动类信息,解决方法两步走:第一步,在pom.xml(Maven项目)或build.gradle(Gradle项目)里配置Main-Class;第二步,重新执行mvn clean package或gradle bootJar打包,检查打包后的MANIFEST.MF文件,确认里面有Main-Class一行即可。

jar包启动后外网访问不了,一定是程序代码问题吗?

不一定,按频率排序,首先是云安全组未放行端口,其次是服务器防火墙拦截,接着是jar包监听地址绑定到了127.0.0.1,最后才是程序本身逻辑或上下文路径不对,建议按这个顺序排查,大概率在安全组环节就能找到答案。

部署jar包用宝塔还是纯命令行?

两者都能完成部署,宝塔方便管理文件和进程,点几下就能上传、看日志、管理服务,适合不太熟悉Linux命令的运维,纯命令行更透明、路径可控,资源占用也更少,适合已经习惯终端操作的开发者,如果你要长期运行一个关键业务,我更推荐纯命令行加systemd,因为宝塔本身也会占用一部分内存。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/695983.html

赞 (0)
戴尔T110服务器怎么装Win7,安装失败怎么办?
上一篇 2026年9月28日 05:30
华为tm210服务器多少钱一台,参数配置及报价怎么样?
下一篇 2026年9月28日 05:44

相关推荐

  • LOL进游戏了不显示连接服务器失败怎么办,怎么回事?

    当你在英雄联盟中遇到进入游戏后没有弹出连接服务器失败的提示,但游戏却无法正常加载、卡在载入界面或频繁掉线时,核心解决思路是优先排查网络波动、客户端文件是否损坏以及后台程序冲突,99%的此类问题可以通过重置网络配置、修复游戏客户端或关闭防火墙解决,英雄联盟连接服务器失败解决方法:网络篇网络波动是导致“进游戏不显示……

    2026年8月14日
    1500
  • 服务器一直响个不停怎么关,是什么原因导致的

    服务器一直在响,先别急着找“关闭开关”——它是蜂鸣器告警、风扇全速还是硬盘异响,决定了你该关的是告警、是风扇策略,还是这台机器本身,前两种在带外管理里几分钟就能处理完,最后一种关不掉,只能换件,先分清响的是哪张嘴服务器不会无缘无故“叫”,声音的类型、节奏、出现时机,基本就把病因写在脸上了,贴着机柜听三十秒,比翻……

    程序编程 2026年11月8日
    900
  • 广西联通dns服务器地址是多少?最新dns设置方法

    广西联通DNS服务器的首选地址为211.137.241.35,备用地址为211.137.241.36,这是广西联通官方提供的最稳定、延迟最低的解析服务,在数字化生活日益普及的今天,网络连接的流畅度直接决定了我们的工作效率和娱乐体验,很多人遇到网页加载慢、视频卡顿或者游戏延迟高的问题时,第一反应往往是检查宽带线路……

    2026年5月28日
    5600
  • ASP.NET登录如何实现?详细教程与步骤指南

    ASP.NET登录功能深度解析与最佳实践ASP.NET登录功能的核心在于安全、高效地验证用户身份并管理会话状态,它依赖于一套成熟的认证与授权机制,结合ASP.NET Core Identity等框架,为开发者提供了构建企业级身份验证系统的坚实基础,ASP.NET登录核心机制剖析认证基础流程用户提交凭证:用户通过……

    2026年2月9日
    12000
  • 电视dns服务器不可用怎么解决,是什么原因

    电视提示“DNS服务器不可用”时,先别急着报修,多数情况下重启路由器和电视就能恢复;如果重启无效,把电视的DNS手动改为114.114.114.114或223.5.5.5,基本十分钟内就能解决问题,电视DNS服务器不可用是个老生常谈但毫无统一答案的毛病,有时发生在开机启动时,有时发生在播放中突然缓冲失败,更离谱……

    程序编程 2026年11月7日
    900
  • 我的世界国际服怎么进2b2t服务器,需要什么版本

    进入2b2t服务器需要购买正版Minecraft Java版,使用官方启动器添加服务器地址2b2t.org,然后经历数小时到数天的排队等待,没有白名单,人人可进,我的世界国际服2b2t服务器进入步骤详解进入2b2t的流程并不复杂,但很多新手卡在第一步或排队环节,下面按照操作顺序拆解,每一步都对应一个实际动作,准……

    2026年8月7日
    800
  • 虚拟主机免费试用要注意哪些坑?怎么选才靠谱?

    虚拟主机免费试用看似零成本入门,但实际使用中常遇到性能缩水、强制续费、数据迁移困难等问题,选择前务必仔细阅读服务条款,避免陷入免费陷阱,免费虚拟主机靠谱吗?试用期资源分配有猫腻多数人冲着“免费”二字注册试用,但真正用起来才发现,页面加载慢得像拨号上网,业内专家指出,免费试用套餐通常被安排在共享密度最高的节点上……

    2026年7月31日
    900
  • 上海大带宽服务器线路怎么选,哪个机房更稳定?

    上海大带宽服务器的线路选择,核心逻辑就一句话:国内业务为主选BGP多线,追求极致低延迟选CN2 GIA,外贸出海选CN2优化直连,这条结论不是拍脑袋,而是基于上海作为国内骨干网枢纽的特殊地位,上海的机房出口带宽资源全国领先,但线路水质参差不齐,选错线路的后果不是慢,而是绕路、丢包、高峰期直接卡死,下面拆开揉碎讲……

    2026年10月12日
    700
  • aspx环境aspx开发中遇到哪些常见问题与解决方案?

    ASPX环境本质上是指运行基于微软ASP.NET框架(特别是Web Forms技术)的Web应用程序(文件扩展名通常为.aspx)所需的技术栈、服务器配置和运行时支持的综合体系,其核心在于将服务器端.NET代码(C#或VB.NET)与HTML标记无缝融合,在Web服务器(主要是IIS)上动态生成HTML响应发送……

    2026年2月6日
    12500
  • aspx猜解之谜,揭秘ASP.NET页面背后的安全漏洞与防御策略?

    深入解析ASPX猜解:原理、风险与全方位防御策略ASPX猜解是一种针对ASP.NET Web应用程序的安全攻击手法,攻击者利用自动化工具或手动尝试,系统地猜测服务器上存在的ASPX页面或敏感文件(如备份文件、配置文件)的路径和名称,意图访问未授权资源、窃取敏感数据或发现可利用的安全漏洞, 风险原理与严重危害:为……

    2026年2月6日
    10530

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注