IT이야기

최고의 Drupal 배포 전략

cyworld 2021. 3. 21. 08:57
반응형

최고의 Drupal 배포 전략은 무엇입니까?


MacBook의 XAMPP에 대한 첫 번째 Drupal 프로젝트를 진행 중입니다. 그것은 프로토 타입이며 제 고객으로부터 긍정적 인 피드백을받습니다.

2 주 후에 Linux VPS에 프로젝트를 배포 할 예정입니다. 서버의 모든 것을 처음부터 '다시 수행'하는 것보다 더 좋은 방법이 있습니까?

  • Drupal 설치
  • 모듈 다운로드 (CCK,보기, 날짜, 달력)
  • 콘텐츠 생성
  • ...

감사


몇 가지 팁 :

  • 파일에 대해 FTP 등이 아닌 소스 제어를 사용하십시오. 무엇을 사용하든 상관 없습니다. 우리는 각 클라이언트에 대해 Unfuddle.com 하위 버전 계정을 스핀 업하는 경향이 있으므로 버그를 기록 할 수있는 장소도 있지만 중요한 첫 번째 단계는 사이트의 전체 소스 트리를 버전 제어로 가져 오는 것입니다. 테스트 서버 또는 스테이징 서버에서 변경이 이루어지면 작동 여부를 확인하고 커밋 한 다음 라이브 서버에서 업데이트합니다. 롤백 및 배포가 훨씬 더 간단 해집니다. 여러 웹 헤드 클러스터의 경우 프로세스를 반복하거나 단일 '표준'서버에서 rsync를 수행 할 수 있습니다.

  • 하지만 SVN을 사용하는 경우 Drupal 및 기타 모듈 / 테마의 CVS 체크 아웃도 사용할 수 있으며 SVN / CVS 메타 데이터는 서로 행복하게 살 수 있습니다.

  • 파일 디렉토리와 같이 부피가 큰 폴더의 경우 '적절한'위치의 심볼릭 링크를 사용하여 웹 루트 외부의 서버 측 디렉토리를 가리 킵니다. 그러면 소스 제어 저장소에 사용자가 업로드 한 모든 코드와 모든 파일 대신 모든 코드와 심볼릭 링크가 포함됩니다.

  • 데이터베이스는 더 까다 롭습니다. 개발 / 준비 DB를 정리하고 라이브로 푸시하는 것이 초기 롤아웃에 가장 쉽지만 라이브 사이트의 사용자도 콘텐츠를 생성하는 경우 증분 DB 업데이트를 수행 할 때 몇 가지 주름이 있습니다.

작년 Drupal 배포 모범 사례 에 대한 프레젠테이션을 했습니다. 슬라이드를 자유롭게 확인하십시오.


기능 .module은 Drupal 구성 변경을 관리하기위한 매우 강력한 도구입니다.

콘텐츠 유형, CCK 설정,보기, Drupal 변수, 컨텍스트, 이미지 캐시 사전 설정, 메뉴, 분류법 및 권한은 모두 기능으로 롤링 될 수 있으며 버전 제어로 체크인 할 수 있습니다. 여기에서 새 사이트를 배포하거나 기존 사이트에 변경 사항을 푸시하는 것은 기능 UI 또는 Drush를 사용하여 쉽게 관리 할 수 ​​있습니다.

변수 테이블에 저장되는 drupal 구성을 내보내려면 Strongarm.module을 설치해야합니다. uuid_features.module을 설치하여 콘텐츠 / 노드 (예 : 회사 소개, FAQ 등)를 기능에 고정 할 수도 있습니다.

이것은 동일한 사이트에서 다른 개발자와 함께 작업하고 사이트를 개발에서 테스트, 스테이징 및 프로덕션으로 이동하는 가장 좋은 방법입니다.


우리는 직장에서 이것에 대해 광범위한 토론을했고 마침내 우리가 결정한 방법은 개발에서 스테이징, 프로덕션에 이르기까지 코드 업데이트 (모듈 및 테마 포함)를 푸시하는 것이 었습니다. 이를 위해 Subversion을 사용하고 있으며 지금까지 잘 작동하고 있습니다.

