如何把打包好的jar包部署到服务器,linux部署步骤有哪些

把jar包部署到服务器,核心就三步:装好Java环境、把jar包传上去、用命令让它跑起来并保持后台运行。听起来简单,但实际操作中,很多人栽在环境变量没配好、端口被占用、进程被系统杀掉这些细节上,下面按步骤拆开讲,每一步都是可以直接照着敲的命令。

jar包怎么部署到服务器的标准流程

第一步:检查服务器环境,别让Java版本拖后腿

jar包本质上是一个压缩的Java程序,服务器上必须先有Java运行时环境(JRE)或Java开发工具包(JDK),很多部署失败案例,不是因为代码有问题,而是服务器上根本没装Java,或者版本和本地开发环境不一致。

【Arch零门槛】绝美Linux桌面,一键安装Niri+DMS
加载中
【Arch零门槛】绝美Linux桌面,一键安装Niri+DMS

先登录服务器,用下面这条命令确认是否已安装Java:

java -version
  • 如果显示类似openjdk version "1.8.0_xxx",说明已有Java环境,但要注意版本是否和你项目编译时的版本匹配。
  • 如果提示command not found,说明需要手动安装,以CentOS系统为例:
sudo yum install -y java-1.8.0-openjdk-devel

Ubuntu系统则用:

sudo apt update && sudo apt install -y openjdk-8-jdk

行业共识认为,Java 8和Java 11是当前生产环境使用最广泛的两个版本,如果你的项目是用Spring Boot 2.x写的,装Java 8基本不会出错。

还需要确认服务器上有没有预留足够的磁盘空间和内存,一个中型Spring Boot项目的jar包通常在50MB到200MB之间,但运行时会额外占用内存和临时磁盘空间,建议服务器的内存至少2GB,磁盘剩余空间至少5GB,这样跑起来才不会捉襟见肘。

第二步:把jar包上传到服务器,选对工具和上传路径

jar包部署前先得让服务器拿到文件,常用的上传方式有scp命令、宝塔面板、以及FTP工具。

本地电脑是Windows系统的话,可以在cmd或PowerShell里执行:

scp D:projectsmyapp.jar root@你的服务器IP:/opt/app/

本地是Mac或Linux系统的话,同理:

scp /Users/me/projects/myapp.jar root@你的服务器IP:/opt/app/

这里建议把jar包统一放到/opt/app或/data/www这类目录下,不要随手丢在/root下,规范目录管理对后期维护和日志查找非常重要。

如果觉得输命令麻烦,也可以装个宝塔面板,用自带的可视化文件管理器直接拖拽上传,不过对专业运维来说,命令行是更通用且可控的方式

如何把打包好的jar包部署到服务器,linux部署步骤有哪些

。

上传完成后,记住jar包的绝对路径,比如/opt/app/myapp.jar,后面每一步都会用到。

第三步:用好nohup命令,让jar包后台运行并能持续服务

刚接触时,很多人直接执行:

java -jar myapp.jar

这种前台启动方式,一关闭终端窗口,程序就会被终止,虽然Ctrl+C能停掉,但也会带走整个进程,生产环境绝不能用这种方式。

正确做法是用nohup配合&符号让程序脱离终端会话独立运行:

cd /opt/app
nohup java -jar myapp.jar > app.log 2>&1 &

拆开看这条命令的意思:

  • nohup:不挂断地运行命令,即使终端窗口关掉,进程也继续跑。
  • > app.log:把程序输出的日志写到app.log文件里。
  • 2>&1:把错误输出也重定向到同一个日志文件,方便统一排查。
  • 最后的&:代表在后台运行,命令执行完立刻回到终端提示符。

执行后,屏幕会显示一个进程ID(PID),这就是这个jar包进程的唯一编号。

接下来用jps或ps -ef确认进程是否正常拉起:

ps -ef | grep myapp.jar

看到类似java -jar myapp.jar的进程记录,说明后台运行成功,此时查看日志确认启动状态:

tail -100f app.log

看到Started MyApplication in xxxx seconds这类字样,基本就是启动成功了。

Linux部署jar包如何配置开机自启动,防止服务器重启后服务挂掉

用nohup启动的进程,在服务器意外重启后不会自动恢复,如果不想每次重启后都手动跑一遍命令,就应该把jar包注册成systemd服务,这也是生产环境推荐的部署方式。

注册systemd服务,让jar包像正式系统服务一样被管理

以CentOS 7及以上版本为例,创建一个服务配置文件:

sudo vim /etc/systemd/system/myapp.service
[Unit]
Description=My Spring Boot Application
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/app
ExecStart=/usr/bin/java -jar /opt/app/myapp.jar
SuccessExitStatus=143
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target

每项配置的含义都值得搞清楚:

  • After=network.target:确保网络服务启动后才拉起这个应用,避免因网络未就绪导致启动失败。
  • Restart=always:进程异常退出时,系统会自动拉起,这是保证服务可用性的关键。
  • 如何把打包好的jar包部署到服务器,linux部署步骤有哪些

  • RestartSec=10:重启前等待10秒,防止因瞬时故障导致频繁重启。
  • SuccessExitStatus=143:告诉systemd,退出码143属于正常退出(对应SIGTERM信号),不算错误。

