2011-01-02 4 views
6

첫째, 새해 복 많이 받으세요. 나는 레일에 새로 온 사람레일즈 앱의 여러 인스턴스 배포 - 동일한 코드, 복수

, 그래서 내가 MySQL 데이터베이스에 의해 뒷받침 간단한 레일 응용 프로그램을 개발

용어의 잘못된 사용을 ... 용납하시기 바랍니다.

이제이 애플리케이션을 여러 개의 독립적 인 사용자 그룹에 배포하고 싶습니다 (즉, 클럽 애플리케이션이므로 완전히 독립적 인 여러 클럽에 배포하고 싶습니다).

가능한 한 동일한 레일스 애플리케이션 코드를 사용하고 각 클럽별로 별도의 데이터베이스 인스턴스를 보유하고 싶습니다.

서버로드가 문제가 될 때까지 각 인스턴스가 동일한 서버에서 실행되므로 각 레일스 서버마다 다른 포트를 사용하여 사용자를 올바른 그룹으로 안내 할 수 있다고 가정합니다.

테스트 모드와 생산 모드가 있습니다. 생산 모드의 여러 추가 인스턴스를 가질 수 있습니까? 예 : club1, club2, 모두 고유 한 데이터베이스로 동일한 코드를 공유합니까?

제 질문은 여러 개의 개별 데이터베이스 인스턴스를 지원하는 방법과 이것들을 최적으로 라우팅하는 방법입니까?

이 점에 대해 많은 조언을드립니다.

답변

1

Git을 사용하는 경우 (코드가 있어야 함!) 코드의 중앙 버전을 한 곳에 보관 한 다음 database.yml 파일 만 변경하여 여러 번 배포 할 수 있습니다 (체크하지 말아야 함). 그 경우 git 저장소로). http://git-scm.com/

github.com에 'snips'라는 사용자 이름으로 모든 코드를 올리면이 프로젝트의 이름은 'clubster'입니다. Heroku가이 데이터베이스를 자동으로 구성

git clone https://github.com/snips/clubster.git 
cd clubster 
heroku create boxingclub 

때문에 거기 database.yml을 파일

git push heroku master 

가 필요하지 않다고 그리고 당신은 코드의 버전이있을 것이다 : 당신이 다음 할 것 Heroku가 같은 것을 사용 당신은 당신이 당신의 설치의 각으로 이동하여 코드를 변경하고 수행 할 때 boxingclub.heroku.com

에 배치 :

git pull origin master 
git push heroku master 

응용 프로그램의 특정 인스턴스에서 코드가 업데이트됩니다.

좀 더 고급 스러우면 요리사를 만나서 전체 설정을 관리 할 수 ​​있습니다. http://www.rubyinside.com/chef-tasty-server-configuraiton-2162.html

다른 접근법은 일종의 하위 도메인 시스템을 갖는 것이지만, 다른 방법으로는 다른 시스템에 적용 할 것입니다.

+0

stef에게 감사드립니다. 그것은 확실히 흥미로운 해결책입니다. 가능한 한 레일 서버가 동일한 서버에서 실행되고 이상적으로 동일한 코드에서 실행되고 있음을 명확히해야합니다. 나는 너의 제안을 약간 생각할 것이다. – Snips

관련 문제