여러 개의 유사한 Apache 구성을 어떻게 관리합니까?

여러 개의 유사한 Apache 구성을 어떻게 관리합니까?

현재 저는 Mercurial을 사용하여 프로덕션 서버와 개발 서버 간에 유사한 Apache 구성을 동기화하고 있습니다. 그 위에 있는 패치 대기열은 개발 서버에 필요한 변경 사항과 추가 항목을 추가합니다.

이 계획은 효과가 있지만 더 좋을 수도 있습니다. 배포 구성에서 변경 사항을 가져온 후 패치 대기열을 다시 적용하면 항상 병합 충돌이 발생합니다. 저는 항상 별도의 http:// 및 https:// 구성 파일을 동일하게 변경하고 있는 것 같습니다.

내 :80과 :443 Apache 구성 사이에서 동일한 비트를 어떻게 제외하고 개발 구성에 "추가 비트"를 더 깔끔하게 추가해야 합니까?

답변1

다음을 사용하는 것을 고려해 볼 수도 있습니다.포함하다Apache 구성 시스템의 기능입니다. 그런 다음 개별 시스템에 특정한 구성 요소를_local.conf그러면 병합이 더 간단해집니다

답변2

Apache에는 특정 구성을 선택적으로 활성화하는 옵션이 있습니다. 이를 통해 개발 및 프로덕션에 동일한 구성 파일을 사용할 수 있습니다. -DDEVELOPMENT 또는 -DPROD를 사용하여 Apache를 시작하면 개발 서버와 관련된 구성에 태그를 사용할 수 있습니다. 이렇게 하면 병합 충돌이 발생하지 않습니다(물론 병합하기 전에 dev/prod 구성 파일을 모두 변경하지 않는 한).

답변3

이것은 구식일 수 있지만 각 구성의 일부 매개 변수(예: IP 주소)가 다르다는 점을 제외하면 내 단계 및 프로덕션 Apache 구성은 동일했습니다. 나는 체계적인 방법으로 '공백을 채우기' 위해 시작 스크립트 주위에 Perl 래퍼를 사용했습니다. 실제 기본 구성 '템플릿'은 실제로 동일했습니다.

이를 통해 스테이지 아파치가 프로덕션 아파치와 기능적으로 동일하다는 것을 보장했습니다.

이 프로덕션 구성을 개발 팀과 공유함으로써 그들이 원하는 만큼 프로덕션에 가깝게 테스트할 수 있었습니다(그리고 그들이 원했던 것은 그들의 작업이 단계에서 '작동'하지 않으면 프로덕션에 들어갈 수 없었기 때문입니다. 우리는 가끔 도움을 제공했습니다(예를 들어 mod_rewrite 규칙의 경우). 나머지는 개발자에게 맡겼습니다.

이 특정 설정과 제가 일했던 다른 장소의 차이점은 다음과 같습니다.

개발 직원은 자신이 작업한 프로그램과 직접적으로 관련되지 않은 영역에 손을 대도록 권장되었습니다. 즉, 백엔드 애플리케이션에서 작업할 수 있지만(따라서 아파치에 대해 많이 알 필요가 없음) 자체 아파치 서버를 구성했습니다( 실제로는 자체 데스크탑을 구축했지만 이는 IMnsHO와는 거리가 멀습니다.

운영은 단순히 인프라를 실행하는 것이 아니라 실제로 많은 인프라를 구동했습니다.

관련 정보