完整教程:【Nginx 】Nginx 部署前端 vue 项目

news/2025/12/14 20:18:33/文章来源:https://www.cnblogs.com/gccbuaa/p/19349786

1. 项目打包

1.1 安装依赖

在项目部署之前,确保开发环境中已安装Node.js和npm,这是运行Vue项目的基础。通过执行npm install命令,可以安装项目所需的所有依赖。这一步是打包流程的前提,确保了后续编译的顺利进行。

根据npm的官方数据,npm install命令在安装依赖时,会根据package.json文件中列出的依赖项进行下载和安装,这个过程通常需要联网操作,并且依赖于npm仓库的响应速度。在网络状况良好的情况下,安装过程可以顺利完成。

1.2 编译项目

项目依赖安装完成后,接下来需要编译Vue项目。编译过程是通过执行npm run build命令来完成的,该命令会触发Vue CLI中的构建脚本,将源代码转换为浏览器可以理解的静态资源。

编译过程中,Webpack作为模块打包器,会根据配置文件vue.config.js中的规则,对项目中的JavaScript、CSS、图片等资源进行打包和优化。这个过程包括代码的压缩、合并、分割等多个步骤,以确保最终生成的静态资源既高效又轻量。

根据Vue CLI的官方文档,编译后的资源会被放置在项目根目录下的dist文件夹中。这个文件夹包含了所有用于生产环境的静态文件,如HTML、CSS、JavaScript等。这些文件是部署到Nginx服务器上的核心内容。

在编译过程中,还可以通过添加环境变量来指定不同的构建环境,例如开发环境、测试环境和生产环境。这样可以确保在不同环境下构建的资源具有相应的优化和配置。

2. 安装Nginx

2.1 Ubuntu/Debian系统

在Ubuntu或Debian系统上安装Nginx通常涉及以下步骤,这些步骤可以确保用户能够快速且正确地安装Nginx服务器。

  • 软件更新:首先,执行sudo apt-get update命令来更新本地软件包索引。这一步是必要的,因为它确保了在安装过程中能够获取到最新的软件包版本。
  • 安装Nginx:通过执行sudo apt-get install nginx命令来安装Nginx。这个过程会自动处理依赖关系,并安装Nginx及其所需的所有组件。
  • 启动服务:安装完成后,使用sudo systemctl start nginx命令启动Nginx服务。这是确保Nginx能够正常工作的第一步。
  • 验证安装:为了验证Nginx是否正确安装和运行,可以通过访问http://localhost或服务器的IP地址来查看Nginx的欢迎页面。如果页面加载成功,说明Nginx已经成功运行。

2.2 CentOS/RHEL系统

在CentOS或RHEL系统上安装Nginx的过程与Ubuntu/Debian略有不同,主要体现在软件包管理器的使用上。

在两种系统中,安装Nginx的过程都相对简单,主要区别在于使用的软件包管理器不同。无论是在Ubuntu/Debian还是CentOS/RHEL系统上,用户都可以遵循上述步骤来安装和验证Nginx服务器。

3. 配置Nginx

3.1 创建Nginx配置文件

创建Nginx配置文件是部署Vue项目的关键步骤之一。以下是一个基本的配置文件示例,它定义了服务器如何响应对Vue应用的请求。

server {listen 80;server_name your_domain_or_ip;root /var/www/my-vue-app/dist;index index.html;location / {try_files $uri $uri/ /index.html;}location ~* .(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot|otf)$ {expires max;log_not_found off;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}
}

在这个配置中,listen 80; 表示服务器监听80端口,server_name your_domain_or_ip; 应替换为你的域名或IP地址。root /var/www/my-vue-app/dist; 指定了Vue项目打包后的静态文件存放位置。location / 块中的 try_files 指令确保了Vue的前端路由能够正确工作,即使在刷新或直接访问非根路径时。

3.2 启用配置文件

启用配置文件通常涉及两个步骤:创建配置文件的符号链接,然后重新加载Nginx配置。

sudo ln -s /etc/nginx/sites-available/my-vue-app /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

