zoukankan      html  css  js  c++  java
  • 如何使用pm2一键部署node应用

    准备工作

    1. 准备一台linux服务器(本文档以阿里centos为例)
    2. 安装nodejs、git、pm2等环境
    3. 项目代码
    4. 本地已经安装用于连接 Linux 实例的工具,如 Xshell

    基本流程

    前两步传送门,在基本环境搭建好以后我们还要做一些其他的简单而重要的事情

    1. 配置key 使本地和服务器具备读写远程仓库的能力

    这里我们存放的是项目代码的仓库以github为例,但是仓库需要加密,防止其他人篡改你的代码,但是加密的密钥从哪来呢,传送门,这里有各个系统生成密钥的方法,按照步骤执行即可。

    然后登录你的github后访问 https://github.com/settings/keys


    把上面生产的key填写在其中就可以了,title可以随意填写,我一般填写为key的宿主便于后期维护。

    注意:我们要分别在本地和服务器上生成key添加到仓库中。如果你已经具备项目仓库,这只需执行服务器上的步骤。

    1. 将本地的项目同步到仓库
    2. 在服务器clone项目看服务器是否具有拉取项目的权限。
    3. 在本地和服务器下载并安装pm2,尽量保持两者的版本一致。
    4. 项目中加入pm2的配置文件deploy.yml
    apps:
      - script   : server.js  // 发布时需要执行的脚本
        name : 'vue-admin'  // 项目名
        watch  : true       //是否监控
        env    :            //环境变量
          NODE_ENV: development
        env_production:
          NODE_ENV: production
    deploy :
      production :      //生产环境发布
        user : root     //主机用户名(centos的登录用户名)
        key : C:/key/SSH-ubuntu.pem //主机密钥文件
        host : 
          - 120.78.174.212   //主机ip
        port : 22           // 端口
        ref : origin/master     //仓库分支
        repo : git@github.com:artiely/vue-admin.git //仓库地址
        path : /www/ant-design-pro/production   //服务器项目的部署地址(确保文件夹存在)
        ssh_options : StrictHostKeyChecking=no  // 是否检查密钥
        pre-deploy : git fetch --all    //发布前的钩子,拉取项目
        post-deploy : 'npm install --ignore-scripts && pm2 startOrRestart deploy.yml --env production'// 发布时的钩子,先安装依赖再启动pm2以生产环境
        env : 
          NODE_ENV : production
    
    1. 第一次发布production需先setup
    pm2 deploy deploy.yml production setup
    
    1. 发布
    pm2 deploy deploy.yml production
    

    每次项目更新后只要同步到仓库后都可以再次执行pm2 deploy deploy.yml production以实时预览更新的内容。
    当然还可以通过npm script或github webhook使事情变得更简单,再聊咯。

    实例地址: https://github.com/artiely/vue-admin

    完.

  • 相关阅读:
    Backtrader中文笔记之Renko Bricks
    Renko Charts介绍
    Backtrader中文笔记之Cerebro(大脑)。
    Backtrader中文笔记之Operating the platform(操作平台)。
    Backtrader中文笔记之Platform Concepts(平台介绍)。
    Backtrader中文笔记_Quickstart。
    PyAlgoTrade 0.20中文笔记
    浅谈JS中 reduce() 的用法(转帖)
    Python websocket的示例(转帖)
    硬盘显示有容量,但无法放入文件,还有一个查看机器端口是否开放。
  • 原文地址:https://www.cnblogs.com/coolslider/p/11897589.html
Copyright © 2011-2022 走看看