配置写好后,依次执行这些命令:

sudo systemctl daemon-reload
sudo systemctl enable myapp.service
sudo systemctl start myapp.service

enable让服务开机自启动,start立即启动,检查运行状态:

sudo systemctl status myapp.service

看到Active: active (running)说明服务运行得健康。

以后更新jar包时,只需要替换jar文件然后执行sudo systemctl restart myapp即可,比nohup方案要优雅得多。

springboot jar包linux服务器部署时的内存调优方案

Spring Boot项目默认堆内存设置比较保守,需要在启动时显式指定JVM内存参数,否则大并发场景下很容易内存溢出。

常见启动参数:

java -Xms512m -Xmx1024m -jar myapp.jar
  • -Xms:JVM初始堆内存大小
  • -Xmx:JVM最大堆内存上限

如果服务器内存有4GB,建议设置为-Xms512m -Xmx2g,预留足够余量给操作系统的文件缓存和线程栈。

内存充足的情况下,还可以开启JVM的G1垃圾回收器:

java -XX:+UseG1GC -Xms512m -Xmx2g -jar myapp.jar

这些参数在nohup启动和systemd配置的ExecStart中都可以使用。

jar包部署后访问不通,如何高效排查和定位

多数情况下,jar包部署完成后应通过ip:端口访问服务,如果浏览器无法访问,按下面优先级排查:

第一步:确认服务有没有真正监听端口

假设项目端口是8080,在服务器上执行:

netstat -tlnp | grep 8080

如果看不到任何输出,说明应用根本没监听这个端口,继续看日志找启动报错。

第二步:查看应用日志定位启动失败原因

日志是部署排查中最直接的线索,常见错误和对应解决方案如下:

如何把打包好的jar包部署到服务器,linux部署步骤有哪些

报错特征 原因分析 解决路径
Port 8080 was already in use 端口被其他进程占用 用netstat -tlnp | grep 8080找到占用进程,或修改应用的server.port
Unable to connect to database 数据库连接信息错误 检查数据库地址、账号、密码是否匹配服务器环境
No such file or directory 配置文件里引用的路径不存在 在当前目录创建对应目录后再启动
java.lang.OutOfMemoryError 堆内存不足 调大-Xmx参数,或检查是否存在内存泄漏

第三步:检查防火墙和安全组规则

服务本身没问题但外部访问不通,要考虑两种拦截:

  • 服务器系统防火墙:CentOS查看是否放行该端口:
sudo firewall-cmd --list-ports

没有放行的话执行:

sudo firewall-cmd --add-port=8080/tcp --permanent && sudo firewall-cmd --reload
  • 云服务商安全组:简米云、酷番云的服务器还有一层安全组规则,必须在控制台里放行对应端口,否则系统防火墙无论怎么开放外部都无法访问。

完成一次最小化部署后,下一步还应该做什么

到这里,jar包已经在服务器上跑起来了,日志正常输出,端口也能访问,后续运维环节往往决定了部署是否稳定:

  • 配置日志轮转,避免日志文件无限增长占用磁盘。
  • 开启定时健康检查,脚本定期请求/actuator/health端点,挂掉就自动重启。
  • 如果项目有数据库连接池和Redis配置,务必检查生产环境的连接地址和本地的差异,这是最常见的”本地能跑服务器挂掉”的原因。

常见问题解答

为什么我用java -jar启动后,关闭终端服务就停了

因为java -jar是前台进程,终端退出时系统会向该进程组发送SIGHUP信号导致进程终止,解决方式是使用nohup java -jar xxx.jar > app.log 2>&1 &启动,或注册成systemd服务,让进程脱离终端生命周期。

jar包端口8080被占用了怎么办

先用netstat -tlnp | grep 8080找到占用进程的PID,然后根据进程实际情况判断是否可以终止,或在application.yml里修改server.port为8081等可用端口,然后重启jar包。

更新jar包版本时,直接覆盖旧文件再重启可以吗

可以,用systemctl restart管理服务时会重新加载jar包内容,因此覆盖jar文件后执行重启即可生效,不过建议先备份旧版本,以便出现问题时快速回滚,这是线上应用更新时比较稳妥的做法。

最后更新时间: 2026-01-14

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/%e5%a6%82%e4%bd%95%e6%8a%8a%e6%89%93%e5%8c%85%e5%a5%bd%e7%9a%84jar%e5%8c%85%e9%83%a8%e7%bd%b2%e5%88%b0%e6%9c%8d%e5%8a%a1%e5%99%a8linux%e9%83%a8%e7%bd%b2%e6%ad%a5%e9%aa%a4%e6%9c%89%e5%93%aa%e4%ba%9b/

赞 (0)
3b4t服务器传送装置怎么用?,传送指令有哪些
上一篇 2026年9月24日 12:34
安装WiFi时服务器无响应怎么办,怎么解决?
下一篇 2026年9月24日 12:35