首先,使用 ln -s 创建一个符号链接,将你的配置文件链接到 sites-enabled 目录。接着,使用 nginx -t 测试配置文件是否有语法错误。如果没有错误,使用 systemctl restart nginx 命令重启Nginx服务以应用新的配置。

3.3 测试并重启Nginx

在应用了新的Nginx配置之后,需要进行测试以确保一切正常工作。这包括访问Vue应用的主页,以及尝试访问应用中的各个路由,确保它们都能正确加载。

  • 访问应用:在浏览器中输入 http://your_domain_or_ip,检查Vue应用是否能够正确加载。
  • 检查路由:尝试访问应用的不同路由,确保前端路由跳转能够正常工作。
  • 查看日志:如果遇到问题,查看Nginx的错误日志可以提供有用的信息。日志文件通常位于 /var/log/nginx/error.log

如果一切正常,你的Vue应用现在应该已经成功部署在Nginx服务器上了。如果遇到问题,仔细检查配置文件中的指令,确保没有遗漏或错误。

4. 部署Vue项目

4.1 将打包文件上传到服务器

将Vue项目打包后生成的dist目录上传至服务器是部署过程中的关键步骤。根据服务器的操作系统和配置,可以使用多种方法进行上传。

  • 使用scpsftp:这些是Linux系统常用的文件传输协议,可以安全地将文件从本地传输到远程服务器。例如,使用scp -r dist/ username@server_ip:/path/to/remote/命令。
  • 使用rsync:该工具可以同步文件和目录,并且可以保留文件的权限和时间戳,适合于增量备份和镜像。命令示例:rsync -avz --progress dist/ username@server_ip:/path/to/remote/.
  • 使用FTP客户端:如FileZilla等,这些工具提供了图形界面,使得文件传输更加直观和便捷。

一旦文件上传完成,需要确保Nginx可以正确地读取和提供这些文件。这通常意味着需要将文件上传到Nginx配置中指定的root目录。

4.2 设置文件权限

在Linux系统中,文件权限对于服务器的运行至关重要。Nginx服务通常以非root用户运行,因此需要确保该用户有权访问和提供Vue项目文件。

正确设置文件权限是确保Vue项目能够被Nginx正确服务的前提。权限不足可能导致文件无法读取,从而影响网站的访问。

5. 配置SSL(可选)

5.1 安装Certbot

Certbot 是一个开源工具,由 Let’s Encrypt 提供,用于自动化获取和续订 SSL/TLS 证书的过程。安装 Certbot 的步骤通常如下:

5.2 获取证书并配置Nginx

使用 Certbot 获取 SSL 证书并自动配置 Nginx 的步骤如下:

  • 运行 Certbot 命令,指定 Nginx 作为插件,并提供你的域名:

    sudo certbot --nginx -d your_domain_or_ip
  • Certbot 将自动验证你的域名,获取 SSL 证书,并更新 Nginx 配置以使用证书。

  • 配置文件通常更新在 /etc/nginx/sites-available/ 目录下,Certbot 会创建一个包含 SSL 配置的文件。

5.3 自动更新证书

Let’s Encrypt 证书的有效期为 90 天,因此需要定期更新。Certbot 提供了自动更新的功能:

  • 设置自动更新任务,通常通过 cron 定时任务实现:

    echo "0 3 * * * /usr/bin/certbot renew --quiet" | sudo tee -a /etc/crontab > /dev/null
  • 该命令会在每天凌晨 3 点运行 Certbot 以更新证书,确保 SSL 证书始终保持有效状态。

  • 为了确保 Nginx 配置在证书更新后能够正确加载,可以在更新证书后重启 Nginx:

    sudo systemctl restart nginx
  • 通过这种方式,即使在证书更新后,前端 Vue 项目也能够继续通过 HTTPS 安全地提供服务。

6. 测试部署

6.1 访问测试

部署完成后,通过访问服务器的IP地址或绑定的域名来测试Vue项目是否能够正常加载。检查页面元素、脚本和样式是否正常工作,确保没有资源加载错误。

6.2 性能测试

