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

若依Vue3前后端分离项目宝塔部署实战:从环境配置到Nginx调优

1. 环境准备与宝塔面板初始化部署若依Vue3前后端分离项目前服务器环境准备是重中之重。我建议选择CentOS 7.6或Ubuntu 20.04这类长期支持版本的操作系统它们与宝塔面板的兼容性最好。记得在购买云服务器时勾选安全组放行80/443端口选项否则后续部署时会遇到无法访问的尴尬情况。安装宝塔面板时有个小技巧使用SSH连接服务器后先执行yum update -y或apt update apt upgrade -y更新系统能避免很多依赖冲突问题。我实测过这个步骤能减少30%的安装报错概率。安装命令推荐用官方的# CentOS yum install -y wget wget -O install.sh http://download.bt.cn/install/install_6.0.sh sh install.sh # Ubuntu wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh sudo bash install.sh安装完成后记得在宝塔面板的安全页面放行后端服务端口比如我习惯用5082和SSH端口。有个坑我踩过部分云厂商需要在控制台和安全组双重放行端口否则外网还是无法访问。2. 后端项目部署实战2.1 数据库配置技巧在宝塔面板创建数据库时建议字符集选择utf8mb4这个编码支持完整的emoji表情存储。导入SQL文件有个隐藏技巧如果文件较大超过50MB先用宝塔的压缩/解压功能把SQL文件上传到服务器再通过命令行导入mysql -u root -p 数据库名 /路径/ruoyi.sql这样比用phpMyAdmin网页导入更稳定我处理过300MB的数据库文件网页导入十次有九次会超时失败。2.2 生产环境配置优化修改application-prod.yml时这几个参数需要特别注意server: port: 5082 # 必须与宝塔Java项目配置一致 tomcat: max-threads: 200 # 生产环境建议200-500 min-spare-threads: 20 spring: datasource: druid: initial-size: 5 # 根据服务器内存调整 max-active: 20 # 小型项目10-20足够 validation-query: SELECT 1 FROM DUAL # MySQL健康检查日志路径配置建议使用绝对路径比如/www/server/ruoyi/logs。我遇到过相对路径导致的权限问题最后发现是systemd服务的工作目录不一致引起的。2.3 打包与部署细节用Maven打包时推荐加上生产环境参数mvn clean package -Dmaven.test.skiptrue -Pprod上传jar包到宝塔后在Java项目添加时要注意项目路径选择包含lib目录的上级文件夹JDK版本选择与开发环境一致的可用java -version确认项目端口必须与yml配置完全一致有个容易忽略的点在项目配置里建议勾选自动重启这样服务器异常重启后服务会自动恢复。去年我们线上服务宕机就是因为没开这个选项半夜爬起来手动重启。3. 前端Vue3项目部署3.1 生产环境构建优化修改.env.production文件时API地址建议用环境变量注入VUE_APP_BASE_API https://api.yourdomain.com构建命令使用--modern参数可以生成现代模式代码yarn build:prod --modern这会产生两个版本的代码新版浏览器加载更小的包兼容性更好。实测首屏加载时间能减少15%左右。3.2 静态资源部署技巧上传dist文件夹时我推荐用宝塔的压缩上传→解压方式本地将dist文件夹压缩为zip宝塔文件管理上传到/www/wwwroot/frontend右键解压并重命名为dist这样比直接上传文件夹快3倍以上特别是node_modules特别大的时候。记得在宝塔添加站点时选择静态网站即使项目是PHP也选这个运行目录指定为/www/wwwroot/frontend/dist关闭防跨站攻击(open_basedir)3.3 Nginx高级配置在站点设置的配置文件里这几个关键配置缺一不可location / { try_files $uri $uri/ /index.html; # 缓存静态资源 expires 30d; add_header Cache-Control public; } location /prod-api/ { proxy_pass http://127.0.0.1:5082/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; proxy_read_timeout 300s; # WebSocket需要 # 真实IP传递 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }遇到过403 forbidden错误试试这个location / { # 解决vue-router history模式404 try_files $uri $uri/ /index.html; # 解决403目录浏览问题 autoindex off; }4. HTTPS与性能调优4.1 免费SSL证书配置宝塔的Lets Encrypt证书申请有个隐藏技巧先关闭CDN再申请否则DNS验证经常失败。配置完成后在Nginx配置里加入HSTS增强安全server { listen 443 ssl http2; ssl_stapling on; ssl_stapling_verify on; add_header Strict-Transport-Security max-age63072000; includeSubdomains; preload; }4.2 性能优化参数在宝塔面板的Nginx→性能调整里建议修改worker_processes设为CPU核心数cat /proc/cpuinfo| grep processor | wc -l查看worker_connections建议2048开启Gzip压缩在Nginx配置里已经有默认模板对于高并发场景还需要调整Linux内核参数。在/etc/sysctl.conf末尾添加net.core.somaxconn 65535 net.ipv4.tcp_max_syn_backlog 65535 net.ipv4.tcp_tw_reuse 1执行sysctl -p生效。这些参数让我们的电商项目扛住了双十一流量。5. 常见问题排查指南5.1 404/405错误终极解决方案遇到接口404问题按这个顺序检查Nginx的proxy_pass末尾是否有/有和没有区别很大后端服务是否真的启动ps -ef|grep java宝塔防火墙是否放行端口云服务器安全组规则405错误通常是跨域问题除了Nginx配置外可以在后端添加Configuration public class CorsConfig implements WebMvcConfigurer { Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(/**) .allowedOrigins(*) .allowedMethods(*) .maxAge(3600); } }5.2 静态资源加载异常CSS/JS文件404检查项目打包时的publicPath是否正确Nginx的root目录是否指向dist文件权限建议chown -R www:www /www/wwwroot有个经典坑vue-cli3项目需要设置publicPath: ./否则加载路径会错乱。这个问题我帮三个客户解决过都是同样的情况。6. 高级部署方案6.1 动静分离部署对于高并发项目建议把静态资源放到CDN修改vue.config.jspublicPath: process.env.NODE_ENV production ? https://cdn.yourdomain.com/ : /把dist/static上传到CDNNginx配置添加location /static/ { proxy_pass https://cdn.yourdomain.com/; }6.2 集群化部署当单机性能不足时可以后端部署多实例不同端口Nginx配置负载均衡upstream ruoyi { server 127.0.0.1:5082 weight5; server 127.0.0.1:5083 weight3; server 127.0.0.1:5084 weight2; } location /prod-api/ { proxy_pass http://ruoyi; }记得在宝塔每添加一个Java项目就要新建一个站点目录避免日志文件冲突。

