当前位置: 首页 > news >正文

从零到一:在腾讯云服务器上全栈部署Spring Boot后端与Vue前端

1. 腾讯云服务器选购与基础配置

第一次部署全栈项目到云服务器时,我踩过不少坑。记得当时为了省几十块钱选了1核1G的配置,结果项目一跑就崩。后来才明白,2核4G是最适合新手起步的配置,既能流畅运行Spring Boot和Vue,又不会造成资源浪费。

在腾讯云控制台选购时,注意这几个关键点:

  • 地域选择:优先选离你用户群体最近的机房,比如华南地区选广州
  • 镜像版本:CentOS 7.6/7.9最稳定,实测与各类开发工具兼容性最好
  • 安全组设置:提前放行80(HTTP)、443(HTTPS)、22(SSH)、8080(Spring Boot常用端口)

拿到服务器后第一件事不是急着部署,而是做好基础防护:

# 修改默认SSH端口(降低暴力破解风险) vim /etc/ssh/sshd_config # 找到Port 22改为其他端口如5822 systemctl restart sshd # 添加新用户并赋予sudo权限(避免直接使用root) adduser deployer passwd deployer usermod -aG wheel deployer

2. 开发环境高效配置指南

很多教程会教你一个个手动安装环境,其实有更高效的做法。我推荐使用自动化脚本完成基础环境搭建,这是我积累的万能环境初始化脚本:

#!/bin/bash # JDK安装(自动识别最新版本) JDK_VERSION="jdk-8u381-linux-x64" wget https://repo.huaweicloud.com/java/jdk/8u381-b09/$JDK_VERSION.tar.gz tar -zxvf $JDK_VERSION.tar.gz -C /usr/local/ echo "export JAVA_HOME=/usr/local/${JDK_VERSION%-linux-x64}" >> /etc/profile echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile source /etc/profile # Maven安装 MAVEN_VERSION="3.9.6" wget https://dlcdn.apache.org/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz tar -zxvf apache-maven-*.tar.gz -C /usr/local/ ln -s /usr/local/apache-maven-$MAVEN_VERSION /usr/local/maven echo 'export MAVEN_HOME=/usr/local/maven' >> /etc/profile echo 'export PATH=$MAVEN_HOME/bin:$PATH' >> /etc/profile # Node.js安装(包含npm) curl -fsSL https://rpm.nodesource.com/setup_18.x | bash - yum install -y nodejs

传输文件时,比起Xftp我更推荐用rsync命令,它能自动同步差异文件:

# 本地到服务器的增量同步(忽略node_modules) rsync -avz --exclude='node_modules' ./vue-project root@your-server-ip:/home/deployer/

3. Spring Boot项目生产级部署

直接java -jar运行虽然简单,但在生产环境远远不够。分享几个实战经验:

1. 日志管理方案

# 使用logrotate自动分割日志 sudo vim /etc/logrotate.d/myapp

写入以下配置:

