发布时间:2026/7/15 3:43:42
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/7/15 3:43:42

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

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

2026/7/15 3:43:42

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

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

2026/7/15 3:38:42

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

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

2026/7/15 4:29:23

桌面待办革命:用My-TODOs重新掌控你的时间和任务

桌面待办革命:用My-TODOs重新掌控你的时间和任务 【免费下载链接】My-TODOs A cross-platform desktop To-Do list. 跨平台桌面待办小工具 项目地址: https://gitcode.com/gh_mirrors/my/My-TODOs 在数字化时代,任务管理混乱已成为现代人的普遍痛…

2026/7/15 4:29:23

相机畸变校正原理与C/C++实现:从数学模型到工程优化

1. 项目概述:从“歪”到“正”的视觉矫正术做计算机视觉或者图像处理的朋友,对“畸变校正”这个词肯定不陌生。简单来说,它就是把相机镜头拍出来的“歪”图像,通过数学方法给“掰”正了。你可能会问,好好的图像怎么就“…

2026/7/15 4:29:23

ADC08DJ3200低功耗背景校准(LPBG)模式详解与寄存器配置实战

1. 项目概述与核心价值在高速数据采集和通信系统的设计中,模数转换器(ADC)的性能往往是整个链路性能的瓶颈。我们追求更高的采样率、更优的信噪比(SNR)和无杂散动态范围(SFDR),但芯片…

2026/7/14 12:47:32

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&#…

2026/7/14 19:23:19

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境随着新能源汽车行业的快速发展,充电通信协议的标准化和测试验证变得尤为重要。GB/T 27930-2023作为中国智能充电协议的最新版本,对充电机与电动汽车之间的通信提出了更严格…

2026/7/14 18:30:06

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡 【免费下载链接】rtl8852be Realtek Linux WLAN Driver for RTL8852BE 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8852be 还在为Linux系统无法识别RTL8852BE Wi-Fi 6网卡而烦恼吗?&#x1f…

2026/7/15 0:08:29

【LINUX】驱动

【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】

2026/7/15 0:08:29

【1982-2026】全国高精度建筑轮廓|村级精度|SHP矢量

🔍 数据简介 本次分享1982-2026年全国村级精度建筑轮廓矢量数据,覆盖全国各省市区县,到村级别精细,为2026年最新实时采集成果,非网传仅60/77个城市的老旧数据。 数据含带高度/不带高度双版本,单体建筑边界精…

2026/7/15 0:08:29

【1975-2026】全国水系水路数据|河流/水库/运河|SHP矢量

🔍 数据简介 本次分享1975-2026年全国高精度水系水路矢量数据,覆盖全国全域,包含河流、水系、水库、运河、湿地、冰川、沟渠等全类别水文要素。 数据集包含双层矢量图层,字段分类清晰、要素齐全,支持2013-2026逐年完整…

2026/7/14 12:47:31

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…