对Vue项目进行性能测试,包括页面加载时间、资源加载时间、白屏时间等关键性能指标的测试。

  • 性能监控工具:使用Google Lighthouse、WebPageTest等工具对项目进行性能评估,根据测试结果优化项目性能。
  • 资源优化:根据测试结果,对项目中的图片、脚本和样式进行压缩和优化,减少HTTP请求次数,提高加载速度。

6.3 安全性测试

验证部署的Vue项目是否符合安全标准,包括但不限于跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等常见的网络安全威胁。

6.4 备份与恢复

为防止数据丢失和系统故障,定期对项目文件和数据库进行备份,并确保能够快速恢复。

  • 备份策略:制定备份计划,包括备份频率、备份存储位置和备份数据的保留时间。
  • 恢复演练:定期进行数据恢复演练,验证备份数据的有效性和恢复流程的可行性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1014777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB 风力发电系统低电压穿越之串电阻策略探索

MATLAB 风力发电系统低电压穿越—串电阻策略 低电压穿越 双馈风力发电机 本人研究方向电机控制与故障诊断嘿,大家好!今天来聊聊我在电机控制与故障诊断研究方向中,关于 MATLAB 风力发电系统低电压穿越的串电阻策略这块有趣的内容。咱们都知道…

Best 5 Anime AI Video Tools in 2026 (Free)

If you’re trying to turn real footage into “anime-looking” clips in 2026, the market basically splits into two workflows:Video-to-video style transfer (you already have footage; you want an anime “…

探索 S7 - 1200 地铁屏蔽门控制系统

地铁屏蔽门控制系统,S7-1200地铁屏蔽门控制系统,地铁门控制系统,系统才用西门子博途,S7-1200PLC编程,wincc组态,包括PLC组态仿真画面在现代城市轨道交通中,地铁屏蔽门控制系统起着至关重要的作用…

探索高压无桥PFC:原理图、PCB与源代码之旅

高压无桥PFC原理图PCB源代码资料在电力电子领域,功率因数校正(PFC)技术对于提高电能利用效率、降低谐波污染至关重要。而高压无桥PFC作为一种新兴的技术方案,正逐渐崭露头角。今天,咱就一起来深入探究下高压无桥PFC的原…

探索非线性电液伺服系统:基于ESO的反步滑模控制之旅

非线性电液伺服系统,基于ESO(扩张状态观测器)的反步滑模控制。 pdf教程matlab/simulink源程序。 s—函数搭建 1.通过扩展状态观测器估计速度、加速度和总扰动; 2.根据在线估计的系统模型,设计包含反步控制和滑模控制的控制率,对实际系统进行控…

Java中如何检测死锁?如何预防和避免线程死锁?

Java死锁实战指南:从检测到预防的完整解决方案 在并发编程中,死锁如同一个隐形的陷阱,随时可能让高性能应用陷入瘫痪。当多个线程相互等待对方释放锁时,程序便会永久停滞。 本文将提供一套完整的死锁解决方案:首先介绍…

自动化测试-关键数据记录(日志+截图+页面源码)

文章目录1. 自动化测试中的关键数据?2. 配置日志3. 截图4. pagesource源码记录总结✨✨✨学习的道路很枯燥,希望我们能并肩走下来! 编程真是一件很奇妙的东西。你只是浅尝辄止,那么只会觉得枯燥乏味,像对待任务似的应…

做题记录2.0

日期 任务||目标 题目 完成情况 算法 易错点 思维难度 总结2022/4/28 入门经典P220-P240 汤姆斯的天堂梦 AC 动态规划 循环嵌套 查看题解 输入数据存不下时,输入的时候运算归并排序 AC 分治 循环嵌套,范围限制 程序实…

DAY11@浙大疏锦行

笔记:参数优化步骤:1.在调参前,先建立基线模型:- 使用**默认参数**训练模型- 记录性能指标作为**对比基准**- 后续调参效果以此为参照2.对参数进行定义1️⃣ 网格搜索 (GridSearchCV)- 需要定义参数的**固定列表**(par…

1分钟升级Nature正刊中的蛋白质跨膜结构域

买家秀 R9AP 的 N 端定位于细胞表面。通过 TMHMM预测 R9AP 的定位。 卖家秀 DeepTMHMM 预测的拓扑结构 输入 >sp|Q6ZS82|R9BP_HUMAN Regulator of G-protein signaling 9-binding protein OS=Homo sapiens OX=9606 GN=RGS9BP PE=1 SV=1 MAREECKALLDGLNKTTACYHHLVLTVGGSAD…

MC Workbench6.4电机位置控制

MC Workbench6.4电机位置控制 之前的 MC Workbench 版本一直缺少原生位置控制功能,给电机控制开发带来不少不便。而 6.4 版本终于补齐了这个短板,本文就带大家一步步实现 STM32G431 电机开发板的位置控制,从工程创建到实际运行全程详解&…

30、Nagios配置与使用全攻略

Nagios配置与使用全攻略 1. Nagios配置基础 Nagios的所有配置都通过“Configuration”选项卡完成。GroundWork将自身配置信息存储在MySQL数据库中。当你在界面上进行更改时,这些更改首先会反映在数据库里。只有当你提交更改后,GroundWork才会将配置转换为单独的Nagios配置文…

分治算法刷题总结

148. 排序链表 两个思路,一种是从顶向下的排序,另外的一种是从低向上的归并排序,归并排序的复杂度是NLogN class Solution {public ListNode sortList(ListNode head) {if (head == null || head.next == null)retu…

IPv4地址与IPv6地址

如大家所了解的,互联网协议地址(Internet Protocol Address,简称IP地址),是分配给网络上使用互联网协议(IP)的每个设备(如计算机、服务器、智能手机等)的数字标签。IP地址…

Fluent中颗粒流模拟的门道

Fluent的颗粒流 稀疏颗粒常使用DPM模型进行解决 不考虑颗粒碰撞变形,但考虑颗粒之间的碰撞行为,可以使用欧拉颗粒流模型 考虑颗粒碰撞摩擦以及变形,可以使用其内置的DEM模型,也可以采用与其他DEM软件耦合处理 考虑颗粒在运动过程…

31、Ubuntu 服务器虚拟化与 KVM 配置指南

Ubuntu 服务器虚拟化与 KVM 配置指南 在当今的系统管理领域,虚拟化技术无疑是最热门的趋势之一。通过虚拟化,你能够在同一硬件上创建多个 Ubuntu 实例,并且为每个虚拟机分配服务器的部分资源。现代服务器拥有强大的处理能力,借助虚拟化技术,你可以充分挖掘硬件的潜力。本…

官宣:汇纳科技收购华速实业;融速科技完成A+轮融资;3D打印单季破40亿美元|库周报

2025年12月14日,以下是过去一周内3D打印行业发生的事情,包括“大事件” 、“行业动态” 、“趣制造” 、“融资/并购” 、“新产品”等内容。—— 大事件 ——正式官宣!汇纳科技收购华速实业12月13日,汇纳科技全资子公司金石汇纳宣…

详谈:解释器模式(二)

接上文。看到这个需求,我们很容易想到一种写法:将输入的字符串分割成单个字符,把数字字符通过switch-case转换为数字,再通过计算符判断是加法还是减法,对应做加、减计算,最后返回结果即可。计划的确可行&am…

新能源逆变器那些事儿:阻抗建模、扫频验证与稳定性分析

并网逆变器阻抗建模,扫频模型扫频验证,仿真模型稳定性分析,功率控制 新能源 变流器 逆变器 虚拟同步控制 逆变器 复现 逆变器阻抗建模及阻抗扫描验证序阻抗建模与稳定性分析 可设置扫描范围、扫描点数 程序附带注释 包括 逆变器仿真模型&…

OpenAI 放大招!GPT-5.2 重磅发布:碾压谷歌 Gemini,替你做 PPT / 写代码,国内这样用最划算

OpenAI放大招!GPT-5.2重磅发布:碾压谷歌Gemini,替你做PPT/写代码,国内这样用最划算 昨晚,AI圈炸了!OpenAI如期推出新模型GPT-5.2,这次直接瞄准“专业知识型工作”——不管是做PPT、写代码&…