前言
博主最近在开发一款记账应用,前端和后端都开发完了,准备部署到服务器访问,在部署的过程中遇到挺多坑的,以此记录写下这篇文章,来帮助更多遇到部署问题朋友们。
部署流程
部署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
可视化操作
下面演示的可视化操作,不过也可以通过 命令行操作
配置 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端口)。
检测是否成功开发端口
博主我的服务器系统是 centos 系统,查看端口状态是使用的 ss
命令. 不同操作系统,指令不同。
ss -tuln
部署成功
最后以上流程都跑通的话,就可以访问项目了,域名和端口号都在Nginx配置过了。通过 域名+端口号就可以成功访问你的项目了。
http://服务器域名/或者IP地址:端口号/
http://xxx.xx.xxx.xxx:8089/
即可完成访问了
最后
各位小伙伴,文章到这里就告一段落了!整个 Nest.js 部署的过程咱们可真是踩了不少坑,但这些坑也算是给咱们上了一堂实战课。如果你觉得这篇文章对你在部署 Nest.js 到服务器的路上有帮助,就麻烦给个小心心,表达一下你的认可!咱们可不会就此结束,公众号会持续不断地更新更多有趣的、接地气的干货内容。咱们以后还会探讨更多踩坑经验、实用技巧,确保你在开发中不再迷茫。
觉得不错的话,欢迎转发+关注,我更有动力更新更多的干货。