WordPress 사이트를위한 개발, 단계 및 프로덕션 배포?


41

따라서 WordPress 웹 사이트에 대해 별도의 서버를 통해 dev / stage / production 반복을 가질 수 있어야합니다. 일반적으로 git을 사용하지만 주 데이터베이스의 데이터베이스에 의존하기 때문에 분명히 WordPress 사이트와 작동하지 않습니다. 거의 모든 것의 구성.

내 질문은 어떻게합니까? 나는 빠른 구글을 가지고 플러그인이 몇 개 있다는 것을 알았습니다. 이것이 유일한 방법입니까? 사용 편의성, 속도, 신뢰성, UI 등에서 어떤 작업을 가장 잘 수행합니까?


pantheon.io 는 단일 도메인을 개발, 테스트 및 운영합니다. 그들은 파일에 git을 사용하고 한 번의 클릭으로 파일 사이에 데이터베이스를 전송합니다. 그것은 시도 무료입니다 당신이 '라이브'갈 때 당신은 단지 지불 - youtube.com/watch?v=KpGTDeqwgX4
jgraup

답변:


27

꽤 자랑스러워하는 설정이 있으며 팀에 매우 적합합니다.

일반 구조

전체 설치를 자식으로 유지합니다. 시스템 업데이트, 플러그인 추가 / 업데이트, 테마 추가 / 업데이트 등 모든 변경 사항은 동일한 워크 플로를 거칩니다. 변경 사항은 즉시 통지 할 수 있습니다. gitosis를 실행하는 배포 서버 (이전 P4 데스크톱)가 있지만 github 또는 gitolite 를 쉽게 사용할 수 있습니다 . 자식에는 두 개의 "특별한"지점이 master있으며 develop(아래에 더 자세히 설명되어 있습니다). 내 프로덕션 및 준비 서버는 클라우드 기반입니다.

개발 환경

모든 개발자는 자신의 컴퓨터에서 자체 개발 서버를 실행합니다. 데이터베이스 측면에서 라이브 데이터가 필요한 것은 거의 문제가되지 않았습니다. 우리는 주로 테마 단위 테스트 데이터를 사용합니다 . 그렇지 않으면 내보내기 및 가져 오기가 대부분을 포함합니다. DB 조각이 중요한 경우 주문형 동기화를 위해 복제를 설정하거나 무언가를 설정할 수 있습니다. 처음 에이 구조를 설정할 때 이것이 중요 할 것이라고 생각했기 때문에이 도구 를 작성하기 시작 했지만 놀랍게도 실제로 필요하지 않았습니다. (참고 : 필요하지 않았으므로 연마하지 않았으므로 직렬화 된 데이터에서 도메인을 대체하는 버그가 있습니다).

준비 환경

커밋이 develop브랜치에서 gitosis 로 푸시되면 스테이징 서버에 자동으로 배포됩니다. 준비 데이터베이스는 프로덕션 데이터베이스의 슬레이브입니다.

생산 환경

커밋이 master브랜치에서 gitosis로 푸시되면 프로덕션 서버에 자동으로 배포됩니다.

wp-config.php 문제

당신이 원하는 wp-config.php서버로 서버에서 고유해야합니다,하지만 당신은 또한 버전 통제를 유지하려는. 내 솔루션은을 .gitignore무시 wp-config.php하고 준비 및 프로덕션 버전을 다른 이름의 파일로 저장하는 데 사용 되었습니다 . 그런 다음 각 서버에서 symlink eg wp-config.php -> wp-config-production.php. 그런 다음 각 사용자는 자체 (트랙되지 않은) wp-config.php 설정으로 자체 자격 증명을 사용하여 자체 DB를 유지합니다.

기타 사항

나는 경이롭고 저렴한 Rackspace Cloud를 사용 합니다. 이를 통해 스테이징 서버와 프로덕션 서버를 동일하게 유지할 수 있습니다. 또한 현재 API를 사용하여 WordPress 내에서 바로 서비스를 제어 할 수있는 플러그인을 작성하고 있습니다.

캐시 디렉토리, 파일 업로드 디렉토리 등이 모두 .gitignore에 추가됩니다. 원한다면 정기적으로 업로드를 체크인하고 gitosis로 푸시하도록 cron 작업을 설정할 수는 있지만 결코 필요하지 않은 것 같습니다.

마스터 / 개발 구조는 Vincent Driessen의 브랜칭 모델 을 부분적으로 모방하도록 설정되었습니다 . 나는 또한 그의 git extension git-flow를 사용 하고 그것을 강력히 제안한다.

나는 10 년 정도의 개발자 가이 구조를 1 년 넘게 일해 왔으며 함께 일하는 것은 꿈이었습니다. 신뢰할 수 있고 안전하며 빠르며 기능적이며 민첩하므로 더 많은 것을 요구할 수 없습니다!


비슷한 방식으로 wp 설치를 설정하려고하지만 (우리는 svn을 사용합니다) 플러그인 및 wp 업데이트 프로세스를 확인하고 싶습니다. 업데이트를 완료하고 dev를 확인하고 변경 사항을 커밋하고 스테이징에 배포하고 확인하십시오. 생중계합니다. 요약하면 실제로 리포지토리의 업데이트를 통해 변경 사항을 가져 오는 라이브 서버에서 wp 설치 업데이트를 수행하지 않습니까?
paullb

