2011-11-19 1 views
1

3 개의 응용 프로그램 서버 (3 노드)에서 Rails 3.1 응용 프로그램을 실행 중입니다. 배포하는 동안 자산 파이프 라인이 3 개의 모든 인스턴스에서 capistrano 후크를 통해 자산을 컴파일하면 서버로드가 너무 높습니다.레일 3.1 앱에서 하나의 서버에서 정적 자산을 컴파일하고 제공 할 수 있습니까?

내가 할 수있는 일은 자산을 로컬에서 사전 컴파일하고 앱 서버에 업로드하는 것입니다.

나는 무엇보다도 클러스터간에 요청을 배포하기 위해 Nginx를 실행하고 있습니다.

내 질문은 하나의 서버에서 자산을 컴파일하고 해당 인스턴스를 통해서만 서비스 할 수 있습니까?

이렇게하면 3 개의 모든 응용 프로그램 서버에서 에셋의 컴파일/업로드가 줄어 듭니다. 아무도 이런 식으로 배포하지 않았습니까?

답변

1

이 문제를 해결하는 가장 간단한 방법은 로컬로 컴파일하고, 파일을 커밋하고, 컴파일 작업을 실행하지 않고 업로드하는 것입니다.

로컬로 컴파일하고 원하는 서버에 업로드하고 nginx를 설정하여 해당 서버에만 요청을 전달합니다.

세 번째 방법은 로컬로 컴파일 된 자산을 세 서버 모두에 업로드하고 이전과 같이 nginx로드 균형을 조정하는 것입니다.

당신이 상관없이해야 할 일은 nginx가/assets에 대해 장래의 헤더를 추가하고 최대 압축을 설정하는 것입니다. 이렇게하면 (클라이언트 측 캐싱으로 인해) 해당 자산에 대한 요청이 줄어들고 요청한 시간에 처음 제공 할 시간이 줄어 듭니다.

관련 문제