문제

우리는 ExpressionEngine CMS(php)를 사용하여 웹사이트를 만듭니다.각 사이트에 대해 Subversion 저장소를 설정하고 EE 설치와 사용자 정의 템플릿, 이미지, 자바스크립트 등을 커밋합니다.사용되는 것입니다.저장소에는 모든 환경 변수와 .htaccess 파일이 포함된 파일이 포함되어 있습니다.

우리는 개발에 사용하는 사후 커밋을 통해 업데이트된 저장소의 작업 복사본이 있는 개발 서버를 보유하고 있습니다.릴리스할 준비가 되면 Subversion에 브랜치를 만들고, 프로덕션 환경에 필요한 사항을 변경하고, 릴리스 번호에 태그를 지정하고, 저장소를 내보내고, 라이브 서버의 새 디렉터리에 업로드하고, 파일을 제자리에 심볼릭 링크합니다.롤백은 이전 릴리스로 다시 심볼릭 링크하는 것만큼 간단합니다.

문제는 개발 서버와 프로덕션 서버에 대해 달라야 하는 환경 변수를 수정해야 하는 단계입니다.이는 잘못된 장소로 리디렉션되는 htaccess 규칙의 주석 처리(해제), 도메인이 다르기 때문에 Google 지도 API 키 교체, 크기와 http 연결을 유지하기 위해 자바스크립트를 하나의 난독화된 파일로 최소화하는 스크립트 실행 등과 같은 것입니다. .

문제는 이것이 어떻게 더 자동화될 수 있느냐는 것입니다.우리는 릴리스 절차를 최소한으로 낮추고 싶습니다.Capistrano 및 Make와 같은 도구의 존재에 대해 잘 알고 있지만 필요한 모든 파일을 수정하도록 어떻게 얻을 수 있는지 잘 모르겠습니다...그런 일을 어떻게 정리하겠습니까?2주에 한 번씩 이런 일이 발생하면 자동화하는 데 시간을 투자할 가치가 있나요?

도움이 되었습니까?

해결책

$_SERVER['HTTP_HOST']를 켜면 많은 구성 옵션을 처리할 수 있습니다.

예를 들어

switch ($_SERVER['HTTP_HOST']) {
    case 'developement.domain.com':
        $api_key = "dev environment api key";
        break;
    default:
        $api_key = "live environment api key";
}

그런 다음 .htaccess 문제의 경우 AccessFileName 지시문을 사용하여 vhost 정의에 대체 .htaccess 파일을 설정할 수 있습니다.

<VirtualHost *:80>
    ServerName sitename
    AccessFileName .htaccess-dev
</VirtualHost>

다른 팁

구성 파일을 추가하여 이 문제를 처리합니다. Subversion 무시 목록.Stackoverflow에서 이미 해결되었습니다. 질문 #149485 참조

기본적으로 나는 단지 setup.default.php SVN에서 그리고 모든 설치에서 수동으로 복사합니다. setup.php 무시 목록에 있습니다.이렇게 하면 파일이 저장소에 다시 체크인되지 않습니다.이 파일은 거의 변경되지 않으며 요구 사항이 발생하면 처리될 수 있습니다.

또 다른 대안은 구성 파일을 한 번, 릴리스 브랜치로 분기 한 다음 대상에서 편집 한대로 표시 한 다음 3 방향 병합을 수행하는 방법을 기억하는 병합 스크립트를 사용하는 것입니다. 소스의 구성이 변경되면 대상에서 유사한 변경을 수행해야하기 때문에 충돌이 발생할 수 있습니다.

따라서 프로젝트의 평생 동안 두 개의 나무가 계속 진행됩니다 : 개발 및 석방. 발전이 성숙함에 따라 해방하기 위해 통합합니다. 더 많은 릴리스 프로세스가있는 경우 세 번째 QA, 트리도 가질 수 있습니다.

새 릴리스를 가져 오면 새로운 지점을 당기지 않고 작업 영역에서 "릴리스"영역 (병합/통합)으로 복사합니다. 해당 시점에서 릴리스 트리의 스냅 샷-시간을 원한다면 보관 목적으로 만 사용하는 별도의 분기/사본/태그를 만드십시오.

BTW : 이것은 Perforce가 빛나는 영역 중 하나입니다. 이미 합병 한 것을 기억하며 두 번 병합하려고 시도하지 않습니다.

우리는 구성 별 디렉토리를 유지함으로써이를 처리합니다.

예를 들어, Dev와 프로덕션간에 .htaccess 및 config.php 파일이 다른 경우/trunk/config/{환경}/에 유지됩니다.

Ant/Nant 스크립트를 사용하여 릴리스 패키지를 만들고 스크립트에는 각 환경에 대한 빌드 작업이 있습니다. 이러한 작업은 구성 특정 파일을 선택합니다.

--

다른 의견 제시자는 http_post를 켜는 것을 제안합니다. 불행히도 나는 직접 댓글을 달 수 없습니다 (충분히 높은 담당자가 아닙니다). HTTP_POST를 사용하여 환경 구성을 결정하면 클라이언트에서 발생하기 때문에 잠재적 인 보안 문제가 발생합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top