你如何将部署的Meteor应用程序指向新版本?

时间:2014-06-30 23:01:30

标签: nginx meteor forever

我特别谈论在我自己的服务器上运行的应用包。

我有一个Meteor应用程序在~/bundle中永远运行,我的git repo在~/project。我在~/release中保留了不同的发布捆绑包。

~/release
  |-0.1.0.tar.gz
  |-0.1.1.tar.gz
  |-0.2.0.tar.gz

从git中提取更改并切换到最新版本后,我想捆绑我的新版本并利用热代码重新加载和(希望?)保持客户端连接活着。这样做的最佳方式是什么?

注意:我也在使用nginx;这会以任何方式影响这个过程吗?即它会杀死开放的客户端连接?更新到更新的应用版本后,我是否需要重新加载nginx?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用这样的脚本。

确保在ssh配置文件中定义服务器,例如

Host yourserver
User youruser
Port 22
Hostname yourapp.com
IdentityFile ~/.ssh/yourkeyfile.pem
TCPKeepAlive yes
IdentitiesOnly yes

然后你可以有一个像这样的bash脚本:

#!/bin/bash
cd ~/Desktop/yourappdirectory
rm -f ~/Desktop/yourapp.tar.gz
meteor bundle ~/Desktop/yourapp.tar.gz
scp ~/Desktop/yourapp.tar.gz yourserver:~/yourapp.tar.gz
ssh yourserver  <<'ENDSSH'
cd ~/
tar -xzf yourapp.tar.gz
sudo rm -rf yourapp
mv bundle yourapp
cd yourapp/programs/server/node_modules
rm -rf fibers
rm -rf bcrypt
sudo npm install fibers@1.0.1
sudo npm install bcrypt
cd ~/yourapp/programs/server/npm/mongo-livedata/main
rm -r mongodb
sudo npm install mongodb@1.4.1
cd ~/
sudo forever stop ~/yourapp/main.js
sudo MONGO_URL=mongodb://user:pass@ip:27017/meteor PORT=3000 ROOT_URL=https://yoursite.com forever start ~/yourapp/main.js
ENDSSH

然后只需运行bash,它就会为您上传和部署您的应用。只是一个注意事项我无法将发布版本放入其中,只需上传到~/yourapp.tar.gz然后将其解包到~/yourapp

如果他们在网站上,那么流星应用程序将在任何客户端上重新加载热代码。