2009-08-31 3 views
9

ASP.NET MVC 웹 사이트를 개발 중이며 아직 배포 전략을 세우지 않았습니다. 특히 데이터베이스 스키마에는 많은 단계와 시간이 필요할 수 있습니다.배포 전략을 생각해 내도록 도와주세요

여기 제가 수행 할 단계가 있으며 도구 또는 방법 (무료)으로하는 방법에 대한 제안이 필요합니다. 누락 된 단계 나 내가 잘못하고있는 것을 지적하십시오.

편집 : 나는 각 단계를 소스 제어 (억지로)

  • 빌드 디버그 및 relese 버전에서 모든 코드를

    1. 체크 아웃 해결하는 데 사용한 도구를 나열합니다. 릴리스 버전에는 web.config에서 다른 연결 문자열이 필요합니다. (MSBUILD)
    2. 모든 단위 테스트 실행
    3. 각 페이지 (aspx)에 대해 모든 참조 된 JS 파일과 인라인 코드를 하나의 파일로 결합합니다. CSS와 동일
    4. Minify가 JS 및 CSS 파일을 말했습니다.
    5. 백업 라이브 데이터베이스 스키마 및 데이터는
    6. 배포 데이터베이스 스키마 변경 새로 추가되거나 서버에 변경된 모든 파일 서버를
    7. 업로드를 살.
    8. 모든 코드와 내 소스 제어 보관소를 외장 드라이브 및 온라인에 백업하십시오.

    내 사이트에는 1am ~ 4pm 사이에 방문객이 없으므로 스테이징 서버 등을 사용하지 않아도됩니다.

    나는 내 질문이 길다는 것을 알고 있지만 이것은 아마도 많은 사람들을 도울 것입니다.

  • 답변

    2

    MSBuild (또는 다른 빌드 기술)는 아마도 이러한 모든 작업을 자동으로 수행하기위한 최상의 방법 일 것입니다.

    MSBuild를 사용하여 1에서 4까지 아무 문제없이 수행 할 수 있습니다. 우리는 update our web configs with MSBuild using an XMLUpdate task을 사용하고 우리는 생성 된 코드의 일부를 보완하기 위해 awk 스크립트를 약간 실행합니다 (Exec task).

    # 5 및 # 6의 경우 백업 파일을 얻고 프로덕션 인스턴스에 대해 실행하기 위해 일부 스크립트를 실행하기 위해 Exec을 사용하고 싶지만 SQL 관리자가 아니기 때문에 다시 생각할 필요가 없습니다. 그게 최선의 방법이거나, 이미 MSBuild 작업이 있다면.

    실제 파일을 복사하려면 Copy 작업과 기타 작업이 있지만 xcopy 또는 사용자 지정 스크립트를 사용해야 할 수 있습니다.

    제품 빌드 관리는 큰 일이지만 MSBuild 및 Ant와 같은 기술이 만들어진 정확한 이유입니다.

    1) 개정 번호에 대한 최신 릴리스 빌드 폴더를 확인합니다

    0

    나는 논리를 처리 할은 NAnt를 사용하여 프로덕션 서버에 배포를 위해 다음과 같은 노력했다.

    는 최신 버전을 사용할 경우

    2) 컴파일 된 웹 사이트와 데이터베이스 스크립트 (아래 참조) 파일을 가져옵니다.

    3) 웹 사이트를 오프라인으로 전환하십시오 (app_offline.htm 추가).

    4) 데이터베이스 스크립트를 적용하십시오 (아래 참조).

    5) 웹 사이트를 온라인 상태로 만듭니다 (app_offline.htm 삭제).


    데이터베이스 스키마에 대한 변경 사항 배포와 관련하여 저는 some posts by K. Scott Allen에서 영감을 받았습니다. 이들의 간단한 버전은 다음과 같습니다.

    1) 데이터베이스 스키마 (테이블, 색인, 시드 데이터)에 대한 각각의 새로운 변경 사항을 스크립트하고 각각의 새로운 변경 사항을 별도의 파일 (예 : schema-001.0001.sql, schema-001.0002.sql 등)에 저장하십시오. 이 파일을 별도의 폴더에 보관하십시오 (예 : sql\schema.

    2) 스크립트 기타 객체 (저장 프로 시저, 함수, 트리거 및 뷰)를 개별 폴더에있는 별도의 파일에 저장합니다. sql\procedures\uspGetProducts.sql, sql\procedures\uspUpdateProduct.sql, sql\functions\, sql\triggers\, sql\views\

    3) 배포 :가) 모든 기타를 삭제합니다. 파트 2의 오브젝트, b) 사전 적용되지 않은 파트 1의 스키마 변경 사항 적용, c) 마지막으로 모든 기타 항목 다시 작성. 파트 2의 오브젝트.

    이러한 스크립트는 예를 들어 2 부에서 자동으로 배치 할 수 있습니다. 프로덕션 서버의 Nant 스크립트

    관련 문제