一、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

最新文章

  1. iOS 根据银行卡号判断银行名称
  2. 锤子手机T2 屏幕录像文件保存在哪里?
  3. Disable the screen switching about VI
  4. ClassLoader,Thread.currentThread().setContextClassLoader,tomcat的ClassLoader
  5. php练习4——排序,查找
  6. phpexcel导入数据库 基于thinkphp3.2
  7. delphi XML 原来可以玩接口
  8. AIDE支持实时错误检查、代码重构、代码智能导航、生成APK
  9. Robots协议
  10. 浅谈Nginx负载均衡原理与实现
  11. js中的深拷贝与浅拷贝
  12. python第十一天
  13. 浅谈php
  14. volatile 关键字了解与使用
  15. LeetCode(36): 有效的数独
  16. CAD中的各种Polyline
  17. SSH(Struts、Spring、Hibernate)三大框架整合
  18. Net Web Api Route
  19. github在版本库中删除某个文件的所有历史记录
  20. Windows降权

热门文章

  1. CentOS7防火墙管理firewalld
  2. 记一次logback传输日志到logstash根据自定义设置动态创建ElasticSearch索引
  3. 数据库分片(Database Sharding)详解
  4. 『线段树 Segment Tree』
  5. 基于Win10极简SonarQube C#代码质量分析
  6. [开源]MasterChief 快速开发辅助类库
  7. netcore程序部署到docker
  8. Java - 静态代理详讲
  9. 卷积神经网络之LeNet
  10. 从后台servlet中,获取jsp页面输入的值,来删除用户一行信息