2011-08-15 4 views
9

2 주 동안 나는 우리 사무실에서 힘내를 구현하려고 노력 해왔다. 문서가 부족하기보다는 풍부한 예제, 튜토리얼 및 다양한 git 사용으로 인해 웹 개발에 권장되는 설정이 무엇인지 혼란스럽게 만들었습니다.힘내 : 웹 개발을위한 권장 설정

나는 괜찮은 설정을 염두에두고 있지만 다른 구조로 뛰어 들기 전에 더 경험있는 사람들과 확인하고 싶습니다. 내가 마음에 다음과 같은 한 :

  • 워크 스테이션은 로컬 준비 서버에 푸시 (A)
  • 지역 준비 서버가 제대로 후크가 자동으로에 스테이징 서버에 변경을 밀어
  • 역할을 나누어 gitolite와 함께 작동 enter image description here

    이 메이크업 감각을합니까 : 프로덕션 서버 (B)는

이는 다음과 가시화? 우리는 다양한 작은 PHP 웹 사이트를 가지고 있으며 매우 복잡한 것은 없습니다. 내가 가지고있는 의문점은 다음과 같습니다.

  • (B)에는 어떤 종류의 '후크'를 사용해야합니까?
  • 프로덕션 서버에서도 gitolite를 실행해야합니까? 나는 결국 서버 (스테이징 서버의 후크)에 업로드하는 것은 단 한 명의 사용자이기 때문에 그렇게하지 말아야한다고 생각합니다. 그러나 확실하지 않습니다.
  • 출발점은 모든 웹 사이트가 프로덕션 서버에 있고 아직 준비 서버 나 워크 스테이션에 있지 않다는 것입니다. 초기 설정에서 스테이징 및 워크 스테이션으로 "끌어들이는"편리한 방법은 무엇입니까? 이제

, 다음 질문은 순간 중요하지 최선의 일부 추가 생각은,하지만 좀 더 알고 일어나는 경우에 당신의 생각을 공유 편의상

  • 내가 할 수 선호 워크 스테이션에서 git push을 실행하고 스테이징 서버와 프로덕션 서버를 모두 업데이트하십시오. 그러나 가끔은 스테이징 서버를 업데이트하고 처음부터 라이브로 가기 전에 물건을 체크 아웃하는 것이 유용 할 수 있습니다. 쉬운 해결책이 있습니까?

  • 현실적으로 우리는 하나의 생산 서버뿐만 아니라 여러 생산 서버를 가지고 있습니다. 단 하나의 스테이징 서버. git이 자동으로 올바른 서버로 푸시되도록 다른 프로덕션 서버를 구성하는 방법이 있습니까?

미리 의견을 공유해 주셔서 감사합니다!

+0

프로덕션 서버로 푸시하기위한 기준은 무엇입니까? 후크가 특정 커밋 메시지를 확인합니까? –

답변

3
  • '후크'나는 (B)에 사용해야 어떤 종류의?

    • 가 나는 또한 프로덕션 서버에 gitolite를 실행해야

    당신은 수행 할 post-receive or post-update hooks를 사용해야합니까? 나는 결국 서버 (스테이징 서버의 후크)에 업로드하는 것은 단 한 명의 사용자이기 때문에 그렇게하지 말아야한다고 생각합니다. 그러나 확실하지 않습니다.

당신이 언급 한 이유로 필수 아니지만, gitolite가 설정에 매우 간단하기 때문에이

  • 내 시작점을 해치지 않을 것입니다 : 우리는 모든 웹 사이트가 프로덕션 서버이며 아직 준비 서버 나 워크 스테이션에 있지 않습니다. 초기 설정에서 스테이징 및 워크 스테이션으로 "끌어들이는"편리한 방법은 무엇입니까? 이들 각각은 단순히이 명령
    cd /path/of/project 
    git init 
    # optionally create and edit your .gitignore file before the next step 
    git add . 
    git commit 
    

    다음 준비 서버에서 git clone 명령을 실행을 실행할 수 있습니다에 대한

. 편의상

  • 나는 워크 스테이션에서 자식 푸시를 실행하고 스테이징 서버와 프로덕션 서버가 모두 업데이트 가질 수있을 것을 선호합니다. 그러나 가끔은 스테이징 서버를 업데이트하고 처음부터 라이브로 가기 전에 물건을 체크 아웃하는 것이 유용 할 수 있습니다. 쉬운 해결책이 있습니까?

