Nestjs项目打包发布

149 篇文章 0 订阅
149 篇文章 0 订阅

在服务器上部署一个 NestJS 项目,通常包括以下步骤:git clone 拉取项目代码,安装依赖,打包项目,启动服务,并确保它在后台运行。以下是详细的操作步骤,基于常见的 Linux 服务器环境(例如 Ubuntu)。

1. 安装 Node.js 和 npm(如果未安装)

确保服务器上已安装了 Node.js 和 npm。以下是安装 Node.js 的步骤(使用 NodeSource):

 

bash

代码解读

复制代码

# 更新系统包 sudo apt update # 安装 Node.js 和 npm(这里使用 18.x 版本) curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt-get install -y nodejs

检查是否成功安装:

 

bash

代码解读

复制代码

node -v npm -v

2. 使用 git clone 获取 NestJS 项目

在服务器上,使用 git clone 克隆你的项目代码:

 

bash

代码解读

复制代码

git clone https://github.com/yourusername/your-nestjs-repo.git

进入项目目录:

 

bash

代码解读

复制代码

cd your-nestjs-repo

3. 安装项目依赖

NestJS 项目依赖于 Node.js 的包管理器 npmyarn。你可以通过以下命令安装项目所需的依赖:

 

bash

代码解读

复制代码

npm install

如果你使用 yarn,则使用:

 

bash

代码解读

复制代码

yarn install

4. 设置环境变量

NestJS 项目通常使用 .env 文件存储环境变量。在服务器上创建 .env 文件并添加必要的配置。

 

bash

代码解读

复制代码

touch .env

.env 文件中添加内容,例如:

 

env

代码解读

复制代码

DATABASE_URL=mongodb://localhost:27017/yourdb PORT=3000 JWT_SECRET=your_secret_key

确保 .env 文件包含你项目所需的所有环境变量。

5. 构建 NestJS 项目

NestJS 项目通常需要通过 npm run build 命令将 TypeScript 编译为 JavaScript。

 

bash

代码解读

复制代码

npm run build

这会在项目的 dist 目录下生成编译后的文件。

6. 启动 NestJS 应用程序

使用以下命令启动编译后的 NestJS 应用程序:

 

bash

代码解读

复制代码

npm run start:prod

或者,使用直接运行命令:

 

bash

代码解读

复制代码

node dist/main.js

7. 使用 PM2 管理 NestJS 应用程序(可选)

为了确保 NestJS 应用程序在服务器重启后能够自动启动,或者在崩溃时自动重启,建议使用 PM2 进程管理器。

安装 PM2

 

bash

代码解读

复制代码

npm install -g pm2

使用 PM2 启动 NestJS 应用:

 

bash

代码解读

复制代码

pm2 start dist/main.js --name "nestjs-app"

你可以查看 PM2 状态:

 

bash

代码解读

复制代码

pm2 status

确保应用程序在服务器重启时自动重启:

 

bash

代码解读

复制代码

pm2 startup pm2 save

8. 设置反向代理(使用 Nginx)

如果你希望通过域名(例如 your-domain.com)来访问 NestJS 应用程序,可以使用 nginx 作为反向代理。首先安装 nginx

 

bash

代码解读

复制代码

sudo apt install nginx

编辑 Nginx 配置文件,指向 NestJS 应用运行的端口(默认为 3000):

 

bash

代码解读

复制代码

sudo nano /etc/nginx/sites-available/default

在文件中添加如下配置:

 

nginx

代码解读

复制代码

server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }

保存并退出后,测试 nginx 配置:

 

bash

代码解读

复制代码

sudo nginx -t

如果配置没有问题,重新加载 nginx

 

bash

代码解读

复制代码

sudo systemctl reload nginx

9. 验证应用程序

此时,你应该可以通过服务器的 IP 地址或绑定的域名访问 NestJS 应用。例如:

 

bash

代码解读

复制代码

http://your-domain.com

总结

  1. 安装 Node.js 和 npm。
  2. 使用 git clone 拉取项目代码。
  3. 安装依赖并设置环境变量。
  4. 编译项目并启动。
  5. 使用 PM2 管理应用的进程(可选)。
  6. 配置 nginx 作为反向代理(可选)。

通过这些步骤,你可以成功在服务器上部署并运行你的 NestJS 项目。

原文链接:https://juejin.cn/post/7415914118997246006

一套目前来说最好的nestjs实战教程,提供QQ长期问答服务. 本人从 08 年到 18 年一直从事于 PHP 的开发。从 18 年开始转向 Typescript+React+Nestjs 的技术栈。目前来说 React 应该是一个非常好用的前端框架,生态非常完善,并且十分灵活简单。Nestjs 则是 Node.js 中唯一且无敌存在的后端 web 框架。因为我个人从事这套技术栈开发已经 4 年多,所以颇有心得,做了这套 React18 视频教程和 Nestjs 实战视频教程。现在视频教程也是刚刚开始做了一部分,还在持续更新。使用 TS 全栈开发可以基本涵盖各种平台的方方面面,比如开发桌面应用的 Electron, 开发小程序的 Taro, 开发 Spa 中后台的 React开发 SSR 网站的 next.js开发移动应用的 React Native, 开发 CLI 的 Yargs, 以及开发后端的 Nestjs。基本学会一套,全面够用,再加上 Monorepo 组织结构,一个仓库所有平台都可以搞定。 包含以下知识点 - 掌握Nestjs框架的依赖注入,模块,提供者,生命周期等概念- 掌握DTO数据验证,响应序列化,异常过滤器等常用功能- 学会编写一些常用的class-validator验证约束- 熟练掌握Typeorm以及Nestjs与Typeorm结合开发- 学会整合Swagger输出Open API文档- 掌握TS装饰器以及反射元数据的定义和使用- 编写一些数据库相关的数据验证约束(比如树形表的同级别某字段唯一验证等)- 学会通过继承并魔改Nestjs源码编写自定义的全局验证器- 可以编写自定义的配置系统以及核心功能包- 学会自定义的代码组织方式(比如教程中我把默认的Nestjs应用改成Util+PluginModule模式)- 掌握编写一些常用的Util仓库(比如数据库,Redis,Restful)- 利用Yargs结合魔改后的框架可以编写一些自定义CLI命令(比如数据迁移,数据填充等)- 掌握如何利用阿里云/腾讯云推送邮件和短信- 掌握使用消息列队(MQ)的方式异步推送邮件和短信- 掌握守卫原理以及编写一些用户验证的守卫- 编写一个完善的用户系统(JWT认证,短信/邮件登录,短信/邮件注册,找回密码,绑定手机和邮箱等)- 熟练地通过编写装饰器去实现一些常用的功能- 通过SSE,WebSockets实现用户的上线,下线以及消息实时推送,消息广播等- 学会使用云存储来上传文件- 学会大文件断点雪川- 实现RBAC的权限系统- 理解请求范围概念以及性能方便的考量- 自己构建配置系统,实现配置验证以及通过YAML或数据库来进行动态配置- 通过适用Vscode进行Debug以及编写Jest测试来提升开发效率与程序的可用性- 学会使用Node来编写自定义的CLI命令- 利用NestCURD进行快速开发- 学会Graphql替代Restful写API- 使用Mongodb替代关系型数据库- 掌握一些常用的打包工具,比如通过ncc打包成单文件,通过pack打包成二进制等- 学会一些常用的部署方式,比如通过nginx+pm2反向代理部署,devops自动化CI,CD等- 学会使用pnpm workspaces来使用monreopo组织代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值