특히 중요한 것은 데이터베이스 를 프로덕션에서 다시 푸시하는 프로세스를 자동화 하여 개발자가 데이터베이스 복사본을 가능한 한 프로덕션에 가깝게 유지할 수 있다는 것입니다. 미션 크리티컬 한 환경에서는 모듈 업데이트가 데이터베이스를 망칠 수 없다는 것을 절대적으로 확신하고 싶습니다. 우리가 사용하는 프로세스는 다음과 같습니다.

  1. 개발 서버에 모듈을 설치합니다.
  2. 필요한 변경 및 업데이트를 기록하십시오. 문제가있는 경우 되돌리고 오류가없는 확실한 프로세스가 될 때까지 다시 수행하십시오.
  3. 변경 사항을 테스트하십시오! 일반 로그인 사용자로 테스트 프로세스를 반복하고 익명 사용자로 다시 테스트하십시오.
  4. 업데이트 프로세스가 update.php를 실행하는 것 이외의 다른 작업을 포함하는 경우 스크립트를 작성하여 수행하십시오.
  5. 프로덕션 데이터베이스를 스테이징 서버에 복사하고 동일한 단계를 즉시 수행하십시오. 실패하면 실패를 진단하고 1 단계로 돌아가십시오. 그렇지 않으면 계속하십시오.
  6. 변경 사항을 테스트하십시오!
  7. 생산 데이터베이스를 백업하고 SVN에서 확인한 개정 사항을 기록해 둡니다.
  8. 프로덕션 Drupal을 유지 관리 모드로 설정하고 프로덕션 트리에서 "svn update"를 실행하고 업데이트 프로세스를 진행합니다.
  9. Drupal을 유지 관리 모드에서 해제하고 모든 것을 테스트합니다 (관리자, 일반 사용자 및 익명).

그리고 그게 다야. Drupal과 같은 커뮤니티 프레임 워크에 대해 결코 기대할 수없는 한 가지는 라이브 후에 테스트에서 프로덕션으로 데이터베이스를 이동할 수 있다는 것입니다. 그때부터 모든 데이터베이스 이동은 프로덕션에서 테스트로 이루어 지므로 배포 프로세스가 다소 복잡해집니다. 조심해! :)


기능 모듈을 광범위하게 사용하여 기능을 캡처 한 다음 프로덕션 사이트에 쉽게 설치합니다.


아무도 배포 모듈을 언급하지 않았다는 사실에 놀랐습니다 . 다음은 프로젝트 페이지에서 발췌 한 것입니다.

... 사용자가 Drupal 사이트에서 다른 사이트로 콘텐츠를 쉽게 스테이징 할 수 있도록 설계되었습니다. Deploy는 엔티티 간의 종속성 (예 : 노드 참조)을 자동으로 관리합니다. 다양한 컨텐츠 스테이징 상황에서 사용하기 위해 쉽게 확장 할 수있는 풍부한 API를 갖도록 설계되었습니다.


나는 Drupal과 일하지 않지만 Joomla와 많이 일합니다. 웹 루트의 모든 파일 (제 경우에는 tar 및 gzip이지만 zip을 사용할 수 있음)에있는 모든 파일을 보관 한 다음 해당 보관 파일을 프로덕션 서버에 업로드하고 확장하여 배포합니다. 그런 다음 SQL 덤프 (mysqldump -u user -h host -p databasename> dump.sql)를 가져 와서 업로드하고 역방향 명령을 사용하여 데이터를 삽입합니다 (mysql -u produser -h prodDBserver -p prodDatabase <dump.sql ). 셸 액세스 권한이없는 경우 파일을 한 번에 하나씩 업로드하고 PHP 스크립트를 작성하여 dump.sql을 가져올 수 있습니다.


모든 버전 제어 시스템 (GIT, SVN) + Drupal 코드 배포를위한 기능 모듈 + 사용자 지정 설정 (콘텐츠 유형, 사용자 지정 필드, 모듈 종속성,보기 등).

배포 모듈이 개발 모드에있는, 그래서 당신은 사용하실 수 있습니다 노드 수출 콘텐츠 / 노드를 배포하는 드루팔 7에서 모듈을.


배포 (또는 Drupal)를 처음 사용하는 경우 모든 작업을 한꺼번에 수행해야합니다. 다른 사본에서 작업하는 동안 콘텐츠에 영향을 미치는 사용자가 있으면 매우주의해야합니다.

구조보다는 실제 콘텐츠, 분류, 사용자 등과 관련된 테이블을 남겨 둘 수 있습니다. 그런 다음 구성과 관련된 항목을 누릅니다. 그러나 이로 인해 복잡성이 추가됩니다.

배포가 당신에게 오래된 모자라면 사과드립니다. 따라서 이것은 모욕적입니다.


A good strategy that I have found and am currently implementing is to use a combination of the deploy module to migrate my content, and then drush along with dbscripts to merge and update the core and modules. It takes care of database merging even if you have live content, security and module updates, and I currently have mine set up to work with svn.

ReferenceURL : https://stackoverflow.com/questions/730138/whats-best-drupal-deployment-strategy

반응형