Back

【node记录】使用pm2和git自动化部署远程nuxt.js和node项目

1、pm2简介
pm2(process manager)是一个进程管理工具,维护一个进程列表,可以用它来管理你的node进程,负责所有正在运行的进程,并查看node进程的状态,也支持性能监控,负载均衡等功能。
1.1、使用pm2管理的node程序的好处
1.监听文件变化,自动重启程序
2.支持性能监控
3.负载均衡
4.程序崩溃自动重启
5.服务器重新启动时自动重新启动
6.自动化部署项目
2、pm2安装与使用
2.1、全局安装(在安装node的环境下)

npm install pm2 -g

2.2、常用命令

启动index.js文件node服务,并且监听文件改变。

pm2 start index.js --watch

查看当前所有pm2启动node进程的列表

pm2 list

图片描述

根据pm2进程的id停止对应的进程。

pm2 stop id | all为停止所有进程

根据pm2进程的id删除对应的进程

pm2 delete id | all为删除所有进程

根据pm2进程id重启该进程

pm2 restart id | all为重启所有进程*

2.3 启动npm run dev等命令

pm2 start npm --name "my-nuxt" -- run dev

3.采用git和pm2进行自动化部署远程nuxt.js和node项目

3.1 在项目根目录下新建一个 deploy.yaml 文件

# deploy.yaml
apps:
  - script: ./index.js       # 入口文件
    name: 'text'              # 程序名称
    env:                     # 环境变量
      COMMON_VARIABLE: true
    env_production:
      NODE_ENV: production
deploy:                     # 部署脚本
  production:               # 生产环境
    user: lentoo            # 服务器的用户名
    host: 0.0.0.0     # 你的服务器的ip地址
    port: 22                # ssh端口
    ref: origin/master      # 要拉取的git分支
    ssh_options: StrictHostKeyChecking=no # SSH 公钥检查
    repo: https://github.com/**.git # 远程仓库地址
    path: /home              # 拉取到服务器某个目录下
    pre-deploy: git fetch --all # 部署前执行
    post-deploy: npm install &&  pm2 reload deploy.yaml --env production # 部署后执行
    env:
      NODE_ENV: production

3.2 要在服务器端配置好git的ssh免密认证秘钥

ssh-keygen -t rsa -C "xxx@xxx.com"

在~/.ssh目录下有 id_rsa和 id_rsa.pub两个文件,其中id_rsa.pub文件里存放的即是公钥key,然后把里面内容复制到你的github账号里面。
秘钥配置好就可以部署项目了
3.3 初始化部署
首先把代码全部提交到远程仓库,然后执行

pm2 deploy deploy.yaml production setup

第一次部署的时候会多次提升输入服务器密码,按照提示输入服务器密码即可。
可能会出现的问题:
1.22端口连接失败,可以检查服务器是不是防火墙没关,service iptables stop关闭防火墙。
2.git的ssh秘钥没有配置好也会导致连接失败。
如果部署全部没问题,在短暂的等待后就可以看到最后scuess成功的提示,就可以去打开域名进行查看项目是否部署好了。
3.4每次更新代码后再次自动化部署
在把新代码也推送到远程仓库后,执行

pm2 deploy deploy.yaml production upddate

就会重新部署代码,自动重启远程项目,成功后可以查看项目是否更改成功。
4.不仅可以部署node项目和nuxt.js,该部署同样适用于签到所有的静态文件项目

img


郭炯韦个人博客 备案号: 豫ICP备17048833号-1
Top