Nest.js 实战 (十五):前后端分离项目部署的最佳实践

news2024/11/27 0:16:49

☘️ 前言

本项目是一个采用现代前端框架 Vue3 与后端 Node.js 框架 Nest.js 实现的前后端分离架构的应用。Vue3 提供了高性能的前端组件化解决方案,而 Nest.js 则利用 TypeScript 带来的类型安全和模块化优势构建了一个健壮的服务端应用。通过这种技术栈组合,我们不仅实现了快速开发,同时也保证了应用的可维护性和扩展性。

随着项目的开发完成,接下来将详细介绍如何将这个应用部署到生产环境,以便让最终用户能够访问并使用我们的服务。

这里以 1Panel面板 为例,其它的运维平台应该大差不差。

🌳 准备阶段

  • 云服务器: 安装 1Panel面板,并安装后端服务数据库。
  • 域名:完成实名认证,并完成域名备案。
  • SSL 证书:建议使用,可在腾讯云 SSL申请免费证书。

🌴 部署 Node 服务

  1. 将后端整个文件夹(除了 node_modules)打包上传到服务器
    在这里插入图片描述

  2. 创建数据库,并上传本地数据库文件
    在这里插入图片描述

  3. 复制用户名和密码,打开根目录的 .env 文件,填入用户名和密码:
    在这里插入图片描述

  4. 进入 网站-运行环境-Node.js 面板,点击 创建运行环境,根据自己实际需求填入配置:
    在这里插入图片描述

  5. 稍等几分钟,如果看到状态显示 已启动,并且查看日志无报错异常,则说明服务运行正常,这里记住端口号,等下我们部署前端应用做反向代理会用到。

🌵 部署 web 应用

  1. 网站-网站 点击 创建网站,选择 静态网站,填入所需网站信息:
    在这里插入图片描述

  2. 进入网站目录,将 web 应用打包的 dist 文件夹上传并解压:
    在这里插入图片描述

  3. 进入网站配置,设置网站目录,选择刚上传解压的 dist 目录:
    在这里插入图片描述

  4. 进入 网站-证书,点击 上传证书,将申请的证书信息填入
    在这里插入图片描述

  5. 进入网站配置,点击 HTTPS 选项,选择相应的网站证书:
    在这里插入图片描述

到这里,我们的 web
应用就部署成功了,打开域名应该就能看到网站信息了。但这时候还不能访问后端服务,我们需要做反向代理,将接口请求转发到后端服务。

🌱 配置反向代理

一般现在前后端分离项目,前端的接口请求都有一个共同前缀,比如:/api等。

进入网站配置,点击反向代理-创建,填入代理信息:
在这里插入图片描述

这样配置后,当我们访问 https://vue3.baiwumm.com/api/login 的地址时,服务器内部会做一个转发,相当于访问了服务器内部的:http:127.0.0.1:6689/login 请求。

如果有多个接口前缀,或者有其他如图片服务的前缀,那就配置多个代理,道理是一样的。

如果顺利的话,重新刷新页面,就能看到前端能正常请求数据了。

🪴 常见问题

这里罗列一下项目部署中我遇到最常见的问题:

  1. 前端请求接口,页面直接报 404
    答:这个是网站的反向代理没有成功,检查一下网站配置中的反向代理配置,看看是不是前缀不一致等问题。

  2. 前端请求接口,服务报 502
    答:这个是网站的反向代理成功了,但是后端服务没启动成功,检查一下 Node.js 服务日志是否有报错,状态是否显示 已启动 绿色标志。

  3. 接口能正常请求,但 sql 语句报错
    答:这个是后端服务启动成功了,前端也能正常请求,但可能由于数据库缺失表,或者服务本身 sql 语句有误,检查数据库每张表的信息是否完整,根据 sql 报错信息检查。

这几个问题是我部署过程中最常见的问题,如果是首次部署,也许可能会遇到各种奇奇怪怪的问题,我们可问度娘或者有经验的开发者,一一排查解决。
祝君部署应用一路绿灯!

🌹 总结

本篇文章是根据我的项目 Vue3 Admin 部署经验,可供大家参考,希望对大家有帮助!😘

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

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

相关文章

信雅纳Chimera 100G网络损伤仪助力Parallel Wireless开展5G RAN无线前传网络的损伤模拟

背景介绍 Parallel Wireless 为移动运营商提供唯一全覆盖的(5G/4G/3G/2G)软件支持的本地 OpenRAN (ORAN) 解决方案。该公司与全球 50 多家领先运营商合作,并被 Telefonica 和 Vodafone 评为表现最佳的供应商。Parallel Wireless 在多技术、开放式虚拟化…

【多视图聚类】【ICCV 2023】基于交叉视图拓扑一致互补信息的深度多视图聚类

0.论文摘要 多视图聚类旨在从不同的来源或视角提取有价值的信息。多年来,深度神经网络在多视图聚类中展示了其优越的表示学习能力,并取得了令人印象深刻的性能。然而,大多数现有的深度聚类方法致力于合并和探索跨多个视图的一致潜在表示&…

Java网络编程的基础:计算机网络

在学习 Java 网络编程之前,我们先来了解什么是计算机网络。 计算机网络是指两台或更多的计算机组成的网络,在同一个网络中,任意两台计算机都可以直接通信,因为所有计算机都需要遵循同一种网络协议。 下面是一张简化的网络拓扑图…

工业以太网之战:EtherCAT是如何杀出重围的?

前言 EtherCAT 是一种开放的实时工业以太网协议,由德国倍福公司开发并在 2003 年 4 月的汉诺威工业博览会上首次亮相,目前由 EtherCAT 技术协会(ETG)进行维护和推广。经过 21 年的不断发展,EtherCAT 显示出极强的生命…

