前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用pm2自动部署Next.js项目

如何使用pm2自动部署Next.js项目

原创
作者头像
Qwe7
发布2022-02-16 13:52:26
4.3K0
发布2022-02-16 13:52:26
举报
文章被收录于专栏:网络收集

先在服务器上实现远程git的免密登陆权限

生成一组SSH密钥

代码语言:javascript
复制
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' -C "xxx@qq.com"

将新生产的私钥生效

代码语言:javascript
复制
ssh-agent bash && ssh-add  ~/.ssh/id_rsaexit

将下面命令输出的公钥复制,并配置到远程服务

代码语言:javascript
复制
cat ~/.ssh/id_rsa.pub

实现本地到远程git的免密登陆权限

这个步骤也可以参考上面的教程

实现本地免密登陆远程centos服务器

在使用pm2之前,我们还有一些准备工作。

我们需要将通过上面教程生成的id_rsa.pub来实现本地免密登陆远程Centos服务器

代码语言:javascript
复制
scp ~/.ssh/id_rsa.pub username@127.X.X.X:/root/.ssh/authorized_keys

username:用户名

127.X.X.X:你的远程ip地址

执行后会输入一次密码,然后显示下面信息,说明配置好了

代码语言:javascript
复制
id_rsa.pub                                    100%  402    10.2KB/s   00:00

pm2简介

pm2(process manager)是一个进程管理工具,维护一个进程列表,可以用它来管理你的node进程,负责所有正在运行的进程,并查看node进程的状态,也支持性能监控,负载均衡等功能。

使用pm2管理的node程序的好处

  1. 监听文件变化,自动重启程序
  2. 支持性能监控
  3. 负载均衡
  4. 程序崩溃自动重启
  5. 服务器重新启动时自动重新启动
  6. 自动化部署项目

安装 pm2

代码语言:javascript
复制
npm install -g pm2

使用

在服务器上创建项目文件夹

为了方便管理,我们在新建一个文件夹 /opt/app/halo-xue-react-next(路径建议自定义,这里只是方便演示),进入文件夹,将需要部署的项目 clone 到当前目录。

代码语言:javascript
复制
mkdir /opt/app/halo-xue-react-next

执行了上面的操作后,接下来我们就需要在本地进行操作了

ecosystem.json

然后,我们在本机需要部署的项目中新建文件 ecosystem.json,并写入如下内容。

代码语言:javascript
复制
{    "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" : "git@xxx.git", // 项目地址,需要修改                 "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

代码语言:javascript
复制
git add ecosystem.jsongit commit -m "Deploy: add ecosystem.json"git push origin master

部署pm2配置

在存在ecosystem.json文件的目录下执行下面命令。

代码语言:javascript
复制
pm2 deploy ecosystem.json production setup

成功的话,会打印如下信息。

pm2 deploy ecosystem.json production setup
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文件的目录下执行下面命令。

代码语言:javascript
复制
pm2 deploy ecosystem.json production

成功的话,会打印如下信息。

pm2 deploy ecosystem.json production
pm2 deploy ecosystem.json production

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 先在服务器上实现远程git的免密登陆权限
  • 实现本地到远程git的免密登陆权限
  • 实现本地免密登陆远程centos服务器
  • pm2简介
    • 使用pm2管理的node程序的好处
    • 安装 pm2
    • 使用
      • 在服务器上创建项目文件夹
        • ecosystem.json
          • 提交ecosystem.json
            • 部署pm2配置
              • 使用pm2自动部署
              相关产品与服务
              对象存储
              对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档