如何把打包好的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包进程的唯一编号。

接下来用jpsps -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

相关推荐

  • AI预测成绩准确吗,智能估分系统怎么用最准

    AI驱动的学业表现分析代表了教育评价从结果导向向过程导向的根本性转变,其核心价值不在于给出一个冰冷的分数,而在于通过数据挖掘实现精准的教学干预与个性化的学习路径优化,在现代教育体系中,单纯依靠经验判断学生潜力的方式已难以满足精细化管理的需求,基于大数据与机器学习技术的智能评估模型,能够处理海量的多维数据,从而构……

    2026年2月22日
    13900
  • AI格式存EPS无法存储插图,怎么显示无法打印插图?

    在Adobe Illustrator中处理EPS格式出现的显示异常、无法存储或打印失败,主要源于矢量与光栅数据的混合处理机制、链接资源的缺失以及PostScript版本兼容性冲突,要彻底解决这些问题,必须确保所有链接图像被正确嵌入,并在导出时选择匹配目标设备的兼容性版本,必要时对复杂效果进行光栅化处理,针对用户……

    2026年2月17日
    27300
  • AIoT研究内容有哪些,AIoT主要研究方向是什么

    AIoT(人工智能物联网)的核心研究本质,是解决“万物互联”向“万物智联”跨越过程中的技术融合与落地应用问题,核心结论在于:AIoT并非AI与IoT的简单叠加,而是通过边缘计算、数据智能与安全机制的深度耦合,构建一个具备感知、决策、执行能力的智能生态系统, 当前行业研究已从单纯的连接规模扩张,转向对高价值场景挖……

    2026年3月11日
    10300
  • 苹果4s怎么连接不上网络连接服务器

    苹果4s连接不上网络连接服务器,多半是系统时间错误、网络设置异常或WiFi模块老化导致,优先校准时间并重置网络设置,苹果4s连不上WiFi怎么办?先从校准时间开始很多用户遇到4s提示“无法连接服务器”或“验证失败”,其实是系统时间跑偏了,iPhone 4s最高支持到iOS 9.3.6,自动时间同步依赖旧版NTP……

    2026年8月21日
    600
  • ajax请求其他服务器失败怎么办?跨域请求数据解决方案

    通过Ajax请求其他服务器无法直接实现跨域访问,必须借助后端代理、CORS配置或JSONP技术来绕过浏览器的同源策略限制,在Web开发的日常实践中,前端工程师经常面临这样一个棘手的问题:为什么我的代码能完美连接本地数据库,却连不上隔壁部门的API接口?这并非代码逻辑错误,而是浏览器出于安全考虑,强行实施的同源策……

    2026年5月31日
    6100
  • ASP如何高效构建新闻发布页面?探讨最佳实践与技巧!

    ASP新闻发布页面开发实战指南系统架构与基础搭建ASP新闻系统采用经典三层架构:表现层:ASP页面 + HTML/CSS/JavaScript业务逻辑层:VBScript处理核心流程数据访问层:ADO组件操作数据库' 数据库连接示例 (conn.asp)<%Dim connSet conn = S……

    2026年2月5日
    12930
  • 丽萨主机VPS测评,美国新加坡VPS哪个快

    丽萨主机(LisaHost)VPS在2026年的实测表现显示,其美国节点在低延迟场景下具备极高性价比,而新加坡节点则更适合对东南亚访问速度有严格要求的跨境业务,综合评分优于同价位竞品,在云计算市场高度内卷的2026年,选择VPS不再仅看价格,更看重网络稳定性、IP纯净度及售后响应速度,丽萨主机凭借灵活的计费模式……

    2026年5月14日
    3800
  • 服务器exe部署怎么操作?服务器exe文件部署教程

    服务器exe部署的核心在于确保Windows可执行程序在远程环境中实现安全、稳定且高效的持续运行,这不仅是简单的文件上传,更是一套涵盖环境配置、权限管理、进程守护及安全加固的系统工程,成功的部署标准是:服务器重启后程序自动启动、异常崩溃后能自动恢复、且外部攻击面最小化, 基础环境准备与文件传输部署的第一步是构建……

    2026年4月11日
    6700
  • iWebFusion独立服务器$45/月起值得买吗,洛杉矶站群服务器推荐

    iWebFusion凭借洛杉矶与拉斯维加斯双核心机房的低延迟优势,以$45/月起的独立服务器和$164/月起的16C段IP站群方案,成为追求极致性价比与SEO排名的用户首选,在服务器租赁市场鱼龙混杂的今天,寻找一个既稳定又便宜的独立服务器并非易事,许多站长在搭建外贸网站或进行SEO站群优化时,往往陷入两难:要么……

    2026年7月5日
    18410
  • Excel怎么制作雷达图?Excel雷达图制作教程

    在Excel中制作雷达图的核心逻辑是:选中多维数据区域,通过“插入”菜单选择“雷达图”系列,并根据需求调整数据系列与分类轴,即可快速生成用于多维度对比分析的可视化图表,雷达图(Radar Chart)常被形象地称为“蜘蛛网图”,它并非用来展示时间序列的变化,而是专门针对多维数据对比分析场景设计的,在2026年的……

    2026年7月7日
    7200

发表回复

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