2.1_Linux发展与基础

Linux基础知识 Shell 命令执行环境: 命令提示符的组成:(用户名主机名)-[当前路径]权限提示符,例:(kali㉿kali)-[~]$ ~ 表示所在目录为家目录:其中root用户的家目录是/root,普通用户的家目录在/home下 # 表示用户的权…

Python酷库之旅-第三方库Pandas(148)

目录 一、用法精讲 671、pandas.Timestamp.day_name方法 671-1、语法 671-2、参数 671-3、功能 671-4、返回值 671-5、说明 671-6、用法 671-6-1、数据准备 671-6-2、代码示例 671-6-3、结果输出 672、pandas.Timestamp.dst方法 672-1、语法 672-2、参数 672-3、…

JAVA二手交易发布闲置好物回收系统小程序源码

🎉二手交易新风尚!发布闲置好物,回收系统助你环保又赚钱✨ 🏠闲置物品大变身,开启绿色生活新篇章🌿 嘿宝贝们!是不是家里总有一些东西,明明还很新却因为种种原因被束之高阁&#x…

PROFINET开发或EtherNet/IP开发嵌入式板有用于工业称重秤

这是一个真实案例,不过客户选择不透露其品牌名称。稳联技术的嵌入式解决方案助力工业称重设备制造商连接至任意工业网络。多网络连接使得称重设备能够轻松接入不同的控制系统,进而加快产品的上市时间。 我们找到了稳联技术的解决方案。他们成熟的技术与专…

使用Shell脚本对Java应用等服务进行启停控制(支持批量)

通过shell脚本对Java服务启停进行控制。支持单个服务和多个服务的 start、stop、status、restart。支持自定义启动命令。(不限于Java服务,适用于各类通过命令行启动的服务) 脚本名称为 runjar.sh , 底部提供源码。通过三部分进行说明&#xf…

【Dv2Admin】Django配置线上ws反向代理

在 Web 应用程序的部署过程中,安全性、稳定性和实时通信是开发者们普遍关注的重点。Django 是一个非常流行的 Web 框架,常与 Nginx 配合使用,以便实现反向代理、负载均衡以及 SSL 加密等功能。除此之外,实时功能(如 WebSocket)也是现代应用中经常使用的技术。 在项目中实…

用户一键注册登录(一)- 对接短信平台

1. 流程图 2. 详细设计 2.1 用户表结构设计 CREATE TABLE users (id varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,mobile varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 手机号,nickname varchar(16) CHARACT…

回忆Web编程的岁月变迁

目录 引子 记忆的片断 CGI / ISAPI 何为 CGI / ISAPI ? 一个小插曲 ASP与我的ASP Builder ASP编程技术 何为 Windows DNA ? 什么是 COM ? ASP.NET 什么是 ActiveX ? IntraBuilder与我的InterBuilder 结尾 引子 凌晨三点醒了,大多的时候是…

数据结构(JAVA)JDK17语法新增特性

目录 yield关键字var关键字空指针异常密封类接口中的私有方法instanceof其他 yield关键字 yield关键字用于case的代码块中返回值。 正常switch语句 public static void main(String[] args) {int result 0;String str "a";switch (str) {case "a" :resu…

根据发生异常的汇编指令以及函数调用堆栈,从内存的角度出发,估计出问题的可能原因,确定排查方向,快速定位C++软件问题

目录 1、前言 2、初步分析dump文件 3、加载更多模块的pdb文件,可能能看到更多行的函数调用堆栈 4、从内存的角度去看,估计是访问了野指针导致的,沿着这个怀疑的方向快速地定位了问题 5、最后 C软件异常排查从入门到精通系列教程&#xf…

【安当产品应用案例100集】024-BYOE及BYOK在IaaS场景中的应用

在云计算环境中,尤其是涉及到敏感数据时,企业用户可能会选择自带加密工具或密钥(即BYOE或BYOK),以确保数据在传输和存储过程中的安全性。这种方式可以防止云服务提供商访问或泄露加密数据,增强数据保护。 …

离散数学 第二讲 特殊集合和集合间关系 笔记 [电子科大]王丽杰

1.2 特殊集合与集合间关系 空集 不含任何元素的集合叫做空集(empty set),记作∅. 空集可以符号化为 ∅ { x ∣ x ≠ x } ∅ \{ x|x ≠ x\} ∅{x∣xx} . 空集是绝对唯一的。 全集 针对一个具体范围,我们考虑的所有对象的集合叫做全集(universal se…

基于springboot招聘信息管理系统设计与实现(源码+定制+开发)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

视频美颜平台是如何搭建的?基于直播美颜SDK源码的开发技术详解

今天,笔者将详细讲解如何基于直播美颜SDK源码搭建视频美颜平台的技术路径。 一、理解视频美颜技术 视频美颜技术主要通过图像处理算法对视频流进行实时处理,包括肤色优化、瑕疵修复、面部特征增强等。实现这一目标需要高效的图像处理算法和稳定的实时渲…

5个最流行的图像嵌入模型对比

最近需要研究图像相似性搜索。我想知道基于架构训练方法的嵌入之间是否存在差异。但是,很少有博客比较几种模型之间的嵌入。因此,在这篇博客中,我将使用 Flickr 数据集 [6] 比较 EfficientNet [1]、ViT [2]、DINO-v2 [3]、CLIP [4] 和 BLIP-2…

Matlab软件进行金融时间序列数据的描述性统计代码

1、数据S&P500的收盘价格,return100*log(pt/pt-1) 方法1:用python代码 import numpy as np import pandas as pddef calculate_log_returns(prices):"""计算价格序列的对数收益率。参数:prices (numpy.array): 价格序列。返回:log_…