1
업데이트 루틴에 의한 DB 변경은 어떻습니까? 이것들은 프로덕션 DB에 어떤 영향을 미칩니 까?
paullb

해당 워크 플로는 @paullb가 정확하며 DB 업데이트에 대해 걱정할 필요가 없습니다. WordPress가 작동하는 방식, 변경이 감지 된 후 업데이트가 트리거되므로 수동 업데이트 (코어 또는 플러그인으로)가 작동하는 방식과 동일하게 작동합니다!
Matthew Boynes

@MatthewBoynes, 안녕하세요. 이 워크 플로를 개발에 계속 사용하고 있습니까? 그렇다면이 워크 플로를 프로젝트에 적용하겠습니다. 감사합니다 :)
khakiout

필자는 현재 WordPress.com VIP에서 주최하는 현재 작업중인 프로젝트에는 해당되지 않기 때문에 그렇지 않습니다. 해당되는 경우에도 계속 사용합니다 (실제로 이전에 근무했던 회사에서 계속 사용합니다).
Matthew Boynes

4

먼저, 나는 당신이 Version Control에 가고 있는 것을 고려 하는 것이 중요하다고 생각 합니다. 전체 WP 디렉토리를 VC 아래 두지 않는 것이 좋습니다 . wp-content / themes / YourThemeName을 VC에 넣는 것이 가장 합리적이라고 생각합니다. 복잡한 플러그인이 많은 대규모 사이트의 경우 wp-content / plugins도 포함시킬 수 있습니다. 꼭해야한다면 wp-content / uploads를 포함시킬 수 있습니다. 아래의 답변은 버전 제어에 따라 약간 변경됩니다.

그것을 감안할 때, 여기 내가 사용하는 것이 있습니다 :

로컬 : 컴퓨터에 LAMP 스택을 설정하십시오. 개발 사이트와 동일한 URL을 사용하십시오. URL 관점에서 VirtualHosts 및 .host 파일 항목을 사용하여 개발 환경을 시뮬레이션하십시오. 테마를 VC하는 경우 SSHFS를 사용하여 wp-content / plugins, wp-content / uploads에 연결하는 것이 좋습니다. 실제로 무거운 작업을 수행하지 않는 한 프로젝트의 개발 설치에서 데이터베이스를 사용하는 것이 좋습니다.

개발 : Repo의 작업 사본을 WP 환경으로 점검하십시오. SVN에서 POST-COMMIT 후크를 설정하여 각 커밋마다이 저장소를 업데이트하십시오. 동기화 상태를 유지합니다. (불쌍한 사람의 지속적인 통합을 고려하십시오.)

프로덕션 : 최종 후보를 나타내는 명명 된 버전 태그를 확인하십시오. 새 버전을 사용해야하는 경우 태그를 전환하고 저장소를 업데이트하십시오.


개발 환경은 야간 빌드 테스트에 매우 적합하며 git wordpress는 30 분마다 자동으로 업데이트되며 분산되어 팀을 위해 더 잘 작동하는 것 외에도 git / hg로 이동 한 사람은 알지 못합니다. svn을 사용합니다.
Wyck February

1
전체 WP 디렉토리를 버전 제어에 두지 않는 이유에 대해 궁금합니다. 워크 플로의 병목 현상처럼 보입니다. 리포지토리에 WP를 넣으면 모든 개발자에게 동일한 코드베이스와 WP 버전이 제공됩니다. 또한 여러 환경에서 일관성을 유지할 수 있습니다. 조건부 wp-config 파일에 대한 Wyck의 링크를 참조하십시오.
Brian Fegter

2

최근에 RAMP를 발견했습니다 . 참고 : 이것은 전체 프로세스의 일부일 뿐이지 만 서버간에 콘텐츠 데이터베이스를 동기화하는 것이 가장 어려운 부분 일 수 있습니다.


2

git과 mercurial 로이 작업을 수행하므로 개인 저장소를 사용하고 있는지 확인하십시오.

옵션 1.

유일한 문제는 config.php인데, git에게 push 또는 init 전에 무시하도록 할 수 있습니다.

사용 .gitignore또는 git update-index --assume-unchanged config.php( 사용 하기 전에 변경되지 않은 것으로 가정 된 명령에 대해 조금 읽어보십시오)

옵션 2.

config.php에서 url을 확인하고 "server url = dev이면 자격 증명 A를 사용하고 그렇지 않으면 자격 증명 B를 사용하십시오"등의 행을 따라 올바른 자격 증명을 적용하는 조건을 사용하십시오.

Mark는 이것을 더 잘 설명합니다. http://markjaquith.wordpress.com/2011/06/24/wordpress-local-dev-tips/

추신. 전통적인 "파일 서버"대신 원격 리포지토리에서 직접 파일을 서버에 연결할 수도 있습니다. (정말 지루한 비디오에 대해 http://www.youtube.com/watch?v=8ZEiFi4thDI )

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.