2014-06-30 5 views
0

저는 제 자신의 서버에서 실행되는 앱 번들에 대해 구체적으로 말하고 있습니다.배포 된 Meteor 앱을 새 버전으로 어떻게 가리 킵니까?

나는 Meteor 앱을 영원히 사용하여 ~/bundle이고 내 자식 repo는 ~/project입니다. ~/release에 다른 릴리스 번들 tarball을 유지합니다.

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

는 자식의 변경에 당겨 최신 릴리스로 전환 후, 나는 나의 새로운 버전을 번들 및 핫 코드를 다시로드 살아 (희망?) 유지 클라이언트 연결을 활용합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

참고 : 나는 또한 nginx를 사용하고 있습니다. 그래서 이것은 어떤 방식 으로든 프로세스에 영향을 미칠 것입니까? 즉 그것은 열린 클라이언트 연결을 죽일 것인가? 나는 새로운 애플 리케이션 버전으로 업데이 트 후 nginx를 다시로드해야합니까?

감사합니다.

+0

최소 다운 타임으로 실행되는 동안 배포 된 유성 앱 업데이트 - 최상의 방법] (http://stackoverflow.com/questions/22065873/update-deployed-meteor-app-while-running-with-minimum-downtime) -best-practice) –

+0

자신의 솔루션을 롤링하는 대신 https://github.com/arunoda/mete-up을 사용하십시오. –

답변

0

이와 같은 스크립트를 사용할 수 있습니다.

만들기가 있는지 예를 들어

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

그런 다음이 같은 bash는 스크립트를 가질 수있다, 당신의 ssh 설정 파일에 서버를 정의

#!/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 [email protected] 
sudo npm install bcrypt 
cd ~/yourapp/programs/server/npm/mongo-livedata/main 
rm -r mongodb 
sudo npm install [email protected] 
cd ~/ 
sudo forever stop ~/yourapp/main.js 
sudo MONGO_URL=mongodb://user:[email protected]:27017/meteor PORT=3000 ROOT_URL=https://yoursite.com forever start ~/yourapp/main.js 
ENDSSH 

그럼 그냥 배쉬를 실행하고 업로드 할 것이며, 앱을 배포하십시오. 그냥 메모 그래서 물건에 그냥 릴리스 버전을 넣어 수 없습니다 ~/yourapp.tar.gz 다음에 번들로 ~/yourapp

유성 애플 리케이션은 사이트에있는 경우 모든 코드가 다시로드됩니다.

관련 문제