云服务器上如何运行可运行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

相关推荐

  • AI应用管理限时特惠靠谱吗?企业AI管理软件怎么选?

    在当前数字化转型的深水区,企业对于人工智能的依赖已从单一的模型调用转向了复杂的应用生态构建,核心结论非常明确:企业必须立即构建或升级统一的AI应用管理体系,以应对日益增长的成本压力与安全挑战,而抓住当前的AI应用管理限时特惠窗口期,是实现低成本高效率转型的关键一步, 这不仅是一次采购行为,更是一次战略性的技术投……

    2026年2月21日
    11700
  • PS4幽灵行动断点连接不上服务器怎么解决,是什么原因

    如果你在PS4上玩《幽灵行动:断点》时遇到连接不上服务器的问题,核心解决方法包括检查网络环境、重启设备、修改DNS、使用加速器以及确认服务器状态,其中多数情况下通过优化本地网络就能恢复连接,PS4幽灵行动断点连接不上服务器怎么办?先做这几步遇到连接失败提示时,别急着怀疑游戏或主机坏了,先按顺序排查最基础的环节……

    2026年8月11日
    1900
  • AI可以识别哪些日文字体,AI字体识别软件有哪些

    现代人工智能技术,特别是基于深度学习的光学字符识别(OCR)系统,已经具备了极高的日文字体识别能力,核心结论是:AI不仅能精准识别标准的印刷字体(如明朝体、黑体),在经过特定训练后,也能有效识别手写体、圆体以及部分结构清晰的艺术字体,但对于极度变形或装饰性过强的字体,识别准确率会有所波动,为了深入理解这一技术现……

    2026年3月1日
    13300
  • 我的世界服务器NPC怎么做,详细步骤有哪些?

    做我的世界服务器NPC,核心方案是使用Citizens插件(服务端插件)或NPC模组(客户端Mod),其中Citizens插件是目前绝大多数服务器的主流选择,因为它无需玩家安装任何东西,功能强大且稳定,我的世界服务器怎么添加npc:先分清你的服务器类型很多服主一上来就搜”我的世界服务器npc怎么做”,结果发现网……

    2026年10月11日
    200
  • ASP交互示例中,如何实现高效的数据交互与动态内容更新?

    ASP交互示例展示了如何利用Active Server Pages技术创建动态、用户友好的网页应用,通过结合HTML、CSS、JavaScript和服务器端脚本,ASP能够处理用户输入、访问数据库并实时生成内容,从而提升网站的功能性和用户体验,以下将从核心概念、实现步骤、专业解决方案及最佳实践等方面详细展开,确……

    2026年2月4日
    11210
  • DMIT香港CMI VPS年付$179.9值得买吗,香港CMI VPS推荐

    对于需要低成本、高稳定性海外服务器的用户而言,DMIT香港CMI VPS年付$179.9版本凭借CMI优质线路和1核1G的配置,是平衡预算与性能的极佳选择,在2026年的云计算市场中,选择VPS不再仅仅是看价格,更是看线路质量、售后响应以及长期使用的稳定性,DMIT作为老牌机房服务商,其香港节点一直备受国内用户……

    2026年6月30日
    2710
  • 服务器里怎么把文件设置成txt,如何将文件扩展名改为文本格式?

    把服务器里的文件设置成txt,核心就是两步:要么用命令新建一个以.txt结尾的纯文本文件,要么用重命名或批量修改命令把已有文件的扩展名改成.txt,具体操作用touch、echo、mv、rename这些基础命令就能完成,Windows服务器则可以直接用记事本或ren命令,下文把不同场景拆开讲透,服务器创建txt……

    程序编程 2026年10月23日
    200
  • 京鑫二手服务器质量怎么样,二手服务器哪个牌子好?

    京鑫二手服务器整体靠谱,但买前必须看清配置清单和质保条款,适合预算有限的中小企业和个人实验室,关键看你会不会验货,京鑫二手服务器的货源成色怎么样京鑫做二手服务器不是一天两天了,业内对其定位是“走量型批发商”,他们家的机器来源主要是数据中心淘汰机、企业机房下架机,以及部分机房搬迁换下来的设备,这类机器有个特点:常……

    程序编程 2026年10月23日
    000
  • HostDareVPS测评,美国日本10.4美元/年方案怎么选

    HostDare 10.4美元/年方案实测结论:美国节点适合低预算静态展示与轻量级测试,日本节点在亚洲访问速度上具备显著优势,但两者均受限于低配硬件,不适合高并发或资源密集型业务,建议根据目标用户地域谨慎选择,在2026年的虚拟主机市场中,极致性价比依然是中小开发者与个人站长首选HostDare的核心竞争力,针……

    2026年5月15日
    6700
  • 手游lol怎么看自己在哪个服务器?,所在区服怎么查

    想看自己在哪个服务器,最快的办法是打开英雄联盟手游,登录后直接看游戏主界面左上角的头像框下方,那里会直接显示你所在的大区名称,这个区域通常展示的是“某某区”或“某某服务器”,一眼就能识别,如果那里没有显示,可以点击左上角头像进入个人主页,在ID下方或者资料卡的显著位置也会标注服务器信息,搞清楚自己在哪个区,不仅……

    2026年10月8日
    100

发表回复

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