Linux服务器部署SpringBoot项目:从零到一实战指南

发布时间:2026/11/3 12:09:15

Linux服务器部署SpringBoot项目:从零到一实战指南 1. 环境准备从零配置Linux服务器第一次在Linux服务器上部署SpringBoot项目可能会觉得无从下手但跟着我的步骤来保证你能轻松搞定。我去年给公司部署电商系统时也是从零开始摸索现在把这些经验都分享给你。首先需要准备一台干净的Linux服务器推荐使用CentOS 7.x或Ubuntu 20.04 LTS版本。云服务器和本地虚拟机的主要区别在于网络配置和安全组规则这点要特别注意。我遇到过不少新手在云服务器上部署后无法访问八成都是安全组没配置好。必备软件清单JDK 1.8推荐OpenJDK 11MySQL 5.7/MariaDB防火墙配置工具文件传输工具如lrzsz安装JDK最稳妥的方式是直接用yum安装# CentOS sudo yum install -y java-11-openjdk-devel # Ubuntu sudo apt update sudo apt install -y openjdk-11-jdk安装完成后别忘记验证java -version # 应该看到类似下面的输出 # openjdk version 11.0.12 2021-07-20 LTSMySQL安装稍微复杂些我建议用官方仓库安装最新版# CentOS wget https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm sudo rpm -ivh mysql80-community-release-el7-6.noarch.rpm sudo yum install -y mysql-server # Ubuntu sudo apt install -y mysql-server安装完成后一定要做这三件事运行安全脚本sudo mysql_secure_installation创建应用数据库用户修改绑定地址为0.0.0.0如果需要远程连接2. 项目打包与上传告别坑爹的配置问题打包SpringBoot项目看似简单但这里面的坑我几乎都踩过。最常见的就是打包后运行报错没有主清单属性。这是因为maven配置有问题正确的pom.xml应该包含build plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId version2.7.0/version executions execution goals goalrepackage/goal /goals /execution /executions /plugin /plugins /build打包命令也有讲究我推荐用这个mvn clean package -DskipTests打包完成后你会得到一个形如your-project-0.0.1-SNAPSHOT.jar的文件。这个文件通常有30-50MB大小如果发现只有几KB那肯定是打包出问题了。上传文件到服务器我习惯用scp命令scp target/your-project.jar useryourserver:/home/user/app/如果觉得命令行麻烦也可以用WinSCP这类图形化工具。但要注意文件权限问题遇到过好几次因为权限导致应用无法读取配置文件的坑。3. 服务启动与管理生产环境必备技能直接运行java -jar虽然简单但在生产环境远远不够。我们需要考虑服务意外退出如何自动重启日志如何收集如何优雅停止服务方案一nohup简单版适合测试环境nohup java -jar your-project.jar app.log 21 这命令的意思是nohup忽略挂断信号 app.log重定向标准输出到文件21将错误输出也重定向到标准输出后台运行方案二systemd专业版生产推荐创建服务配置文件/etc/systemd/system/your-app.service[Unit] DescriptionYour SpringBoot Application Aftersyslog.target network.target [Service] Userappuser ExecStart/usr/bin/java -jar /home/user/app/your-project.jar SuccessExitStatus143 Restartalways RestartSec30 [Install] WantedBymulti-user.target然后执行sudo systemctl daemon-reload sudo systemctl start your-app sudo systemctl enable your-app # 开机自启用systemd管理服务的好处是完善的日志管理journalctl -u your-app自动重启机制服务状态监控启动顺序控制4. 安全与优化专业部署的加分项防火墙配置# 查看已开放端口 sudo firewall-cmd --list-ports # 开放应用端口比如8080 sudo firewall-cmd --zonepublic --add-port8080/tcp --permanent sudo firewall-cmd --reloadJVM调优建议生产环境一定要配置JVM参数这是我的常用配置java -Xms512m -Xmx1024m -XX:MaxMetaspaceSize256m \ -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath/tmp \ -jar your-project.jar-Xms和-Xmx设置堆内存初始和最大值-XX:MaxMetaspaceSize限制元空间大小-XX:HeapDumpOnOutOfMemoryError在OOM时生成dump文件日志管理技巧使用logback或log4j2的滚动日志配置日志文件按天切割保留最近7天的日志单个日志文件不超过50MB这是我的logback配置片段appender nameFILE classch.qos.logback.core.rolling.RollingFileAppender file${LOG_PATH}/app.log/file rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy fileNamePattern${LOG_PATH}/app.%d{yyyy-MM-dd}.%i.log/fileNamePattern maxFileSize50MB/maxFileSize maxHistory7/maxHistory /rollingPolicy /appender5. 常见问题排查指南问题1端口被占用# 查看端口占用情况 sudo netstat -tulnp | grep 8080 # 如果被占用可以kill掉进程 sudo kill -9 PID问题2数据库连接失败检查数据库服务是否运行连接字符串是否正确用户权限是否足够防火墙是否放行3306端口问题3文件权限不足# 查看文件权限 ls -l your-project.jar # 修改权限 chmod 755 your-project.jar chown appuser:appgroup your-project.jar问题4内存不足查看内存使用free -h top如果是OOM问题可以用jmap分析jmap -heap pid # 查看堆内存 jmap -histo:live pid | head -20 # 查看对象数量6. 进阶技巧持续部署与监控使用Git Hook自动部署在服务器上配置Git Hook可以在代码push时自动构建部署#!/bin/bash # /var/www/your-project.git/hooks/post-receive APP_DIR/home/user/app GIT_DIR/var/www/your-project.git echo Starting deployment... cd $APP_DIR # 拉取最新代码 git --git-dir$GIT_DIR pull origin master # 构建项目 mvn clean package -DskipTests # 重启服务 sudo systemctl restart your-app echo Deployment complete!基础监控配置使用Spring Boot Actuator可以快速开启监控端点# application.properties management.endpoints.web.exposure.includehealth,info,metrics management.endpoint.health.show-detailsalways配合Prometheus和Grafana可以搭建完整的监控系统。7. 前后端分离项目部署现代项目大多是前后端分离架构部署时需要注意前端静态文件用Nginx托管配置API反向代理解决跨域问题典型Nginx配置server { listen 80; server_name yourdomain.com; location / { root /var/www/html; try_files $uri $uri/ /index.html; } location /api { proxy_pass http://localhost:8080; proxy_set_header Host $host; } }8. 备份与回滚策略备份方案数据库每日全量备份binlog应用打包备份配置文件版本控制简单回滚脚本#!/bin/bash VERSION$1 APP_DIR/home/user/app echo Rolling back to version $VERSION... cd $APP_DIR/backups cp -f your-project-$VERSION.jar $APP_DIR/your-project.jar sudo systemctl restart your-app echo Rollback complete!使用方式./rollback.sh 1.0.09. 性能优化实战数据库连接池配置# application.properties spring.datasource.hikari.maximum-pool-size20 spring.datasource.hikari.minimum-idle10 spring.datasource.hikari.idle-timeout30000 spring.datasource.hikari.max-lifetime1800000Tomcat调优server.tomcat.max-threads200 server.tomcat.min-spare-threads20 server.tomcat.accept-count100 server.tomcat.connection-timeout5000缓存配置Configuration EnableCaching public class CacheConfig { Bean public RedisCacheManager cacheManager(RedisConnectionFactory factory) { RedisCacheConfiguration config RedisCacheConfiguration.defaultCacheConfig() .entryTtl(Duration.ofMinutes(30)) .disableCachingNullValues(); return RedisCacheManager.builder(factory) .cacheDefaults(config) .build(); } }10. 容器化部署方案选学虽然本文主要讲传统部署方式但简单提下Docker部署FROM openjdk:11-jre COPY target/your-project.jar /app.jar ENTRYPOINT [java,-jar,/app.jar]构建和运行docker build -t your-app . docker run -d -p 8080:8080 --name your-app your-app使用Docker Compose可以更方便管理多容器应用。
延伸阅读

