在前端开发中,部署是不可避免的一个环节。而部署过程往往是相当繁琐和复杂的。针对这个问题,pm2 应运而生。pm2 是一款基于 Node.js 的进程管理工具,它为我们提供了开箱即用的服务,使得应用的部署变得轻松而且可靠。
pm2 的安装及基本使用
安装 pm2
- 全局安装 pm2:
npm install -g pm2
。 - 查看当前 pm2 的版本:
pm2 -v
。
基本使用
要启动应用程序,只需要在终端中运行以下命令:pm2 start app.js
,其中 app.js 指的是应用程序的文件名。如果应用程序的文件名为 index.js,那么直接执行 pm2 start
就可以了。
如果你的应用程序是由多个文件组成的,你可以把前两个命令改成:pm2 start my-app.js --name "my-app"
。
快速重启和停止应用程序有两种方法:
- 重启命令:
pm2 restart app_name
- 停止命令:
pm2 stop app_name
或者pm2 kill
查看运行状态
- 查看当前正在运行的应用程序列表:
pm2 list
。 - 查看应用程序的详细信息:
pm2 show app_name
。 - 监视应用程序运行状态:
pm2 monit
更多的使用指导请参考 pm2 的官方文档:http://pm2.keymetrics.io/docs/usage/quick-start/
使用 ecosystem.config.js 文件
在运行 pm2 的时候,我们可以使用 ecosystem.config.js 文件来配置应用程序的启动方式。该文件允许我们设置环境变量,以及定义应用程序的数量、日志和监听端口等信息。
下面就是一个示例的 ecosystem.config.js 文件:
-- -------------------- ---- ------- -------------- - - ---- - -- ----- --------- ------- --------- ---- - --------- ------------ -- --------------- - --------- ------------ - --- ------ - - ---------- - - ---- - --------------- ---- - ------------------ --- - ---------------- ---- - ----------------- ---- - ---------------------- ------------- - ---- ------- -- --- ------ ------------------- ----- ----------- - - --展开代码
简单解释一下:
name
:应用程序的名称。script
: 应用程序的启动文件。env
和env_production
:设置环境变量。deploy
: 部署部分的配置信息。
使用 pm2 部署应用程序
我们可以通过以下步骤来使用 pm2 部署我们的应用程序:
- 在远程服务器上创建一个文件夹来存放应用程序文件。
- 在该文件夹中使用 Git 初始化一个空的仓库。
- 将应用程序的文件打包成一个 tar 包,并上传至服务器。
- 解压上传的 tar 包。
- 安装依赖并启动应用程序。
在这个过程中,首先需要在 Git 中进行配置。Git 是一个分布式的版本控制系统,我们需要通过 Git 将本地代码库与远程服务器上的代码库进行同步。这个过程中需要使用 Git 的 push 和 pull 命令,因此需要先配置 SSH 密钥。
步骤
- 在服务器上创建一个新的目录,例如:
/var/www/your-app
。 - 在该目录下使用 Git 初始化一个新的仓库:
git init
。 - 在本地使用命令:
tar czvf your-app.tar.gz *
,将当前目录中的所有文件打包成一个名为your-app.tar.gz
的压缩文件。 - 上传压缩文件到服务器的
/var/www/your-app
目录下。 - 将压缩文件解压缩:
tar xzvf your-app.tar.gz
。 - 安装依赖:
npm install --production
。 - 启动应用程序:
pm2 start app.js
在进行以上操作时,我们可以直接在服务器上操作,也可以通过本地终端连接到服务器上进行。
使用 pm2 部署应用程序十分方便,而且可以大大减少部署的时间和难度。建议提前学习 pm2 的用法,以便在开发过程中能够快速、高效地部署我们的应用程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67c9a01be46428fe9e15392b