2013-04-05 1 views
0

그래서 생산 환경과 동일한 방황 상자에서 개발하는 PHP 앱을 개발한다고 가정 해 봅시다. 따라서 최종 결과로 코드가있는 * .tar.zip 파일이 생깁니다 ...한 번에 여러 서버에 웹 앱 배포를 구성하는 방법은 무엇입니까?

많은 응용 프로그램 서버가있는 프로덕션 환경으로 배포를 구성하는 방법은 무엇입니까? 내 말은 - 코드를 동시에 생산에 동시 투입하는 방법을 혼란스럽게 생각합니까?

더 많은 정보 : 서버 코드에

는 다음과 같이 저장됩니다 : 나는 변화를 배포 할 때

project 
    +current_revision ->link to revisions/v[n] 
    +revisions 
    +v1 
    +v2 
    +v3 
    ... 
    +data 

그래서 나는 보통 업로드 SSH로 서버에 타르를 갱신됩니다 배포 스크립트를 실행, 개정판 아래의 특정 dir을 untars하고, 그것을 current_revision으로 심볼릭 링크 한 다음 php-fpm을 재시작합니다 ....이 방법으로 나는 이전 버전으로 심볼릭 링크함으로써 언제든지 롤백 할 수 있습니다.

나를 괴롭히는 것은 모든 상자가 한 번에 업데이트되지 않는다는 것입니다. 기술적으로 몇 가지 결함이있을 수 있습니다.

답변

0

많은 방법이 있습니다. barebones (클라우드 인프라 없음)에서 시작하면 SVN 분기 후크의 팬입니다. 귀하의 코드에 대한 SVN 레포를 준비하십시오./branch/production /의 내용이 변경되었는지 확인하는 post-commit 훅을 설정하십시오.

만약 있다면, 커밋 된 후크가 모든 자동화 된 롤아웃 절차를 시작하도록하십시오.이 경우, 모든 서버에 * svn export 브랜치를 알려주는 것이 가장 쉬운 방법입니다. 저것과 같이 쉬운!

(* 그건 하드 단계)

2

당신이 "즉시 이동"대답을 찾고 있다면, 당신은 당신의 설정에 대한 좀 더 많은 정보를 제공해야합니다. 예를 들어, VCS 용 git을 사용하려는 경우 서버와 함께 최신 커밋 및 rsync을 가져 오는 간단한 쉘 스크립트를 작성할 수 있습니다. 또는 Symfony 위에 구축하는 경우 capifony은 훌륭한 도구입니다. AWS를 사용하는 경우 Vagrant 작성자가 작성한 provider plugin을 사용하면 매우 편리하며 up 또는 provision을 가져올 컴퓨터의 정규식을 지정할 수 있습니다. 당신이 "로드맵"을 더 찾는 대신하는 경우

, 당신이 먹고 싶어거야 고려 사항은 다음과 같습니다

  1. 가 쉽게와 원격 및 로컬 환경에서 동일한 상자의 건물을 확인 가능하고 프로비저닝이 idempotence을 강조하는지 확인하십시오.
  2. 버전/릴리스 구조를 고려하십시오. 어떤 자원이 거의 변경되지 않을 것인가? deploy 함수 대신 setup 함수에 포함 시키십시오. 동기화 실행에 포함하지 마십시오.
  3. 개발 및 시스템 관리 문제를 분리하십시오. 즉, * .tar.gz가있는 방황 상자를 포장하고 config.vm.box_url을 연결하지 마십시오. 그 이유는 배포 할 때마다 서버의 파일을 변경하거나 서버에서 일부 패키지를 추가/제거하는 대신 모든 프로덕션 서버를 새 상자로 다시 패키징해야하기 때문입니다.
  4. ChefPuppet과 같은 일부 구성 관리 도구를 확인하십시오. 결국 사용하지 않더라도 sysadmin 전문가가이 문제에 접근하는 방법에 대한 아이디어를 얻을 수 있습니다.
관련 문제