相关文章:

若依Vue3前后端分离项目宝塔部署实战:从环境配置到Nginx调优

1. 环境准备与宝塔面板初始化 部署若依Vue3前后端分离项目前,服务器环境准备是重中之重。我建议选择CentOS 7.6或Ubuntu 20.04这类长期支持版本的操作系统,它们与宝塔面板的兼容性最好。记得在购买云服务器时勾选"安全组放行80/443端口"选项&a…...

千问3.5-27B轻量级部署方案:单卡A100适配路径与性能衰减评估

千问3.5-27B轻量级部署方案:单卡A100适配路径与性能衰减评估 1. 引言:当大模型遇上单卡部署 如果你手头只有一张A100,却想跑起来一个270亿参数的大模型,是不是觉得有点异想天开?别急着放弃,这篇文章就是为…...

RexUniNLU真实生成效果:医疗问诊记录中症状实体+情感倾向联合输出

RexUniNLU真实生成效果:医疗问诊记录中症状实体情感倾向联合输出 1. 引言:当AI能看懂病历和感受情绪 想象一下,一位医生每天要面对几十份电子病历和问诊记录。他需要快速找出病人的关键症状,同时还要判断病人描述病情时的情绪状…...

在Termux中构建高效C++开发环境:Vim插件与LSP的完美结合

1. 为什么选择Termux进行C开发? 在移动设备上写代码听起来像行为艺术,但Termux让这件事变得异常实用。我最初在平板上配置这个环境只是为了应急调试,结果现在80%的C小项目都在这里完成。相比传统IDE,这个组合有几个致命优势&#…...

3分钟解锁网易云音乐NCM格式限制:ncmdumpGUI终极使用指南

3分钟解锁网易云音乐NCM格式限制:ncmdumpGUI终极使用指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经遇到过这样的困扰?…...

GLM-4.1V-9B-Base真实作品:政务办事指南截图→办事条件+材料清单+流程图解

GLM-4.1V-9B-Base真实作品:政务办事指南截图→办事条件材料清单流程图解 1. 模型能力展示:政务场景的视觉理解 今天我要带大家看一个特别实用的案例 - 如何用GLM-4.1V-9B-Base模型快速解析政务办事指南截图。这类图片通常包含办事条件、材料清单和流程…...

Playwright Python:企业级跨浏览器自动化测试的战略解决方案

