发布时间:2026/9/4 10:41:23
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/8/31 9:42:36

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

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

2026/9/3 0:33:54

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

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

2026/9/1 14:14:30

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

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

2026/9/4 10:37:01

Python合规采集CNKI元数据与科研可视化工作流

简介:本资源是一套面向本科毕业设计的Python全栈实践案例,聚焦中国知网(CNKI)学术数据的自动化采集与可视化分析,适用于计算机、信息管理等专业学生完成毕业课题或课程设计。项目采用Django 2.0构建Web平台&#xff0c…

2026/9/4 10:37:01

冷冻胚胎的边界:生育权在法律盲区狂奔

《生殖技术狂奔,婚姻规则该升级》——技术解决“能不能”,法律必须回答“谁决定、谁负责”同一扇门,可能挡得住真实需求,却未必挡得住规则漏洞。未婚女性冻卵受限、冷冻胚胎处置纠纷不断出现,都在提醒我们:…

2026/9/4 10:37:01

欧洲汽后市场:卖件已死,经营车主崛起

《欧洲汽后市场:卖件已死,关系崛起》——2035年的赢家,不是库存最多,而是谁先占住客户关系“过去十年卖零件,未来十年经营车主。”欧洲汽车后市场正在换轨:新车增长放缓、车龄上升,电动车渗透却…

2026/9/4 10:37:01

印度增长的齿轮与隐忧:大体量下的慢与快

《印度增长已换挡,下一程拼底座》——真正决定增长上限的,不是跑多快,而是每次加速后留下什么“一个经济体最怕的,不是增长慢,而是速度很快、底盘却在晃。”印度下一阶段的考题已经变了。过去靠人口、消费与改革释放红…

2026/9/4 10:37:01

真正稀缺的不是商品,而是离家更近的好生活

《县域消费不是下沉,是重估》——真正的增量,不是多卖货,而是把好生活送到家门口过去十年,县城卖的是货;未来十年,县城卖的是生活。2026年一季度,乡村零售额同比增长2.6%,增速继续快…

2026/9/4 10:32:01

机器人主控板选型五大痛点:RK3588/RK3576/RK3568怎么选?

1. 机器人主控板选型,差之毫厘谬以千里做机器人硬件这两年,我最大的感触是:主控板选型这件事,看起来是"挑一块开发板",实际上是在给整个项目的命运做裁决。方案定型前你觉得差不多能跑的配置,到了…

2026/9/3 18:28:26

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/9/3 14:29:47

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/9/3 14:30:35

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/4 0:00:58

STM32H743 SPI从机DMA双缓冲通信实战

简介:本资源是面向嵌入式开发工程师与STM32进阶学习者的SPI DMA双机通信从机端完整实现方案,聚焦STM32H743高性能Cortex-M7单片机在工业控制与高速数据交互场景下的从机通信开发痛点。压缩包含1355个文件,主体为599个C源码与321个头文件&…

2026/9/4 0:00:58

CPU开盖降温教程:20元成本让温度直降30度的原理与实践

最近很多朋友都在抱怨,自己的电脑一到夏天就变成"烤箱",玩游戏时CPU温度动不动就飙到90度以上,风扇噪音堪比直升机。更让人头疼的是,明明配置不错,却因为高温降频导致性能大打折扣。如果你也遇到了类似问题&…

2026/9/4 0:00:58

ArkTS 表单工程:场地预约页的三态场次 Grid 与校验

ArkTS 表单工程:场地预约页的三态场次 Grid 与校验 App 14「运动场地预约」场地 Tab(Func1Tab),是整 App 交互最丰富的页面——场地横向切换 三色图例 渐变预约预览卡 快捷模板 今日场次 Grid(可选/已选/已满三态&…

2026/9/3 20:43:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/3 17:51:43

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/3 21:06:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…