Nest服务服务器部署太easy!手把手教你拿下!

文摘   科技   2024-01-31 14:28   上海  

前言

博主最近在开发一款记账应用,前端和后端都开发完了,准备部署到服务器访问,在部署的过程中遇到挺多坑的,以此记录写下这篇文章,来帮助更多遇到部署问题朋友们。

部署流程


部署Nest 服务

上传项目到服务器

我们可以使用 Git, SCP, FTP等方式 将项目上传到服务器, 本文演示的是使用的可视化 宝塔面板。一般项目会放置在  服务器端 /www/wwwroot 这个位置。上传项目时,把项目中的必要文件上传即可,然后在服务器项目目录下运行**npm install****yarn**以安装项目依赖。

上传项目到/www/wwwroot这个路径下

在项目中执行 npm run build 或者 pnpm run build 去构建服务项目。

配置 PM2

PM2 定义

PM2是一个带有负载均衡功能的Node.js应用的进程管理器。它能够用来管理和守护你的应用程序,确保它们无间断地运行。

  1. 进程守护:PM2会自动重启应用程序,如果应用程序崩溃或者停止了。
  2. 负载均衡:PM2允许应用程序在多个进程中运行,这能有效地利用多核CPU提升性能。
  3. 日志管理:PM2会保存并管理应用程序的日志文件,方便问题追踪和调试。
  4. 监控:PM2提供了命令行工具及其它界面来监控应用程序的状态和性能。
  5. 零秒停机重载:应用程序的更新和重加载可以在不需要停机的情况下完成。
  6. 启动脚本:PM2可以帮助生成系统启动时启动应用程序的脚本。

PM2是在命令行中使用的。一些常用的PM2命令包括:

  • pm2 start app.js:启动名为app.js的应用程序。
  • pm2 list:列出由PM2管理的所有应用程序。
  • pm2 stop app_name/id:停止指定名称或ID的应用程序。
  • pm2 restart app_name/id:重启指定名称或ID的应用程序。
  • pm2 delete app_name/id:从PM2列表中删除指定名称或ID的应用程序。
  • pm2 monit:监控当前PM2管理的所有应用程序的CPU和内存使用情况。

安装PM2

npm install -g pm2

启动项目 PM2

在项目目录下,使用终端输入下面指令 即可启动 Nest服务。

pm2 start dist/main.js --name nest-app

查看项目运行状态

查看项目运行状态以及运行日志记录

pm2 status
pm2 logs nest-app

可视化操作

下面演示的可视化操作,不过也可以通过 命令行操作

image.png

配置 Nginx

Nginx定义

Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。它的一些特点:

  1. 静态内容:Nginx非常擅长处理静态内容,它能够直接向客户端快速提供静态文件,如HTML文件、图片等。
  2. 负载均衡:Nginx可以将用户的请求分发到后端不同的服务器上,作为负载均衡器,这有助于提高后端应用程序处理并发请求的能力。
  3. 反向代理:作为反向代理,Nginx在客户端与一个或多个后端服务器之间代理请求,控制和优化用户请求与服务器之间的数据流。
  4. 缓存:Nginx能够缓存后端服务器的内容,减少服务器的负载和响应时间。
  5. 安全:通过SSL/TLS协议为网站提供了HTTPS,这是安全密切相关的服务。

Nginx 文件构成

它由 这几个模块组成 :events、http、server和location块:

  • events:这部分通常用来设置Nginx如何与客户端建立连接。
  • http:这是全局的HTTP设置块,可以定义Web服务器的多项功能。
  • server:定义具体的服务器设置,一个Nginx实例可以有多个server块,用来处理不同的域名和端口请求。
  • location:定义如何处理特定路径的请求,例如某个路径的请求由哪个后端服务器处理。

配置Nest 项目 Nginx

当配置完 Nginx 时,需要重启Nginx。

   server {
       listen 80;
       server_name yourdomain.com; # 替换为你的域名

       location / {
           proxy_pass http://localhost:3000; # 假设Nest.js应用运行在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;
       }
   }

修改配置后通过sudo nginx -t检查配置没有错误,然后重启Nginx使配置生效

可视化配置 Nginx

在宝塔中配置 Nginx

配置云服务器 安全组

配置安全组 开放端口

配置了安全组后,这样允许到Nest.js应用所使用端口的流量(如3000端口)。

image.png

检测是否成功开发端口

博主我的服务器系统是 centos 系统,查看端口状态是使用的 ss命令. 不同操作系统,指令不同。

ss -tuln
image.png

部署成功

最后以上流程都跑通的话,就可以访问项目了,域名和端口号都在Nginx配置过了。通过 域名+端口号就可以成功访问你的项目了。

http://服务器域名/或者IP地址:端口号/


http://xxx.xx.xxx.xxx:8089/ 

即可完成访问了

最后

各位小伙伴,文章到这里就告一段落了!整个 Nest.js 部署的过程咱们可真是踩了不少坑,但这些坑也算是给咱们上了一堂实战课。如果你觉得这篇文章对你在部署 Nest.js 到服务器的路上有帮助,就麻烦给个小心心,表达一下你的认可!咱们可不会就此结束,公众号会持续不断地更新更多有趣的、接地气的干货内容。咱们以后还会探讨更多踩坑经验、实用技巧,确保你在开发中不再迷茫。

觉得不错的话,欢迎转发+关注,我更有动力更新更多的干货。



前端自学社区
海军,专注Web前端领域开发,分享开发经验与最新前端技术。