2011-11-04 3 views
3

문제 :정적 콘텐츠에 대한 GIT와 CDN을 사용

내가 GIT를 사용하여 배포 응용 프로그램을 가지고있다. 서버의 파일을 업데이트하려면 GitHub 레포에서 최신 버전의 앱을 가져 오기 위해 간단하게 git pull을 수행합니다. 문제는 내 Amazon S3 계정에서 모든 정적 콘텐츠를 제공하지만 주 서버의 버전과 동기화되도록하려는 것입니다.

질문 :

  1. 내가 GitHub의에서 내 프로젝트가 어떻게 내 S3 계정에이 파일을 당길 수 git pull?
  2. 내 서버에서 (태그를 통해) 버전을 전환하려면 어떻게하면 내 S3 계정에 미러링 할 수 있습니까?
+0

어떻게 이런 방법을 결정 했습니까? – tofutim

답변

1

내 생각에, Git hooks은 원하는대로해야합니다. 어쩌면 사후 점검 (전환 태그 용) 또는 사후 병합 (당기기 용)으로 충분할 수 있습니다. 그런 다음 정적 파일을 S3에 복사하고 해당 bash 스크립트를 후크에서 실행하는 bash 스크립트를 작성해야합니다. 당신이 당신의 응용 프로그램에 PHP를 사용하는 경우

2

아.

이것은 GIT 관련 질문이 아니지만 한 위치에서 제공된 정적 콘텐츠를 (소스 컨트롤에서) 다른 위치에서 제공된 버전 콘텐트와 동기화하려고 할 때 실제로 자주 발생하는 일반적인 문제입니다.
일반적인 사용 사례는 동적 콘텐츠와 정적 콘텐츠가 모두 포함 된 웹 사이트입니다.
임의의 예로는 hotels.com입니다. 첫 페이지의 그림을 검사하면 this one과 같은 URL이 표시됩니다. 분명히이 리소스의 이름은 Asset Manager에 의해 자동 생성됩니다.

우리는 Django와 Python을 일부 작업에 사용하므로 Django Mediagenerator을 사용합니다. S3에 업로드하는 정적 파일의 버전이 지정된 디렉토리를 생성합니다.

this comparison에서 볼 수있는 것처럼 다른 옵션이 많이 있습니다.
자산 관리자를 사용하는 데 보너스로 사용하면 압축, 난독 화, 병합 등이 발생합니다.

다른 응용 프로그램에서는 수동으로 파일을 버전 화합니다. 자동으로 파일 해시 (각 정적 파일 당 해시)의 파이썬 모듈을 계산합니다. S3에 정적 파일을 업로드하는 동안 파일의 이름을 변경하여 MD5 해시를 추가합니다. 이 방법으로 some_file.txt는 S3에서 some_file_123123123123.txt가되고 S3에서 특정 버전의 파일을 다운로드 할 수 있습니다. 해시가있는 모듈은 소스 제어 (GIT)에 저장됩니다.

관련 문제