如何使用pm2自动部署Next.js项目
source link: https://baozi.fun/2020/09/09/centos-pm2-run-nextjs
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
先在服务器上实现远程git的免密登陆权限
生成一组SSH密钥
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' -C "[email protected]"
"[email protected]"是自己的绑定邮箱
将新生产的私钥生效
ssh-agent bash && ssh-add ~/.ssh/id_rsaexit
将下面命令输出的公钥复制,并配置到远程服务
cat ~/.ssh/id_rsa.pub
实现本地到远程git的免密登陆权限
这个步骤也可以参考上面的教程
实现本地免密登陆远程centos
服务器
在使用pm2之前,我们还有一些准备工作。
我们需要将通过上面教程生成的id_rsa.pub来实现本地免密登陆远程Centos
服务器
scp ~/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
username:用户名
127.X.X.X:你的远程ip地址
执行后会输入一次密码,然后显示下面信息,说明配置好了
id_rsa.pub 100% 402 10.2KB/s 00:00
pm2简介
pm2(process manager)是一个进程管理工具,维护一个进程列表,可以用它来管理你的node进程,负责所有正在运行的进程,并查看node进程的状态,也支持性能监控,负载均衡等功能。
使用pm2管理的node程序的好处
- 监听文件变化,自动重启程序
- 支持性能监控
- 程序崩溃自动重启
- 服务器重新启动时自动重新启动
- 自动化部署项目
安装 pm2
npm install -g pm2
在服务器上创建项目文件夹
为了方便管理,我们在新建一个文件夹 /opt/app/halo-xue-react-next
(路径建议自定义,这里只是方便演示),进入文件夹,将需要部署的项目 clone 到当前目录。
mkdir /opt/app/halo-xue-react-next
执行了上面的操作后,接下来我们就需要在本地进行操作了
ecosystem.json
然后,我们在本机需要部署的项目中新建文件 ecosystem.json
,并写入如下内容。
{ "apps" : [{ "name" : "halo blog", "script" : "server.js", // 启动文件位置,需要修改 "env": { "COMMON_VARIABLE": "true" }, "env_production" : { "NODE_ENV": "production" } }], "deploy" : { "production" : { "user" : "username", // 服务器用户名,需要修改 "host" : ["123.x.x.x"], // 服务器地址,需要修改 "ref" : "origin/master", // 项目branch,视情况修改 "repo" : "[email protected]", // 项目地址,需要修改 "path" : "/opt/app/halo-xue-react-next", // 当前项目位置,需要修改 "pre-setup" : "rm -rf /opt/app/halo-xue-react-next/source", //需要修改 "post-deploy" : "npm install && npm run build && pm2 startOrRestart ecosystem.json --env production", // 可以不修改,建议使用 cnpm 安装 "ssh_options": "StrictHostKeyChecking=no", "env" : { "NODE_ENV": "production" } } }}
更多配置参考官网:http://pm2.keymetrics.io/docs/usage/deployment/
提交ecosystem.json
git add ecosystem.jsongit commit -m "Deploy: add ecosystem.json"git push origin master
部署pm2配置
在存在ecosystem.json
文件的目录下执行下面命令。
pm2 deploy ecosystem.json production setup
成功的话,会打印如下信息。
这一步,如果重复执行会提示:fatal: 目标路径 '/opt/app/react-next-xue/source' 已经存在,并且不是一个空目录。
这就只需要将这个目录删除就可以了。 本为有一个很简单的方案:"pre-setup" : "rm -rf /opt/app/halo-xue-react-next/source"
这会在每次部署的时候删除source
使用pm2自动部署
在存在ecosystem.json
文件的目录下执行下面命令。
pm2 deploy ecosystem.json production
成功的话,会打印如下信息。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK