Opracowywanie, testowanie i publikowanie

10

Jak opracowujesz, testujesz i wdrażasz swoje witryny Wordpress?

Zawsze uważam, że to trochę kłopot, szczególnie jeśli chodzi o bazy danych - głównie ze względu na fakt, że posiadanie strony testowej wymaga wdrożenia całej nowej bazy danych, która czasami może być DOKŁADNIE taka sama, z wyjątkiem tego, że wszystkie linki są zmieniane na testujący adres URL zamiast witryny aktywnej.

Podobnie wszelkie przesłane pliki, które użytkownicy przesłali od czasu ostatniej potrzeby naprawy błędu lub opracowania czegoś nowego, będą musiały zostać skopiowane na stronę testową.

Jak robią to inni? Czy po prostu znosisz faffa? Czy korzystasz ze sprytnych systemów kontroli wersji, które pomagają?

Dzięki

Thomas Clayson
źródło
Jeśli sprawisz, że system będzie obracał się wokół zmiany pliku hosts , to nigdy nie będziesz musiał marnować testowej bazy danych. ( wordpress.stackexchange.com/a/10943/9142 )
Alexander Bird

Odpowiedzi:

12

Jest trochę osobistej filozofii, która dotyczy przepływu pracy wdrażania. Odpowiedź na pytanie nie jest łatwa bez znajomości swojego doświadczenia z serwerami i kontrolą wersji, systemu operacyjnego, hostingu, doświadczenia klienta i kultury technicznej itp.

  1. Oto podobne pytanie, które ma wiele wyjaśnień.
  2. Aby wdrożyć zawartość, możesz sprawdzić wtyczkę RAMP Crowd Favorite .
  3. WP Hakerzy to świetny wątek do wyszukiwania dobrych informacji o wdrożeniach.

Osobiście dbam o to, aby nigdy nie kodować bezwzględnych adresów URL w moich motywach. Użyj bloginfo () lub względnych adresów URL kodu. W moim pliku wp-config.php używam wielu warunków warunkowych. Oto waniliowa wersja moich edycji wp-config.

switch($_SERVER['SERVER_NAME']){
    case 'dev.yourdomain.com':
        $db_host = '';
        $db_pass = '';
        //define debugging
        break;
    case 'stage.yourdomain.com':
        $db_host = '';
        $db_pass = '';
        break;
    default: //Live
        $db_host = '';
        $db_pass = '';
}
define('DB_PASSWORD', $db_pass);
define('DB_HOST', $db_host);

//You could also set this as a variable above
define('WP_HOME', 'http://'.$_SERVER['SERVER_NAME']));
define('WP_SITEURL', 'http://'.$_SERVER['SERVER_NAME']));

Pracuję na wielu stronach, które śledzą

  • lokalne (osobiste hakowanie :) na moim serwerze internetowym laptopa)>
  • dev (testowanie na serwerze klienta)>
  • etap (stabilne źródło kontroli jakości - edycja treści)>
  • produkcja (strona na żywo)

Na koniec sugeruję skorzystanie z narzędzia do kontroli wersji, aby pomóc we wdrożeniach, takich jak GIT lub SVN. Znacznie ułatwia to proces i zachowuje integralność źródła między środowiskami. Zatwierdzenie do lokalnego jest łatwo zaktualizowane za pomocą wiersza poleceń na etapie i produkcji. Podczas odkrywania najlepiej jest określić, z jakiej wersji będziesz korzystać od samego początku, jeśli masz programistów pracujących nad projektem. Osobiście używam GIT do kontroli wersji. Jeśli jednak klient korzysta z SVN, robię połączenie tych dwóch w moim lokalnym, więc zachowuję repozytorię dla siebie, jednocześnie zobowiązując się do ich repozytorium.

Rzadko występują problemy z migracją z jednego środowiska do drugiego. Wykonujemy wyszukiwanie / zamianę w bazie danych, aby odpowiednio zmienić adres URL osadzonych multimediów itp.

Brian Fegter
źródło
To jest bardzo przydatne! :) Dziękuję Ci bardzo. Czy za każdym razem, gdy wdrażasz na każdym z różnych serwerów, duplikujesz bazę danych z działającej witryny? Mówisz, że wdrażasz na serwerze pomostowym (stage.domain.com) w celu kontroli jakości i edycji treści. Co się stanie, jeśli baza danych ulegnie zmianie podczas działania serwera scenicznego w witrynie na żywo? tzn. Ty lub Twój klient loguje się na scenie i aktualizuje niektóre treści, ale jednocześnie autor publikuje nowy artykuł w witrynie na żywo? Czy modyfikujesz treść PONOWNIE na stronie na żywo? Jak radzisz sobie ze zmianami struktury bazy danych?
Thomas Clayson,
Przepraszam za wszystkie pytania! : p Jestem bardzo wdzięczny za twój czas i pomoc.
Thomas Clayson,
W nowym zestawie funkcji możesz pobierać ze sceny prod>. Następnie dodaj treść nowej funkcji, przesuń scenę> prod. Stamtąd stage jest kopią wysokiej jakości prod i możesz pobrać stage> dev. Nieczęsto ściągamy DB ze sceny. Większość wymian z DB odbywa się od etapu do prod, chyba że funkcja zmieni architekturę db.
Brian Fegter,
Jeśli chcesz użyć etapu do wdrażania treści i nigdy nie dotykać prod, możesz sprawdzić wtyczkę RAMP, którą zamieściłem wcześniej.
Brian Fegter,
Daj +1 wszystkim powyższym, z zastrzeżeniem, że niektóre irytujące wtyczki nalegają na przechowywanie adresów URL w serializowanych tablicach, które mogą zepsuć przenoszenie rzeczy z bazy danych env na drugą. Problem polega na tym, że szeregowane tablice przechowują długości łańcuchów i są rozwijane, gdy zmienia się długość. Dlatego zalecałbym utrzymywanie nazw domen env bez zmian, jeśli to w ogóle możliwe, np. Dev.example.com, tst.example.com, www.example.com itp.
web