Zadałem to pytanie ponad rok temu iw tym czasie dodaliśmy więcej osób do naszego zespołu i opracowaliśmy znacznie większą liczbę witryn w WordPress. Chciałem przejść przez nasz proces, aby pomóc komukolwiek innemu.
Wszystko w Git
To było coś, co robiłem, nawet gdy zadawałem pytanie, ale dobrze jest to podkreślić. Korzystanie z Git nie tylko pomogło nam zwiększyć produktywność, ale także kilkakrotnie uratowało nasze kolektywne oceny.
Czy kiedykolwiek musiałeś dokonywać poważnych remontów strukturalnych na budowie, uzyskiwać zgodę klienta na te renowacje, a jednocześnie dokonywać drobnych aktualizacji wersji nieodnowionej? Mamy i Git, pozwól nam to zrobić. Opisanie tej konfiguracji byłoby trochę skomplikowane, ale podstawowe jest to, że stworzyliśmy nową gałąź, przeciągnęliśmy tę gałąź na serwer i dołączyliśmy subdomenę do tej gałęzi.
Zostaliśmy również uratowani przez Git. To oczywiście pozwala nam przywracać zmiany, co jest świetne, ale pozwala nam także przywracać stare wersje plików. Oznacza to, że jeśli klient zapyta: „Pamiętasz, jak działała ta część witryny około rok temu? Czy możemy to przywrócić?”, Odpowiedź brzmi „tak” - nawet jeśli pytana osoba nie brała udziału w tym projekcie przez rok temu.
Oprócz tych punktów oznacza to również, że nigdy nie utkniemy bez potrzebnych plików. Zawsze możemy pobrać najnowszą wersję strony z dowolnego komputera i rozpocząć wprowadzanie zmian.
Do wdrożenia użyj Git
Prowadzimy hosting WordPress w Media Temple i bardzo nam się podobają. Nie są najtańszym dostawcą, ale ich usługa jest doskonała, a ich serwery są naprawdę dobrze skonfigurowane. Zapewniają również domyślnie Git. Oznacza to, że możemy skonfigurować serwer jako repozytorium Git i w ten sposób pobierać zmiany zamiast używać SFTP. Oznacza to również, że wykonywanie pracy na serwerze nie jest zagrożone nadpisaniem (ponieważ zmiany te można po prostu scalić i przenieść z powrotem).
Ponieważ używamy BitBucket jako naszego hosta Git, tutaj wymaga trochę dodatkowej pracy. Przede wszystkim używamy plików .ssh / config , abyśmy mogli wpisywać takie rzeczy, jak ssh sitename
logowanie do naszych serwerów (używamy również SSH bez hasła , co czyni to bardzo łatwym). Zawsze upewniamy się, że zawsze używamy haseł ssh (Mac OS X ułatwia to, umożliwiając przechowywanie hasła w Keychain.app ). Na koniec dodajemy wiersz ForwardAgent do wpisu .ssh / config na hostach, z których chcemy pobierać. Oznacza to, że potrzebujemy tylko klucza publicznego SSH każdej osoby w BitBucket, a nie klucza publicznego każdego serwera. Dbamy również o to, aby .git
katalog był o jeden katalog powyżej publicznego katalogu HTML.
Zautomatyzowane zrzuty bazy danych
Gdy serwer jest w trybie produkcyjnym , na wszelki wypadek zapewniamy automatyczne wykonanie kopii zapasowej naszej bazy danych .
Każdy ma własną konfigurację wp-config
Ponieważ wszyscy mamy własne nazwy użytkowników i hasła do lokalnych baz danych, a ponieważ moglibyśmy używać różnych nazw i mechanizmów udostępniania, każdy z nas zachowuje własny plik wp-config. Każdy z nich jest przechowywany w Git pod nazwą podobną wp-config-gavin.php
, a kiedy chcemy użyć tej konfiguracji, dowiązujemy ją symboliczniewp-config.php
(co jest ignorowane przez Git przy użyciu .gitignore ).
To pozwala nam również zastąpić siteurl
opcję w wp_options
tabeli bazy danych w następujący sposób:
define('WP_SITEURL', 'http://sitename.localhost');
define('WP_HOME', 'http://sitename.localhost');
To uniemożliwia WordPressowi przeglądanie bazy danych lokalizacji serwera i oznacza, że nie ma dziwnych różnic w lokalizacji między instalacjami lokalnymi a serwerowymi.
Ostatnia uwaga na temat plików wp-config.php: pamiętaj, aby przechowywać je nad publicznym katalogiem HTML i uczynić uprawnienia tylko do odczytu dla użytkownika sieci . To ogromna różnica w zabezpieczaniu WordPressa.
Problem z bazą danych
Wreszcie, sedno sprawy.
Musiałem zaakceptować to, że używając WordPress, nie ma dobrego sposobu na „scalenie” zmian w bazie danych. Zamiast tego musieliśmy opracować zasady postępowania, aby rozwiązać ten problem. Zasady są dość proste i do tej pory dobrze nam służyły.
Podczas opracowywania jest jedna osoba, która „jest właścicielem” witryny. Ta osoba zwykle wykonuje konfigurację (zebranie pakietu hostingowego, rozpoczęcie projektu Basecamp, krojenie projektu itp.). Gdy ta osoba znajdzie się w rozsądnym punkcie, zrzuć bazę danych do instalacji WordPress i umieść ją w Git. Od tego momentu każdy programista używa zrzutu bazy danych, a właściciel jest jedynym, który wprowadza zmiany w bazie danych.
Gdy kompilacja witryny pójdzie trochę dalej, witryna zostanie umieszczona na serwerze. Od tego momentu baza danych serwera jest kanoniczna. Wszyscy (łącznie z właścicielem) muszą wprowadzić wszystkie zmiany w bazie danych na serwerze i usunąć te zmiany w celu rozwoju lokalnego i testowania.
Ten proces nie jest idealny. Nadal możliwe jest, że ktoś będzie musiał wprowadzić zmiany w backendie WordPress lokalnie podczas programowania, a następnie będzie musiał wprowadzić te zmiany ponownie w produkcji. Odkryliśmy jednak, że takie rzeczy są rzadkie i ten proces działa dla nas całkiem dobrze.