Mam konfigurację, z której jestem dość dumny i działa bardzo dobrze dla mojego zespołu.
Struktura ogólna
Trzymam całą instalację pod kontrolą git. Wszystkie zmiany, czy to aktualizacja systemu, dodawanie / aktualizowanie wtyczki, dodawanie / aktualizowanie motywu, przechodzą przez ten sam przepływ pracy. Zmiany można wycofać w dowolnym momencie. Mam serwer wdrażania (stary pulpit P4) z uruchomioną gitozą, ale równie dobrze możesz użyć github lub gitolite . W git mam dwie „specjalne” gałęzie master
i develop
(wyjaśniono więcej poniżej). Moje serwery produkcyjne i tymczasowe są oparte na chmurze.
Środowiska programistyczne
Każdy programista uruchamia własny serwer programistyczny na własnym komputerze. Jeśli chodzi o bazy danych, potrzeba danych na żywo prawie nigdy nie stanowiła problemu. Używamy głównie danych z testu jednostki tematycznej . W przeciwnym razie eksport i import obejmuje większość rzeczy. Jeśli element DB był kluczowy, można skonfigurować replikację lub coś do synchronizacji na żądanie. Kiedy początkowo konfigurowałem tę strukturę, pomyślałem, że będzie to kluczowe, więc zacząłem pisać zestaw narzędzi, aby to zrobić, ale ku mojemu zdziwieniu tak naprawdę nie były potrzebne. (uwaga: ponieważ nie były one konieczne, nigdy ich nie dopracowywałem, więc pojawiają się błędy, np. zastąpi domenę w serializowanych danych).
Środowisko przejściowe
Gdy zatwierdzenia są wypychane z develop
gałęzi do gitosis, są one automatycznie wdrażane na naszym serwerze pomostowym. Baza pomostowa jest urządzeniem podrzędnym względem produkcyjnej bazy danych.
Środowisko produkcyjne
Gdy zatwierdzenia są wypychane do gitosis w master
oddziale, jest ono automatycznie wdrażane na serwerze produkcyjnym.
Problem z wp-config.php
Chcesz wp-config.php
być wyjątkowy między serwerami, ale chcesz też mieć kontrolę nad wersją. Moim rozwiązaniem było .gitignore
zignorowanie wp-config.php
i przechowywanie wersji testowej i produkcyjnej jako plików o różnych nazwach. Następnie na każdym serwerze umieszczam dowiązanie symboliczne np wp-config.php -> wp-config-production.php
. Każdy użytkownik przechowuje następnie własną bazę danych z własnymi poświadczeniami, z własnymi (nie śledzonymi) ustawieniami wp-config.php.
Inne notatki
Korzystam z Rackspace Cloud , która jest fenomenalna i niedroga. Dzięki temu mogę zachować identyczność moich serwerów testowych i produkcyjnych. Piszę teraz również wtyczki, które używają ich interfejsu API, aby pozwolić mi kontrolować moje usługi bezpośrednio z poziomu WordPress, to cudowne.
Katalogi pamięci podręcznej, katalogi przesyłania plików itp. Są dodawane do .gitignore. Jeśli chcesz, możesz skonfigurować zadanie CRON, aby rutynowo sprawdzać przesyłane pliki i popychać je do gitosis, ale nigdy nie wydawało mi się to konieczne.
Struktura master / develop ma częściowo naśladować rozgałęziony model Vincenta Driessena . Używam również jego rozszerzenia git git-flow i bardzo bym to sugerował.
Miałem około 10 programistów pracujących nad tą strukturą od ponad roku i praca z nimi była marzeniem. Niezawodny, bezpieczny, szybki, funkcjonalny i zwinny, nie możesz prosić o wiele więcej!