前言
博主最近在开发一款记账应用,前端和后端都开发完了,准备部署到服务器访问,在部署的过程中遇到挺多坑的,以此记录写下这篇文章,来帮助更多遇到部署问题朋友们。
部署流程
部署Nest 服务
上传项目到服务器
我们可以使用 Git, SCP, FTP等方式 将项目上传到服务器, 本文演示的是使用的可视化 宝塔面板。一般项目会放置在 服务器端 /www/wwwroot 这个位置。上传项目时,把项目中的必要文件上传即可,然后在服务器项目目录下运行**npm install**或 **yarn**以安装项目依赖。
上传项目到
/www/wwwroot这个路径下
在项目中执行 npm run build 或者 pnpm run build 去构建服务项目。
配置 PM2
PM2 定义
PM2是一个带有负载均衡功能的Node.js应用的进程管理器。它能够用来管理和守护你的应用程序,确保它们无间断地运行。
- 进程守护 :PM2会自动重启应用程序,如果应用程序崩溃或者停止了。
- 负载均衡 :PM2允许应用程序在多个进程中运行,这能有效地利用多核CPU提升性能。
- 日志管理 :PM2会保存并管理应用程序的日志文件,方便问题追踪和调试。
- 监控 :PM2提供了命令行工具及其它界面来监控应用程序的状态和性能。
- 零秒停机重载 :应用程序的更新和重加载可以在不需要停机的情况下完成。
- 启动脚本 :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)代理服务器。它的一些特点:
- 静态内容 :Nginx非常擅长处理静态内容,它能够直接向客户端快速提供静态文件,如HTML文件、图片等。
- 负载均衡 :Nginx可以将用户的请求分发到后端不同的服务器上,作为负载均衡器,这有助于提高后端应用程序处理并发请求的能力。
- 反向代理 :作为反向代理,Nginx在客户端与一个或多个后端服务器之间代理请求,控制和优化用户请求与服务器之间的数据流。
- 缓存 :Nginx能够缓存后端服务器的内容,减少服务器的负载和响应时间。
- 安全 :通过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 到服务器的路上有帮助,就麻烦给个小心心,表达一下你的认可!咱们可不会就此结束,公众号会持续不断地更新更多有趣的、接地气的干货内容。咱们以后还会探讨更多踩坑经验、实用技巧,确保你在开发中不再迷茫。
觉得不错的话,欢迎转发+关注,我更有动力更新更多的干货。
