• pm2通过配置文件部署nodejs代码到服务器


    一、pm2文档地址:

      http://pm2.keymetrics.io/

    二、在本地项目下新建ecosystem.config.js文件,并且推送到远端(记得node_modules这个文件夹也得推送,在.gitignore里面删除):

    module.exports = {
      apps: [{
        name: "blogserver",
        script: "./code/server/index.js",
        env: {
          "NODE_ENV": "production"
        },
        env_production: {
            "NODE_ENV": "production"
        }
      }],
      deploy: {
        production: {
          user: "root",
          host: ["47.94.208.76"],
          port: "8290",
          // SSH options with no command-line flag, see 'man ssh'
          // can be either a single string or an array of strings
          ssh_options: "StrictHostKeyChecking=no",
          // GIT remote/branch
          ref: "origin/master",
          // GIT remote
          repo: "git@gitee.com:tian_zz/blog.git",
          // path in the server
    path: "/www/my-blog/blogserver",
            "post-deploy": "npm install --registry=https://registry.npm.taobao.org && pm2 startOrRestart ecosystem.config.js --env production",
          env: {
            "NODE_ENV": "production"
          }
        },
      }
    }

    三、在服务器端根目录新建文件夹/www/my-blog/

      mkdir /www

      cd /www

      mkdir my-blog

      cd my-blog

    四、在本地运行pm2命令,通过配置文件连接服务器,并且通知服务器拉取代码:

      1、本地 pm2 deploy ecosystem.config.js production setup

      2、服务器端会看到多出的文件夹:    

    五、在本地运行pm2:

      pm2 deploy ecosystem.config.js production

     六、在服务器端可以看到pm2运行的进程:

       pm2 list  

      发现报错,打印下日志:pm2 logs blogserver  

      没有找到模块,进入服务器/www/my-blog/blogserver/source目录:npm install 安装包,再回到本地重新部署一下 pm2 deploy ecosystem.config.js production,回到服务器:部署成功。

    七、在阿里云后台添加域名记录,需要时间生效:  

    八、如果本地后端是在3000端口下,在防火墙允许3000端口访问:

      firewall-cmd --zone=public --add-port=3000/tcp --permanent

      firewall-cmd --permanent --list-port

      firewall-cmd --reload

    九、配置nginx代理,将3000端口转发到服务器的80端口

      cd /etc/nginx/conf.d

    upstream locusy {
            server 127.0.0.1:3000;
    }
    
    server {
            listen 80;
            server_name www.locusy.top;
    
            location / {
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
                    proxy_set_header Host $http_host;
                    proxy_set_header X-Nginx-Proxy true;
    
                    proxy_pass http://locusy;
                    proxy_redirect off;        }
    }

     重启nginx:nginx -s reload

  • 相关阅读:
    正则表达式
    公司培训文档混淆的基本概念
    堆和栈的区别[导入]
    一個textlist控件(左右兩個文本框)。
    深入浅出之正则表达式(一)
    公司培训文档-c#基础学习
    问题
    [转]CStdioFile中文问题
    VB用户控件制作讲解与实例用户控件属性或函数的描述信息如何写入程序
    什么是表驱动
  • 原文地址:https://www.cnblogs.com/angelatian/p/10155670.html
Copyright © 2020-2023  润新知