나는이 질문이 조금 오래되었다는 것을 알고 있지만 여기에 대한 대답으로 보지 못 했으므로 단일 사이트 git 기반 설정 및 배포에서 일반적으로하는 일을 공유하고 싶습니다. 장치, 위치 및 여러 개발자 (모두 자체 로컬 리포지토리가 있으며 git에 공통적으로 작동 함).
다음 설정을 진심으로 제안 할 수 있습니다.
또한 머리를 감싸기 위해 두 번째 리소스가 필요한 경우에 설명되어 있습니다.
기본적으로 다음과 같은 방법으로 작동합니다 (최소한 세 번의 repos 사용).
- 웹 사이트를 git 아래의 라이브 호스트에 배치
- 라이브 호스트에 새로운 베어 git 저장소 를 만듭니다 .
- 그런 다음 기본 저장소에서 로컬 개발 git repo (s)로 분기합니다.
작업이 완료되면 복제 한 원격 베어 리포지토리를 누르십시오. 베어 리포지토리는 라이브 리포지토리와 동기화 할 후크가 있습니다 (위의 코드는 prime ).
repo의 Wordpress 특정 설정으로 나는 이것을 가지고 있습니다 .gitignore
:
# uploads are data, excluded from source tree
wp-content/uploads/
나머지는 포함합니다. 버전 / 구성 제어하에 유지되는 플러그인 및 테마 구성. 이를 통해 변경 사항을 추적하고 코드 를 실시간으로 사용 하기 전에 검토 할 수 있습니다. 또한 내 자신의 변경 사항으로 원격 트리에보다 쉽게 병합 할 수 있습니다. 이는 Github에서 사용할 수 있는 Wordpress 코어 에 특히 유용합니다 .
이것은 대부분의 Wordpress 요구에 아주 잘 작동합니다. Bare Repo는 충돌하는 변경 사항을 적용하지 못하게합니다. 또한 라이브 사이트를 업데이트하기 전에 먼저 원격 사본과 동기화됩니다. 즉, 라이브 사이트 업데이트는 일반적으로 매우 빠릅니다. 후크 때문에 원하는 경우 나중에 Wordpress 업데이트 후크를 호출 할 수도 있습니다.
Github 후크로 얼마나 향상시킬 수 있는지 실험하지 않았지만 코드가 Github가 아닌 로컬 버전 제어하에 있기 때문에 일반적으로 필요하지 않습니다.
이러한 시스템을 처음으로 설정하려면 원격 호스트에서 사용 가능한 모든 도구가 있는지 평가하는 데 시간이 걸립니다.
- SSH 액세스
- GIT
- 파일 및 하위 디렉토리를 넣을 수있는 개인 디렉토리 (예 : 베어 git 저장소)
처음 설정 시간은 다음을 포함하여 1 시간 내에 가능해야합니다. 전체 환경과 먼저 푸시를 게시합니다.
호스트에 따라 .git
웹 액세스로부터 디렉토리 를 보호 할 수도 있습니다. 다음은 .htaccess
Wordpress가 하위 디렉토리 안에 배치되어 저장소의 공간이 온라인으로 게시되지 않는 유용한 사이트입니다 (유용함).
Options -Indexes
# fix trailing slash for .git / make it disappear + .gitignore and similar files.
RedirectMatch 404 ^/\.git(.*)$
# mask 403 on .ht* as 404
<Files ~ "^\.ht">
Order Deny,Allow
Allow from all
Satisfy All
Redirect 404 /
</Files>
RewriteEngine On
RewriteBase /
# map everything into public and set environment var
# to tag the request being valid
RewriteCond %{ENV:REDIRECT_sitealias} !set
RewriteRule ^(.*)$ /public/$1 [E=sitealias:set,L]
간단히 말해서, 공용 디렉토리에없는 모든 것이 온라인이 아닙니다. 예를 들어 공개 디렉토리 안에 워드 프레스 코드베이스가 .htaccess
있을 수 있습니다.
RewriteEngine On
# mask as 404 if directly accessed
RewriteCond %{ENV:REDIRECT_sitealias} !set
RewriteRule .* - [L,R=404]
이렇게하면 public에 직접 액세스 할 수 없습니다 . 이 .htaccess -foo의 일부는 여기에 설명되어 있습니다. .htaccess에 대한 요청은 403 대신 404를 반환해야합니다 . 환경 변수의 경우 환경에서 작동하는지 테스트해야합니다. 또한 버전 관리하에 넣을지 여부를 결정해야합니다.
호스팅에 대한 통제력이 높으면 여기에서 더 많은 작업을 수행 할 수 있으며 (더 다르게 / 더 최적화되어 있음) 위의 예는 일반적인 공유 호스팅 환경을 대상으로합니다 (GIT를 제공하는 일부 사용자는 다음과 같이 쉽게 설치할 수 있다고 말합니다) 글쎄, 나는 일반적으로 내가 주최하는 사람들이 내가 돌보는 것을 선호하는지에 따라 호스트에게 그러한 것을 제공하도록 요청합니다.
부정적인 측면에서, 이것은 다른 답변들에 요약 된 일반적인 문제들 중 일부를 가지고 있습니다. 내가 자랑스럽지 않지만 작동하는 것은 데이터베이스 서버가 개발 사본을 가리 키도록 개발 호스트에 호스트 파일을 변경하는 것입니다. 따라서 하나의 데이터베이스 구성을 유지할 수 있습니다. 정말 멋진 esp. 자격 증명으로 인해
자동 백업
그러나 나는 일반적으로 여기에별로 신경 쓰지 않지만 대신 원격 시스템에서 매일 백업을 실행하여 점차적으로 다른 원격 위치에 저장됩니다. 쉽고 저렴하며 Wordpress 설치와 파일 업로드, 데이터베이스 및 git repo를 모두 복원 할 수 있습니다 . 또한 내 백업 명령의 경우 완벽하게 잘 보이지는 않지만 저에게 효과적입니다.
mysql: mysqldump --host=%s -u %s --password=%s %s| gzip > %s
git : git gc
git bundle
files: tar --force-local -czf %s %s
여기서 제안하는 것은 Wordpress에서 Wordpress 설치 프로세스를 유지하는 것입니다. 그들은 특정 시스템에서 실행해야합니다, 그래서 당신은 일반적으로 응용 프로그램 내에서 그들이없는 (아래로 갈 수 있습니다 예를 들어, 응용 프로그램하지만 당신은 필요로 이러한 작업을 계속하도록).
팀워크에 사용
또 다른 좋은 이점은 사이트가 이미 팀워크를 위해 활성화되어 있다는 것입니다. 추가 베어 저장소 덕분에 많은 잘못을 저지를 수 없으며 마스터 또는 라이브 브랜치와 다른 원격 브랜치를 동료와 공유 할 수도 있습니다.