相关推荐

  • 我的世界1c服务器怎么给宠物装备?具体操作有哪些?

    在《我的世界》1c服务器中,装备宠物的核心操作是使用指令打开宠物界面,然后通过拖拽或点击将宠物饰品放入对应栏位,整个过程不需要安装任何客户端模组,纯原版即可完成,1c服务器宠物系统与常规服务器的区别很多玩家初次接触1c服务器,会习惯性地去背包界面找宠物装备栏,结果翻遍整个背包都找不到,这其实是1c服务器宠物系统……

    2026年9月24日
    000
  • 华为h22h05服务器如何进入bios,怎么设置启动项?

    华为H22H05服务器进入BIOS,核心方法是在开机自检阶段反复按Del键,个别固件版本也支持F2,另外通过iBMC管理口远程KVM同样可以进BIOS,华为h22h05服务器怎么进入bios华为H22H05是一款双路机架式服务器,常见于中小型机房和政企单位,它在开机时屏幕会提示”Press Del to run……

    2026年10月19日
    200
  • 南京租服务器怎么对比网络线路才靠谱,BGP线路有什么优势

    在南京租服务器,确认网络线路的核心方法就三步:先明确业务场景需要的线路类型,再通过IP反查和路由追踪锁定机房接入商,最后拉测试IP跑一晚上的延迟和丢包实测,三关都过了再签合同,先搞清楚南京机房线路到底有哪几种南京作为华东地区的网络枢纽之一,机房线路资源整体比较丰富,但“丰富”不代表你闭着眼选就行,不同类型的线路……

    2026年9月20日
    100
  • aspnet的代码怎么写?aspnet的代码示例

    ASP.NET 代码:构建现代、健壮网络应用的基石ASP.NET 是微软推出的成熟、高性能开源 Web 框架,用于构建企业级应用、API 服务和动态网站,它基于强大的 .NET 平台,为开发者提供了一套全面工具和模式,显著提升开发效率与应用质量,ASP.NET 核心框架与技术栈ASP.NET 主要包含两大分支……

    2026年2月9日
    13200
  • 喵云互联中秋特惠是真的吗?流量转发99元2TB怎么买

    喵云互联中秋特惠正式开启,流量包享9折、用户组8折,365天2TB流量转发20个名额仅需99元,这是目前性价比极高的网络加速方案,中秋佳节不仅是团圆的时刻,也是各类网络需求的高峰期,对于需要频繁进行数据转发、远程办公或游戏加速的用户来说,选择一款稳定且经济的工具至关重要,喵云互联推出的这次中秋特惠活动,直击痛点……

    2026年7月1日
    1110
  • 本地mysql连接数据库服务器失败怎么解决,原因是什么

    本地mysql连接数据库服务器失败,通常是因为网络不通、防火墙拦截、MySQL配置限制或用户权限有问题,从外层到内层逐步排查就能解决,先确认网络层面:本地mysql连接数据库服务器失败怎么办连接失败最常见的原因就是网络不通,无论是本地虚拟机还是远程服务器,先确认你的机器能不能访问到目标数据库服务器,用ping检……

    2026年8月23日
    400
  • C NPOI读取Excel报错怎么办,C NPOI读取Excel教程

    使用C# NPOI库读取Excel文件,核心在于通过FileStream打开文件流,实例化HSSFWorkbook或XSSFWorkbook对象,并遍历Sheet获取Row和Cell数据,这是处理本地Excel文件最稳定且无需安装Office的开源方案,在数据驱动的时代,企业每天都在处理海量的Excel报表,从……

    2026年7月8日
    5600
  • steam跟随朋友游戏服务器无响应怎么回事,怎么解决?

    遇到“steam跟随朋友服务器无响应”,核心原因是Steam客户端与好友会话建立连接时,网络链路或本地缓存出了问题,多数情况下先清空下载缓存并重启客户端就能恢复,先把概念理清:你看到的“无响应”到底卡在哪一步很多玩家点下“跟随朋友”按钮后,窗口转圈几秒又弹回原样,屏幕下方提示“服务器无响应”,这不是游戏服务器挂……

    2026年9月22日
    200
  • 我的世界rpg服务器武器怎么做,需要哪些材料?

    我的世界RPG服务器武器制作,核心路径是围绕指令、NBT标签和插件(如ItemsAdder、MythicMobs、RPG Items)这三个层面展开,其中插件系统占绝对主流,指令流:RPG服务器武器怎么做的入门解很多玩家第一次接触RPG武器制作,都是从OP给的“神剑”开始的,这套逻辑基于原版指令,适合快速测试……

    2026年10月6日
    200
  • 服务器怎么装带有6pin供电的独显?, 需要注意什么?

    服务器安装带6pin供电接口的独立显卡,核心在于解决电源供电适配和物理安装兼容性问题,绝大多数标准服务器无法直接插入显卡,需要转接线或独立供电方案,为什么服务器装独显比台式机麻烦服务器和普通台式机在硬件设计上走了完全不同的路线,服务器追求稳定性和长时间7×24小时运行,主板、电源、机箱都围绕这个目标设计,显卡是……

    2026年9月1日
    1200

发表回复

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