更多相关文章

2026/10/29 2:41:31

Cursor如何47分钟跑通Vue PDF导出与单元测试

1. 一个被我搁置三个月的功能,Cursor 用 47 分钟就跑通了“这个导出 PDF 的功能先放一放,下个迭代再做。”——这句话我上个月在站会上说的,当时心里想的是“反正也不急,等我把接口联调完再说”。结果呢?它就在 Jira 里…

2026/10/27 21:31:32

C#实战:基于AllenBradley(CIP)协议实现PLC数据批量读写与状态监控

1. 初识AllenBradley CIP协议第一次接触罗克韦尔PLC的CIP协议时,我完全被它复杂的文档搞懵了。后来在实际项目中才发现,这个协议其实就像快递员送包裹一样简单直接。CIP(Control and Information Protocol)是罗克韦尔自动化设备之…

2026/10/25 13:20:35

从零到一:Logisim运算器实验全流程解析与避坑指南

1. 初识Logisim运算器实验第一次打开Logisim时,看着满屏的逻辑门和连线,我整个人都是懵的。这玩意儿真的能做出CPU的运算器?但跟着实验指导书一步步操作后,发现其实就像搭积木一样有趣。运算器实验的核心目标,就是要用…

2026/11/4 3:38:46

AI能替代设计师建模吗?实测拆解与高效人机协作指南