/home/deployer/app/logs/*.log { daily missingok rotate 30 compress delaycompress notifempty copytruncate }

2. 服务化部署(Systemd)

sudo vim /etc/systemd/system/myapp.service

服务文件配置示例:

[Unit] Description=My Spring Boot App After=syslog.target [Service] User=deployer ExecStart=/usr/bin/java -jar /home/deployer/app/myapp.jar SuccessExitStatus=143 Restart=always RestartSec=30 EnvironmentFile=/home/deployer/app/config.env [Install] WantedBy=multi-user.target

3. 健康检查与监控在application.properties中添加:

management.endpoint.health.show-details=always management.endpoints.web.exposure.include=health,metrics,info

4. Vue项目性能优化部署

Vue项目部署不只是npm run build那么简单,我总结出三个优化层级:

1. 构建阶段优化

// vue.config.js module.exports = { chainWebpack: config => { config.optimization.splitChunks({ chunks: 'all', maxSize: 244 * 1024, // 拆分包大小 cacheGroups: { vendors: { test: /[\\/]node_modules[\\/]/, priority: -10 } } }) } }

2. Nginx深度配置

server { listen 80; server_name your-domain.com; gzip on; gzip_types text/plain text/css application/json application/javascript text/xml; location / { root /home/deployer/app/dist; index index.html; try_files $uri $uri/ /index.html; # 缓存控制 location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires 1y; add_header Cache-Control "public, no-transform"; } } # API反向代理 location /api { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }

3. CDN加速实践将静态资源上传至腾讯云COS并配置CDN,修改vue.config.js:

module.exports = { publicPath: process.env.NODE_ENV === 'production' ? 'https://your-cdn-domain.com/' : '/' }

5. 全链路监控与排错

部署完成后,这套监控组合拳能帮你快速定位问题:

1. 实时日志查看

# 同时监控Spring Boot和Nginx日志 multitail -cS java /var/log/nginx/access.log -cS apache /var/log/nginx/error.log -cS spring /home/deployer/app/logs/application.log

2. 端口检测脚本

#!/bin/bash check_port() { netstat -tlnp | grep ":$1" } check_port 80 # Nginx check_port 8080 # Spring Boot check_port 22 # SSH

3. 性能瓶颈分析

# 查看CPU占用最高的Java线程 top -H -p $(pgrep -f java) # 生成线程转储 jstack -l $(pgrep -f java) > thread_dump.log

记得第一次成功部署时,我在Nginx配置里漏了个分号,排查了整整三小时。现在养成了配置检查清单

  • [ ] Nginx语法检查:nginx -t
  • [ ] Spring Boot启动参数:java -jar --debug app.jar
  • [ ] 文件权限检查:ls -l /home/deployer/app
  • [ ] 防火墙状态:firewall-cmd --list-all
http://www.jsqmd.com/news/1086526/

相关文章:

  • 瑞萨RA2E1开发板FSP实战:从环境搭建到项目移植全解析
  • hashlib与hmac:数据加密与哈希
  • 5分钟快速上手:免费AI虚拟背景插件OBS背景移除完整指南
  • 解密高效离线部署:3步掌握无网环境包管理实战
  • 网盘直链下载助手完整指南:告别限速,轻松获取真实下载链接
  • Adobe破解终极指南:三步免费激活Adobe全家桶的简单方法
  • OpCore Simplify终极指南:10分钟完成黑苹果EFI配置的完整解决方案
  • 如何快速构建精简Windows 11系统:tiny11builder完整指南
  • AI 自适应索引设计:基于负载感知的智能索引推荐与自动优化
  • AIPL模型实战:从流量到留量的全链路消费者运营指南
  • WarcraftHelper魔兽争霸III终极优化指南:开源工具让经典游戏完美适配现代系统
  • gibMacOS技术深度解析:跨平台macOS组件下载架构揭秘
  • Snap.Hutao原神工具箱终极指南:开启高效游戏管理新篇章
  • 从SQL注入到内网穿透:Skytower靶机实战中的渗透测试全链路解析
  • 瑞萨RH850/U2C评估板电源、时钟与调试接口配置实战指南
  • RA8T2电气特性实战:中断滤波、总线与SDRAM时序设计避坑指南
  • DaoCloud镜像加速:解决国内容器镜像下载难题的终极方案
  • 基于Playwright+Robot Framework+Jenkins的UI自动化测试流水线搭建实践
  • 终极指南:如何用IwrQk免费打造专属二次元视频体验
  • 如何快速掌握res-downloader:面向新手的视频资源下载解密完整指南
  • 终极指南:如何用Nucleus Co-Op免费解锁PC游戏分屏多人模式
  • CVE-2019-9670漏洞检测工具开发实战:从原理到工程实践
  • SSH暴力破解应急响应实战:从告警到加固的完整流程
  • 深度剖析Mesen:如何从零构建一个周期精确的NES模拟器
  • 从理论到实践:一份面向新时代技术人的“中特”核心考点深度解析
  • 从原理到实战:构建工业级端到端加密通信系统
  • 告别视频无法保存的烦恼:N_m3u8DL-RE如何让流媒体下载变得轻而易举
  • 瑞萨RA8D2低功耗模式实战:寄存器配置、唤醒机制与避坑指南
  • AntiDupl终极指南:3步快速清理电脑重复图片,轻松释放GB级空间
  • OAuth 2.0强制配置文件链接漏洞:原理、利用与安全加固实战