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