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

宝塔部署 Vue + NestJS 全栈项目

这里写自定义目录标题

  • 前言
  • 一、Node.js版本管理器
    • 1、安装
    • 2、配置
  • 二、NestJS项目管理(等同Node项目)
    • 1、Git安装
    • 2、拉取项目代码
    • 3、无法自动认证
    • 4、添加Node项目
    • 5、配置防火墙(两道)
  • 三、Vue项目管理
    • 1、项目上传
    • 2、Nginx安装
    • 3、配置防火墙(两道)
  • 四、MongoDB
    • 1、安装
    • 2、安全认证
    • 3、配置防火墙(两道)
  • 五、Redis
    • 1、安装
    • 2、配置
    • 3、配置防火墙(两道)
  • 总结

前言

之前写过一篇宝塔部署nodejs项目,当时使用的pm2工具。后来pm2下架了,这次使用 Node.js版本管理器 工具。部署操作前,请先准备好你的 Vue 和 NestJS 项目代码,打开你的服务器和宝塔面板,我们这就开始。

一、Node.js版本管理器

1、安装

打开宝塔面板-软件商店,搜索pm2。

在这里插入图片描述

可以看到该工具已下架,提示使用 Node.js版本管理器,我们直接安装系统推荐的 2.6版本 。建议都安装系统推荐版本,除非你对各软件版本非常熟悉,下面会举例遇到的版本问题。

2、配置

在这里插入图片描述

打开 Node.js 版本管理器,你会发现列举的Node版本很少。可以点击右上角 更新版本列表 来获取所有Node版本,然后左上角选择 显示所有版本 就能选择你的Node版本了。

Node安装完成后,命令行版本选择 你的Node版本 。在下面Node版本列表中,右边 模块 可以进行模块管理,例如:pnpm

在这里插入图片描述

二、NestJS项目管理(等同Node项目)

1、Git安装

我们这里选择用 git 来管理项目代码。

在这里插入图片描述

在软件商店中搜索git没有想要的结果,这里选择命令行下载,在左侧菜单打开终端,输入相应系统的命令行进行下载。

  • CentOS/RedHat:
yum install -y git
  • Ubuntu/Debian:
apt-get update
apt-get install -y git

安装完成后输入命令行查看版本

git -v

在这里插入图片描述

当前 git 版本: 2.43.5

2、拉取项目代码

这里使用的 Gitee 管理远程仓库,打开仓库的 克隆/下载
在这里插入图片描述
在这里插入图片描述

按照提示,执行命令完成配置,并将 公钥 配置到仓库中。简单说一下,个人设置中有 SSH公钥,仓库设置中有 公钥管理。后者只能访问本仓库,并且只允许以 只读 的方式访问仓库。

完成配置后打开宝塔面板,打开左侧文件菜单,进入 根目录 > www > wwwroot 目录,在当前目录打开 终端,把上面 git clone 命令复制到 终端 执行。

在这里插入图片描述

3、无法自动认证

在这里插入图片描述

如果你遇到 无法自动认证 问题,打开左侧 安全 菜单,打开 SSH开关 即可解决。

在这里插入图片描述

4、添加Node项目

现在你的项目代码已经拉取到服务器中,地址:根目录 > www > wwwroot > your-project。下面打开左侧 网站 菜单,切换到 Node项目 导航栏,打开 添加Node项目

在这里插入图片描述

这里我们添加一个 默认项目

在这里插入图片描述

在项目目录选择 根目录 > www > wwwroot > your-project 导入项目,项目名称启动选项 会自动获取。

package.json

启动模式

启动选项 自动获取package.json文件中的启动模式,选择 build:nest build。启动模式是自定义的,不一定和这里相同。

包管理器注意和本地环境相同,后面的 不安装node_module 是智能勾选,如果你手动安装过就默认取消勾选。

确定添加项目后,项目会自动运行并构建生产环境代码 your-project/dist,项目的状态应该为 运行中

在这里插入图片描述

如果状态是其他,可以打开右侧 设置 > 项目日志 查看报错信息。

your-project/dist 构建完成后,如果没有连接数据库操作,打开右侧 设置 > 项目配置 > 启动选项 改成 start:prod:NODE_ENV=prod node dist/main,保存修改。prod 是根据环境文件 .env.prod 获取的,可以自定义。

5、配置防火墙(两道)

