在多个实例中更新我的node.js代码

时间:2016-09-12 13:35:55

标签: node.js git express

我在AWS中有一个Elastic Load Balancer。我在3个实例中部署了node.js代码,并且我使用pm2来更新我的代码,但我需要以这种方式手动执行:

  • 在每台计算机上通过ssh连接
  • Git pull on each machines
  • pm2在每台机器上重新加载

当我对master或其他分支(如生产分支)进行新的提交时,如何更新所有机器中的所有代码?

感谢。

4 个答案:

答案 0 :(得分:1)

您可以编写一个脚本,例如bash来解决此问题:

# This will run your local script update.sh on the remote 
ssh serverIp1 "bash -s" < ./update.sh 

然后在本地update.sh中,您可以将代码添加到git pull并重新加载:

# This code will run on the remote
git pull
# Update
# Other commands to run on remote host

您还可以拥有一个脚本,为您的所有计算机执行所有这些操作:

ssh serverIp1 "bash -s" < ./update.sh
ssh serverIp2 "bash -s" < ./update.sh
ssh serverIp3 "bash -s" < ./update.sh

或事件更好:

for ip in serverIp1 serverIp2 serverIp3; do
    (ssh $ip "bash -s" < ./update.sh)
done

答案 1 :(得分:1)

另一种选择是ElasticBeanstalk,特别是如果你使用&#34;纯&#34;节点解决方案(不是实例上的大量额外服务)。使用beanstalk,您可以提供项目的git ref或ZIP文件,它可以处理部署(启动新实例,运行状况检查,获取负载平衡,删除旧实例等)。在某些方面,它是自动化的你现在拥有的部署版本,因为你仍然会有EC2实例,负载均衡器等等。

答案 2 :(得分:1)

使用Jenkins(自托管)或Travis CI等工具来运行构建和部署。有许多替代品可供选择FYI,Jenkins和Travis只是最受欢迎的一些。

答案 3 :(得分:0)

好的,谢谢你的答案,但我认为对我来说最好的选择是AWS CodeDeploy

我不知道为什么在提出问题之前我没有找到这个......