Playwright Python:企业级跨浏览器自动化测试的战略解决方案 【免费下载链接】playwright-python Python version of the Playwright testing and automation library. 项目地址: https://gitcode.com/GitHub_Trending/pl/playwright-python 在当今快速发展的…...

Golang如何处理JSON空值null_Golang JSON空值处理教程【精通】

Go解析JSON时null被忽略或panic的解决方法:用*string等指针类型接收可空字段;对三态需求(null/空值/缺失)用NullString;避免interface{}和滥用json.RawMessage;优先用标准库,第三方库仅在性能或…...

5分钟快速上手:Windows游戏文本提取神器Textractor终极指南 [特殊字符]

5分钟快速上手:Windows游戏文本提取神器Textractor终极指南 🎮 【免费下载链接】Textractor Extracts text from video games and visual novels. Highly extensible. 项目地址: https://gitcode.com/gh_mirrors/te/Textractor Textractor是一款功…...

GitHub进阶玩法全解析,零基础可快速上手进阶高手,轻松解决各类常见难题。

GitHub高级使用方法大全:从分支管理到自动化工作流 目录 开篇:超越基础,进入工程化协作高级分支策略:不只是存放代码提交的艺术:让每次提交都有价值Pull Request进阶:打造高效Code Review流程GitHub Acti…...

STM32F4实战:如何把PA15从JTAG引脚变身为SPI3_NSS(附完整代码)

STM32F4实战:PA15引脚功能重构与SPI3_NSS高效配置指南 当你在STM32F4系列MCU上开发SPI3外设驱动时,可能会遇到一个棘手的问题:SPI3_NSS功能引脚PA15默认被分配为JTAG接口的JTDI功能。这种引脚功能冲突在实际项目中并不罕见,但解决…...

C# NetTopologySuite+ProjNet 实现复杂几何图形坐标转换实战

1. 为什么需要坐标转换? 在地理信息系统(GIS)开发中,我们经常会遇到不同坐标系之间的数据转换问题。比如你拿到一份建筑用地红线图,用的是地方坐标系,而地图平台要求使用国家2000坐标系,这时候就…...

别再让机械臂乱动了!详解ROS2中Gazebo与MoveIt2的控制器配置与通信原理

别再让机械臂乱动了!详解ROS2中Gazebo与MoveIt2的控制器配置与通信原理 当你在RViz2中精心规划的轨迹,到了Gazebo仿真中却变成机械臂抽搐乱舞的"迷惑行为"时,问题往往出在控制器配置这个关键环节。本文将带你深入ros2_control框架…...

全网最细!OpenClaw 工具系统深度解析:从原子能力到企业级安全,AI 智能体的“万能手脚“完全指南

一、前言:OpenClaw 工具——AI 智能体从"聊天"到"干活"的核心分水岭 当 AI 大模型(GPT/Claude/Gemini)解决了"思考与理解"的问题后,真正决定智能体价值的,是它能否落地执行、操作现实与…...

ESP32-S3单片机入门:点灯

硬件准备 所需硬件:ESP32-S3开发板、LED、电阻、杜邦线、面包板、USB线(可传输数据) 了解硬件 ESP32-S3开发板 ESP32-S3 技术规格书 | 乐鑫科技文档 LED 电阻 作用:把电能转化为热能或其它形式的能量&#xff0…...

别再死记硬背栈顶指针了!用C语言手把手实现顺序栈(附完整可运行代码)

从零构建C语言顺序栈:破解栈顶指针的终极迷思 初学数据结构时,栈顶指针的初始值设定总是让人困惑——为什么有的教材用top -1,有的却用top 0?这看似简单的数字差异,背后却隐藏着对栈本质理解的深刻分歧。本文将用300…...

YOLOv8模型部署避坑指南:从.pt到ONNX转换,这些细节决定了推理速度与精度

YOLOv8模型部署性能优化实战:从ONNX转换到推理加速的深度调优 在计算机视觉领域,YOLOv8凭借其出色的实时检测性能已经成为工业界的热门选择。但许多开发者发现,即使训练出了高精度的.pt模型,在实际部署为ONNX格式后,推…...

数据链路层核心技术:封装成帧与透明传输的实战解析

1. 数据链路层功能概述 数据链路层是计算机网络体系结构中承上启下的关键层级。想象一下,如果把网络通信比作寄快递,物理层负责的是"把包裹从一个站点运到另一个站点"这个基础动作,而数据链路层则是确保"包裹完整无误地送达&q…...

图图的嗨丝造相-Z-Image-Turbo部署案例:高校数字艺术课程AI绘图实验平台搭建实践