打开左侧 安全 菜单,开启防火墙 并且 添加端口规则,端口填写 your-project 监听的端口。(如果需要连接数据库,下面有Mongodb和Redis的连接步骤

打开 服务器面板,对防火墙执行相同操作。然后回到 宝塔面板 > 网站,重启你的项目。使用apifox/postman请求接口验证是否成功。

三、Vue项目管理

前端项目有两种部署方式,第一种是静态文件托管,第二种是前端独立部署(CDN或Nginx)。这里选择Nginx部署。

1、项目上传

宝塔面板 > 文件根目录 > www > wwwroot 目录下,新建一个 vue-demo 文件夹,进入文件夹,将你前端项目打包后的dist文件夹中所有文件上传。此处默认你的公共基础路径(vite中的base)为 ./

在这里插入图片描述

2、Nginx安装

在软件商店直接安装即可,系统置顶推荐是 1.24版本,这里就选它。

打开 Nginx > 配置文件,按照下面修改

server{listen 888; // 端口,默认888server_name host; // 主机,IP或域名#error_page   404   /404.html;include enable-php.conf;# Vue前端配置location / {root /www/wwwroot/vue-demo; // 前端项目地址try_files $uri $uri/ /index.html; // 路由相关index index.html; // 入口文件}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${root /www/wwwroot/vue-demo; // 图像地址,别忘!expires      30d;}location ~ .*\.(js|css)?${root /www/wwwroot/vue-demo; // js|css 地址,别忘!expires      12h;}location ~ /\.{deny all;}# NestJS API 代理location /prod-api/ {proxy_pass http://host:port/; // 代理地址proxy_http_version 1.1;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";# 超时设置proxy_connect_timeout 60s;proxy_send_timeout 60s;proxy_read_timeout 60s;send_timeout 60s;}access_log  /www/wwwlogs/access.log;}

这步主要遇到的问题就是网页能打开,引用 js|css 一直是 404。注意,图像和js|css的地址不要忘记配置。

3、配置防火墙(两道)

这一步和前面一样,换一个监听端口,不再重复。

配置成功后重启Nginx服务,网页打开 host:888 就能正常打开了。

四、MongoDB

1、安装

在软件商店中下载系统置顶推荐的 7.0.8版本,为什么我前面要说一句 建议都安装系统推荐版本 呢,这儿就是原因。因为我本地开发下载的MongoDB8.0,本着环境统一原则也想安装8.0版本。下拉找到了,但是安装一直失败。网上寻求帮助后,大致结论就是宝塔上的8.0存在问题。

2、安全认证

上面只是个小问题,宝塔的MongoDB 还存在一个离谱问题。正常情况下,MongoDB都会开启安全认证,在此之前,我们先通过 终端 添加几个用户。

// mongo shell 工具
mongosh// 切换 admin 数据库
use admin// 创建用户
db.createUser({user: "root",pwd: "123456",roles: [{ role: "root", db: "admin" }]
})db.createUser({user: "admin",pwd: "123456",roles: [{ role: "userAdminAnyDatabase", db: "admin" }]
})// 切换 new_db 数据库,不存在的话新建并切换
use new_dbdb.createUser({user: "newAdmin",pwd: "123456",roles: [{ role: "dbOwner", db: "new_db" }]
})

创建用户成功,该开启安全认证了。打开 软件商店 > MongoDB
注意! 千万不要通过 配置项 去修改安全认证!
注意! 千万不要通过 配置项 去修改安全认证!
注意! 千万不要通过 配置项 去修改安全认证!
它会导致 根目录 > www > server > mongodb > log > configsvr.pid 文件丢失,更严重的是,卸载重装也没用!我最终是重置系统解决的。

建议通过配置文件修改:

net:port: 27017bindIp: 0.0.0.0security:authorization: enabledjavascriptEnabled: false

主要修改 bindIpauthorization 这两个,保存修改内容。

3、配置防火墙(两道)

这一步和前面一样,换一个监听端口,不再重复。

配置成功后重启MongoDB服务,通过终端命令测试连接是否成功

telnet host port

五、Redis

1、安装

在软件商店中下载系统置顶推荐的 7.4.3版本

2、配置

打开 Redis > 配置文件 修改:

bind 0.0.0.0requirepass 123456

bind:绑定IP
requirepass:redis密码

3、配置防火墙(两道)

这一步和前面一样,换一个监听端口,不再重复。

配置成功后重启MongoDB服务,通过终端命令测试连接是否成功

telnet host port

总结

以上我们就完成了 前端+后端+数据库 的部署,前前后后也是踩了不少奇怪的坑,希望能帮到大家。

相关文章:

  • 【开源工具】音频格式转换大师:基于PyQt5与FFmpeg的高效格式转换工具开发全解析
  • (一)微服务(垂直API)
  • 大疆上云API+流媒体服务器部署实现直播功能
  • 中国移动咪咕助力第五届全国人工智能大赛“AI+数智创新”专项赛道开展
  • JAVA单商户易联云小票打印替换模板
  • java对接bacnet ip协议(跨网段方式)
  • ⭐ Unity AVProVideo插件自带播放器 脚本重构 实现视频激活重置功能
  • azure web app创建分步指南
  • WPF响应式UI的基础:INotifyPropertyChanged
  • WPF的交互核心:命令系统(ICommand)
  • 工控机安装lubuntu系统
  • 跨平台浏览器集成库JxBrowser 支持 Chrome 扩展程序,高效赋能 Java 桌面应用
  • 玛哈特校平机实战指南:选型、应用痛点
  • Java String的使用续 -- StringBuilder类和StringBuffer
  • OpenCV---minAreaRect
  • Java八股-数据类型转换有哪些?类型互转会有什么问题?为什么用bigDecimal 不用double ?自动装箱和拆箱?包装类?
  • QML 滑动与翻转效果(Flickable与Flipable)
  • 随记 配置服务器的ssl整个过程
  • 华为云Flexus+DeepSeek征文 | 基于Dify和DeepSeek-R1开发企业级AI Agent全流程指南
  • Python训练营打卡Day40
  • 租用了空间 怎样上传网站程序/前端seo搜索引擎优化
  • 动态网站设计与实现论文/厦门seo排名优化公司
  • 专用车网站建设多少钱/搭建一个网站的流程
  • 自己做网站做什么内容/百度seo优化推广公司
  • 做网站需要哪些证书/网络营销整合推广
  • 淘宝基地网站怎么做/登封网站建设公司