当前位置: 首页 > 后端技术 > Node.js

一键PM2,多台服务器同时部署发布Node.js项目!

时间:2023-04-03 18:54:06 Node.js

1。使用场景在部署node.js项目时,经常会使用SSH分别连接多台服务器。对于每台服务器,都需要执行gitpull最新的代码,编译并启动应用,操作繁琐,容易遗忘。某些操作。pm2可以很好的解决这个问题,只需要一条命令就可以自动完成,还可以实时监控查看node.js应用的运行状态。二、解决方案第一步:服务器环境配置和安装node.js:没有,看这里!安装pm2:npminstallpm2@latest-goryarnglobaladdpm2安装git:不行,看这里配置SSH,让服务器免密码运行gitclone,不行,看这里!第二步:开发机环境配置和安装node.js:没有,看这里!安装pm2:npminstallpm2@latest-g或者yarnglobaladdpm2配置SSH免密码登录服务器,不行看这里!第三步:Node.js项目运行步骤配置打开终端,切换到node.js项目根目录,执行pm2ecosystem,生成配置文件,如下://ecosystem.config.jsmodule.exports={apps:[{script:'index.js',watch:'.',env_production:{NODE_ENV:"production"},env_development:{NODE_ENV:"development"}}],//部署配置deploy:{production:{用户:'SSH_USERNAME',主机:'SSH_HOSTMACHINE',参考:'origin/master',repo:'GIT_REPOSITORY',路径:'DESTINATION_PATH','pre-deploy-local':'','post-deploy':'npminstall&&pm2reloadecosystem.config.js--envproduction','pre-setup':''}}}修改上述配置文件,修改server和git相关信息;在ecosystem.config.js所在目录执行如下命令初始化node.js项目到服务器pm2deployproductionsetup//pm2连接服务器,通知其gitclone代码等初始化工作启动或更新node.js项目:pm2deployproduction--force;//让服务器git拉取代码,编译后启动应用//--force的作用:如果服务器本地代码有变化,则放弃使用git仓库中的最新代码更改和更新项目。三、deploy命令详解1.命令格式pm2deploy2.configuration_file如果配置文件名为:ecosystem.config.js或pm2.config.js,以上命令不需要写。pm2deployproductionsetup//该命令默认搜索ecosystem.config.js或pm2.config.js配置文件并执行3.Environment在配置文件中设置env_production和env_development,执行命令时可以调用并传递环境变量对于node.js项目:pm2deployproduction--force;//ecosystem.config.jsmodule.exports={apps:[{script:'index.js',watch:'.',env_production:{NODE_ENV:"production"},env_development:{NODE_ENV:"development"}}],}4,commandssetuprunremotesetupcommandsupdateupdatedeploytothelatestreleverervert[n]revertto[n]thlastdeploymentor1curr[ent]输出当前版本commitprev[ious]输出先前版本commitexec|runexecutethegivenlistlistpreviousdeploycommits[ref]deployto[ref],the"ref"setting,orlatesttag4.其他重要事项1.exec可以使所有服务器执行命令pm2离开一次loyproductionexec"pm2reloadall"2.回退到之前的部署版本pm2deployproductionrevert13.部署的几个时间点"pre-setup":"commandorscripttorunbeforesetupexecution","post-setup":"代码克隆完成后执行的命令或脚本","pre-deploy":"pm2startOrRestartecosystem.json--envproduction","post-deploy":"pm2startOrRestartecosystem.json--envproduction","pre-deploy-local":"echo'Thisisalocalexecutedcommand'"4、操作多台服务器,只需要修改host即可"host":["212.83.163.1","212.83.163.2","212.83.163.3"],5.错误1.报错信息npm:commandnotfoundpost-deployhookfailedDeployfailed2.解决方案pm2部署时出现以上错误,但是运行npm-v是正常的,原因是配置文件pm2的,按以下步骤解决#1.打开终端$cd~$nano.bashrc#2.注释掉以下内容#如果不是交互式运行,不要做任何事$-in*i*);;*)return;;esac#3.更新环境变量$source.bashrc6.参考文档PM2一键搞定,多台服务器同时部署发布Node.js项目!