随着前端技术的快速发展,越来越多的应用选择使用 Node.js 构建后端服务。但是,每次更新后端代码,都需要手动重启应用才能生效,这对于频繁更新的应用来说非常麻烦。为了解决这个问题,我们可以利用 PM2 和 Git 实现自动部署。
什么是 PM2?
PM2 是一个 Node.js 进程管理工具,可以用来管理应用的启动、停止、重启等操作。除此之外,PM2 还提供了负载均衡、错误监控等功能。
什么是 Git?
Git 是一个分布式版本控制系统,可以用来管理代码的版本,也可以用来将代码推送到远程服务器。
利用 PM2 和 Git 实现自动部署的步骤
在本地开发环境和远程服务器上安装 Node.js 和 PM2。
在本地开发环境编写 Node.js 应用代码,并且将代码 push 到远程服务器上的 Git 仓库。
在远程服务器上使用 Git 从仓库中拉取代码,并且使用 PM2 启动 Node.js 应用。
如果需要更新 Node.js 应用代码,只需要在本地开发环境中修改代码并 push 到 Git 仓库即可,远程服务器会自动从仓库中拉取最新代码,并且使用 PM2 重启应用。
1. 安装 Node.js 和 PM2
在本地开发环境和远程服务器上安装 Node.js 和 PM2。可以使用以下命令安装:
# 安装 Node.js sudo apt-get install nodejs # 安装 npm sudo apt-get install npm # 使用 npm 安装 PM2 sudo npm install pm2 -g
2. 编写 Node.js 应用代码并 push 到 Git 仓库
在本地开发环境中编写 Node.js 应用代码,并将代码 push 到远程服务器上的 Git 仓库。
示例代码如下:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ----------------------- ---- -- - -------------- - ---- ----------------------------- -------------- -------------- --------- --- ------------------- -- -- - ------------------- ------- -- ------------------------- ---
3. 在远程服务器上使用 Git 和 PM2 部署应用
在远程服务器上使用 Git 从仓库中拉取代码,并且使用 PM2 启动 Node.js 应用。
首先,在远程服务器上创建一个文件夹用于存放项目代码:
mkdir my-node-app cd my-node-app
然后,使用 Git 从仓库中拉取代码:
git clone <git-url>
接着,进入项目目录,并使用 npm 安装项目依赖:
cd my-node-app npm install
最后,使用 PM2 启动应用:
pm2 start index.js --name my-node-app
这里的 index.js
是项目的入口文件,--name my-node-app
是指定应用的名称。
4. 更新应用代码并重启应用
如果需要更新应用代码,只需要在本地开发环境中修改代码并 push 到 Git 仓库即可,远程服务器会自动从仓库中拉取最新代码,并且使用 PM2 重启应用。
示例代码如下:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ----------------------- ---- -- - -------------- - ---- ----------------------------- -------------- -------------- ------ ----- --- ------------------- -- -- - ------------------- ------- -- ------------------------- ---
然后,回到远程服务器的项目目录,使用 Git pull 拉取最新代码,并重启应用:
cd my-node-app git pull pm2 restart my-node-app
现在,访问 http://localhost:3000/ 就能看到更新后的页面。
总结
利用 PM2 和 Git 实现 Node.js 应用的自动部署,可以让我们的开发流程更加高效,节省时间和精力。下次你更新应用代码的时候,不妨试试这种自动化部署的方式吧。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651fddb995b1f8cacd768b1c