Node.js 是一种非常流行的服务器端异步 JavaScript 运行环境,它支持极高的并发连接,而且可以轻松地进行扩展。在世界范围内已经有许多使用 Node.js 来进行 Web 开发的公司。
随着 Node.js 的普及,越来越多的人开始使用 PM2 来管理 Node.js 应用。PM2 是一个高级的 Node.js 进程管理器,可以有助于您将应用程序部署到生产环境中,并为其提供各种有用的功能。在本文中,我们将详细介绍如何使用 PM2 对 Node.js 应用进行部署,以及如何使它们在服务器上运行稳定且高效。
准备工作
在开始使用 PM2 之前,您需要在您的服务器上安装 Node.js 和 NPM。如果您还没有安装 Node.js,请按照以下步骤进行操作:
- 访问 Node.js 的官方网站 https://nodejs.org/
- 选择与您的操作系统相对应的版本,下载并安装。
安装完成后,您可以在终端中输入以下命令来验证是否成功安装:
node -v npm -v
如果您看到类似于以下输出,则表明您已成功安装:
v14.17.4 6.14.14
安装 PM2
安装 Node.js 和 NPM 后,您可以使用以下命令在全局范围内安装 PM2:
npm install -g pm2
安装完成后,您可以通过以下命令检查 PM2 是否成功安装:
pm2 -v
部署 Node.js 应用
下面是一个简单的 Node.js 应用程序,它用来创建一个 HTTP 服务器,然后输出“Hello World”:
const http = require('http'); const server = http.createServer((req, res) => { res.end('Hello World'); }); server.listen(8080);
为了将此应用程序部署到生产服务器上,您可以执行以下命令:
pm2 start app.js --name demo-app
此命令将启动应用程序并将其命名为“demo-app”。启动成功后,您可以使用以下命令来查看当前正在运行的应用程序:
pm2 list
注意到,此时我们只是将 Node.js 应用程序作为一个进程启动,这并不足以让您的应用程序在生产环境中稳定运行下去。接下来,我们将介绍使用 PM2 提供的其他功能来管理应用程序。
配置 PM2
PM2 在启动应用程序时,基于配置设置一些属性。可以通过以下命令来设置应用程序的配置属性:
pm2 set key value
例如,您可以使用以下命令来将日志文件存储在指定目录下:
pm2 set pm2-log:custom_path /var/log/pm2
环境变量
在应用程序的配置文件中,可以使用环境变量来配置一些私密信息,例如数据库密码、API 密钥等敏感信息。在 PM2 中,可以使用 env
属性来配置环境变量。例如,使用以下配置文件 app.config.js
:
-- -------------------- ---- ------- -------------- - - ----- -- ----- ----------- ------- ----------- ---- - --------- ------------- ------------ -------------------- -- --------------- - --------- ------------- ------------ ------------------------------- - -- -展开代码
在这个例子中,我们设置了两个环境变量,一个是 NODE_ENV
,另一个是 DB_PASSWORD
。根据指定的模式,应用程序将使用相应的配置。
监控 PM2
PM2 提供了许多有用的指令,可以用来监控正在运行的应用程序,例如 CPU、内存占用等。以下是一些常用的命令:
监听应用程序的日志
pm2 logs demo-app
查看应用程序的内存占用
pm2 monit demo-app
查看应用程序的 CPU 占用
pm2 monit demo-app
查看应用程序的状态
pm2 status
停止应用程序
pm2 stop demo-app
重启应用程序
pm2 restart demo-app
结论
通过使用 PM2,您可以轻松地将 Node.js 应用程序部署到生产服务器上,并为其提供各种功能,如自动重启、负载均衡、监控等。还可以为您的应用程序提供有用的配置属性,例如环境变量、日志文件、多个进程等。
本文涵盖了一些有用的 PM2 指令及其功能,但还有更多可以使用的功能。我们鼓励您继续学习 PM2 文档,并着手实践来熟练掌握这个强大的工具。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/670dcad05f551281025e69af