내가 그러나 내가 자동화 된 생산 배치와 솔루션을 좋아하지 않아,이 작업에 대한 쉬운 솔루션을 볼 수없는, 뭔가 나쁜 갈 수 있고 당신은 당신의 생산 현장을 깰 것이다, 그래서 citizen conn를 선호 여러 원격 솔루션. gitolite와 허가 처리를 통해 더 잘 관리 할 수 ​​있습니다.누구나 준비 서버를 사용할 수 있지만 제한된 그룹의 사용자는 프로덕션 서버로 이동할 수 있습니다.

현실에서
  • 우리는뿐만 아니라 하나 그러나 몇 가지 다른 프로덕션 서버가 있습니다. 단 하나의 스테이징 서버. git이 자동으로 올바른 서버로 푸시되도록 다른 프로덕션 서버를 구성하는 방법이 있습니까?

당신은 프로젝트에 텍스트 파일에서 프로덕션 서버의 주소를 저장 한 다음 자식 후크에 그 파일의 내용을 사용할 수 있습니다.

+0

감사합니다. 아주 좋은 소리입니다! 나는 이것을 시험해 볼거야! – user852091

3

프로덕션 웹 서버에서 git 서버를 실행하고 싶지 않습니다. 그리고 여러분은 여러분의 실제 서버에서 git 저장소 파일을 원하지 않을 것입니다. 개인적으로 저는 물건을 간단하게 유지하고 배포 프로세스를 SCM 프로세스와 섞어 놓지 않습니다.

그래서 나는 자식에 대한 귀하의 질문에 대답하지 않을 것 같아,하지만 난 내 모든 웹 프로젝트에 자식을 사용합니까, 여기 내가 사용하는 배치 설정의 유형이다 :

나는 보통에만 자식을 사용 SCM을 사용하고 내부 서버를 사용하여 리포지토리를 호스팅합니다 (이 서버는 준비 서버와 동일한 컴퓨터 일 수 있습니다).

배포 할 때 나는 보통 루비 (ruby)를 좋아하기 때문에 레이크 스크립트를 사용합니다. 그러나 bash 스크립트는 똑같이 할 것입니다. 서버에 게시 할 권한이

# deploy_staging.sh 
rsync -va --delete --exclude-from excludes.txt ./ stagingserver:/htdocs/www.mysite.com/ 

# deploy_prod.sh 
rsync -va --delete --exclude-from excludes.txt ./ realserver:/htdocs/www.mysite.com/ 

# deploy_all.sh 
bash deploy_staging.sh || exit $? 
bash deploy_prod.sh 

# excludes.txt 
.git 
deploy_*.sh 
excludes.txt 

개발자들은 SSH 키를 사용하여 서버 시스템에 적절한 계정에 추가 한을 : 배쉬 버전은 다음과 같이 될 것이다.

깔끔하고 간단하며 복제가 쉽고 모든 설정이 후크없이 가능하며 모든 것이 저장소에 잘 포함되어 있으므로 배포 할 대상을 명확하게 제어 할 수 있고 어디서나 배포 할 수 있습니다. 올바른 네트워크 액세스 권한이 있습니다.

+1

님의 루트가 웹 서비스를 제공하지 않는 한 루트에 .git을 갖는 것이 좋습니다. – Kzqai

+0

나는 staged와 production 모두에 자식 서버를 설치하려고 노력할 것이다. 그러나 이것이 너무 어려워 진다면 나는 당신의 솔루션이 나의 탈출 경로가 될 것이라고 생각한다. 감사. – user852091

+0

그래, 몇 가지 큰 프로젝트보다는 많은 작은 프로젝트가 있기 때문에 나는 드문 경우 일 수 있습니다. 그래서 시간이 지남에 따라 몇 분 안에 처음부터 다시 만들 수있는 방법을 선호하게되었습니다. 서버 설정과 함께 행운을 빈다. – avh

3

비슷한 설정이있어서 여러 개의 리모컨을 사용하는 것을 선호합니다. 따라서 후크를 사용하는 대신 리모컨으로 "prod"를 추가하고 "uat"를 리모컨으로 추가합니다. 내가 생산에 밀어하려면 그런 식으로, 내가 할 수있는 :

git push prod 
git push uat 
+0

나는 이것을 잘 수행한다. – thinkdevcode

+0

나는 내 프로덕션에만 끌어 당긴다. 그러나 자신의 저장소이기도하다. 이는 리포지토리 푸시가 프로덕션 저장소에서 처리하기 위해 까다로운 경우가 있기 때문입니다. – Kzqai

+0

@citizen conn : 감사합니다. 고마워요. 하나의 질문 : 당신이 두 배로 커야 만한다는 것을 짜증나게하지 않습니까? 밀기 전에 많은 작은 커밋을한다면, 그럴 수 있습니다. – user852091