如何把打包好的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/article/683473.html

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

相关推荐

  • 广州虚拟主机怎么添加ftp?广州虚拟主机如何配置FTP

    在广州虚拟主机上添加FTP,核心在于通过主机控制面板(如cPanel/Plesk/宝塔)进入FTP管理模块,创建专属账户并绑定网站根目录,同时配置读写权限与被动模式端口,即可实现本地与服务器的高效文件传输,广州虚拟主机添加FTP的核心逻辑与前期准备为什么广州节点主机必须规范配置FTP根据《2026年中国IDC行……

    2026年4月27日
    6300
  • 我的世界服务器如何邀请好友一起玩,联机教程有哪些?

    mc服务器怎么和好友一起玩?最稳的办法是:你开一个服务端,让好友通过IP或域名加入;临时玩就用网易版好友房间或基岩版局域网, 下面按版本、平台、预算和网络环境拆开讲,我的世界服务器怎么和好友一起玩?先分清版本与联机方式Java版、基岩版、网易版的区别Java版:PC端为主,模组和插件生态强,跨平台能力弱,基岩版……

    2026年10月9日
    200
  • 电脑ping不上服务器失败怎么回事,ping不通怎么解决

    电脑ping不上服务器,先别急着重启服务器或换电脑,最常见的原因是ICMP被防火墙或安全组拦截、本机IP或网关配置不对、路由不可达,少数才是服务器真宕机, 先ping网关,再tracert目标,最后查目标机是否禁ping,基本能定位,先分清ping失败与ping超时:电脑ping不上服务器失败是怎么回事ping……

    2026年9月24日
    000
  • 青岛GPU服务器租用配置怎么定,租用价格多少?

    青岛GPU服务器租用时,配置不是越高越好,而是先定位你的使用场景,再反推需要什么型号的GPU和其他硬件,否则预算很容易浪费在根本用不上的参数上,青岛GPU服务器租用配置怎么定——先搞清楚需求再谈参数很多人在青岛租GPU服务器时,第一反应是“越贵越好”或者“显存越大越强”,这个思路其实走偏了,GPU服务器是工具……

    2026年9月17日
    300
  • ec服务器跑酷冒险第五关怎么过

    吃满加速带后贴着左侧墙体连续起跳,并在第二个检查点前提前降高度,走完三段落差即可安全到达终点,这一关的难点不在怪物强度,而在于跳跃节奏和视角控制,很多玩家卡关是因为在第二段加速带区域慌了神,导致落点偏离,ec服务器跑酷冒险第五关难点拆解第五关的地图结构跟前四关完全不同,前四关的路线基本是线性铺开的,第五关则是垂……

    程序编程 2026年9月9日
    100
  • 花园战争连不上ea服务器怎么解决,为什么一直连接失败

    花园战争连不上EA服务器通常不是游戏坏了,而是你本地的网络链路、DNS解析或平台登录态出了问题,按本文顺序逐项排查,绝大多数情况能恢复联机,花园战争连不上ea服务器,先分清是哪一种同样是连不上,原因可能完全不同,在动手改任何设置之前,花三十秒对照下面三种情况,能少走不少弯路,进入游戏就提示连接失败:多半是玩家身……

    程序编程 2026年11月8日
    200
  • 联想服务器警示灯亮是什么原因,怎么解决?

    先对个暗号,再说怎么办联想服务器警示灯亮,九成情况下是服务器在“举手打报告”,代表某个硬件或环境参数离开了安全区间,并不是整机报废,别急着关电源,先按本文顺序观察和排查,多数报警在几分钟内就能确认方向,很多人一看到机箱前面板的黄灯或红灯就发慌,第一反应是重启或拔电,这其实最容易把小问题搅成大问题,服务器的指示灯……

    程序编程 2026年10月22日
    400
  • 如何用VS做客户端和服务器端,有哪些步骤

    用Visual Studio开发客户端和服务器端程序,核心是掌握Socket编程或使用WCF/ASP.NET Core等框架,通过VS的集成开发环境快速搭建项目并调试,实现双向通信,用Visual Studio开发客户端和服务器端:从基础到实战无论你是新手还是经验丰富的开发者,Visual Studio(简称V……

    2026年8月7日
    700
  • AIoT行业口号有哪些?2026最火智能物联网宣传标语推荐

    AIoT行业的核心在于“智联万物,生生不息”,这不仅是技术演进的必然结果,更是产业数字化转型的终极目标,AIoT并非简单的AI(人工智能)与IoT(物联网)的物理叠加,而是通过智能化手段赋予万物感知、思考与执行的能力,实现数据价值的闭环, 在这一进程中,行业口号不仅是品牌传播的载体,更是企业战略定位的浓缩与技术……

    2026年3月14日
    12100
  • 手机QQ远程连接服务器为什么会失败,怎么解决?

    手机QQ远程连接服务器失败,核心原因不是手机,而是被控端QQ掉线、电脑休眠,或者防火墙隔断了远程通道,按“被控端在线→网络互通→功能放行”三步排查,绝大多数情况不需要重装任何软件,手机QQ远程连接服务器,严格说是一台手机去控制另一台装着QQ的电脑或自建服务器,不是QQ直连域名,整个连接要过三层:第一层是腾讯远程……

    2026年10月18日
    300

发表回复

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