我特别谈论在我自己的服务器上运行的应用包。
我有一个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?
感谢。
答案 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
如果他们在网站上,那么流星应用程序将在任何客户端上重新加载热代码。