不是所有问题都值得用“是或否”来回答,但“AI能不能直接替代设计师的建模工作”这个问题,我几乎每周都会被问一次。问的人里有刚入行的新人,也有带团队十年的资深设计师,甚至还有甲方爸爸拿着AI生成的角色图来问“这直接转成模型…

2026/11/4 3:38:46

AI编程3.0时代:全栈工程师的四大不可替代能力

1. 这不是一次技术升级,而是一次开发角色的“身份重置”“AI 编程走到 3.0”,这个说法最近在技术社区里被反复提起,但很多人没意识到,它背后真正震动的不是工具链,而是我们对“程序员”这个身份的认知根基。我带过三届…

2026/11/4 3:38:46

OpenVoice:CPU上5秒实现高保真声音克隆的技术解析

1. 这不是“又一个”工具,而是声音克隆技术落地临界点的标志性事件最近刷到 GitHub Trending 页面时,我下意识划过——直到看到那个数字:3.3 万 Star,7 天暴涨。不是某个老牌开源库的缓慢积累,也不是营销号包装的“AI神…

2026/11/4 3:38:46

语音在智能硬件中的全链路开发实战

1. 为什么“语音智能硬件”不是加法,而是重构开发范式我第一次把麦克风焊上STM32板子、跑通基础ADC采样时,满心以为“语音功能”就算落地了。结果客户拿着成品说:“你们这设备能听懂我说‘调低音量’吗?”——我当场愣住。那会儿我…

2026/11/4 3:38:46

全栈3.0:从技术栈到决策栈的能力重构

1. 当“全栈”这个词开始被AI重新校准刻度我第一次在团队晨会上听到“我们这个需求让AI全栈跑一遍”这句话时,下意识摸了手机查了下日历——不是愚人节,也不是新员工入职玩笑。那是2024年6月,我们正在交付一个校园讲座预约系统,后…

2026/11/4 3:33:46

超声影像组学与SHAP:≤3cm小肝癌可解释分类及外部验证

小肝癌这三个字,在超声科门诊里出现的频率这两年明显在涨。体检普及、肝硬化患者规律随访、加上增强影像的广泛应用,越来越多≤3cm 的肝脏局灶性病变在还没长出典型征象时就被抓到。问题也恰好出在这里:3cm 以下的肝细胞癌,在常规…

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/3 14:24:53

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/4 0:03:20

AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年…

2026/11/4 0:03:20

从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你…

2026/11/4 0:03:20

32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统…

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/3 14:24:53

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