图图的嗨丝造相-Z-Image-Turbo部署案例:高校数字艺术课程AI绘图实验平台搭建实践 1. 引言:当AI绘图走进艺术课堂 想象一下,在高校的数字艺术设计课上,学生们不再仅仅学习传统的Photoshop或手绘板技巧。他们打开浏览器&#xff0…...

vivado hls中对设计进行最优化

一、vivado hls优化本质 vivado hls设计优化,是利用指令对c/c串行代码进行并行化优化。 这个优化是通过directives指令来指导HLS综合工具来实现的,至于底层怎么优化,设计者是没办法知道和窥探的。二、vivado hls优化策略的核心指标 1.through…...

艾默生15kW直流充电模块DCDC控制软件分析

系统概述 艾默生15kW直流充电模块是一款高性能的电力转换设备,采用DSP2803x系列数字信号处理器作为核心控制器。该软件系统实现了对直流-直流(DCDC)转换器的精确控制,具备完善的保护机制和通信功能。 核心架构设计 1. 控制系统…...

vivado hls的ap_ctrl_none的使用

一、说明 1.ap_ctrl_none:最精简的模式,不产生任何握手信号,模块依靠数据有效信号持续工作 2.ap_ctrl_none也就是free-run模式,永动机模式 3.ap_ctrl_none的应用高度依赖于#pragma HLS dataflow指令,目的是在数据流区域…...

三相PFC控制固件代码功能解析

概述 本文档详细分析了一个用于三相功率因数校正(PFC)控制系统的嵌入式固件代码。该代码基于特定的处理器架构,实现了复杂的电力电子控制算法,主要用于车载充电系统等高性能电源应用场景。 系统架构 硬件抽象层 代码通过硬件抽象层…...

Attify OS 1.3:一站式IoT安全评估虚拟环境的搭建与核心工具实战

1. Attify OS 1.3:物联网安全测试的瑞士军刀 第一次接触物联网设备安全测试时,我被各种工具链的配置折磨得够呛。直到发现Attify OS这个神器,才明白原来环境搭建可以这么简单。Attify OS 1.3是专为物联网安全评估设计的Linux发行版&#xff0…...

K8s 工具安装文档 — Harbor + ArgoCD

环境信息 项目详情主机 IP8.147.67.244(内网 172.16.78.0)操作系统Rocky Linux 9.7 (Blue Onyx)内核5.14.0-611.36.1.el9_7.x86_64Kubernetesv1.35.0容器运行时containerd 2.2.2CNICalico v3.29.1内存14Gi磁盘50G (已用 ~6.5G)节点单节点 (k8s-master, …...

三合一跨平台音乐播放器:VutronMusic 完整使用指南

三合一跨平台音乐播放器:VutronMusic 完整使用指南 【免费下载链接】VutronMusic 高颜值的第三方网易云播放器;支持流媒体音乐,如navidrome、jellyfin、emby;支持本地音乐播放、离线歌单、逐字歌词、桌面歌词、Touch Bar歌词、Mac…...

WixSharp实战:从零构建MSI安装包的完整指南

1. WixSharp简介与环境准备 第一次接触软件打包时,我被各种XML配置搞得头大,直到发现了WixSharp这个神器。简单来说,WixSharp允许你用熟悉的C#代码来生成MSI安装包,完全避开了传统WiX工具需要手动编写XML的繁琐流程。就像用高级语…...

MathLive CSS路径重构指南:从dist到根目录的平滑迁移方案

MathLive CSS路径重构指南:从dist到根目录的平滑迁移方案 【免费下载链接】mathlive Web components for math display and input 项目地址: https://gitcode.com/gh_mirrors/ma/mathlive 还在为升级MathLive后页面样式突然失效而烦恼吗?自从Math…...

实时体积云渲染进阶:Perlin与Worley噪声的混合艺术

1. 理解体积云渲染的基础噪声 在实时体积云渲染中,噪声算法扮演着关键角色。就像画家需要不同的笔触来表现云层的质感,我们需要Perlin和Worley这两种基础噪声来构建云的形态。这两种噪声各有特点,理解它们的差异是混合使用的前提。 Perlin噪声…...

PLECS C-Script实战:手把手教你用代码生成三相SVPWM调制波(附完整代码)

PLECS C-Script实战:手把手教你用代码生成三相SVPWM调制波(附完整代码) 在电力电子领域,空间矢量脉宽调制(SVPWM)技术因其优异的电压利用率和平滑的输出波形,已成为三相逆变器控制的核心算法。但…...