Kilka dni temu opisywałem przebieg aktualizacji wtyczek i szablonów w WordPressie. Dzisiaj przybliżę działanie automatycznych aktualizacji samego WordPressa, które są nieco bardziej skomplikowane i składają się z nieco większej liczby kroków (czyli więcej rzeczy może w ich trakcie pójść nie tak jak trzeba).
Dla większości użytkowników informacje zawarte w tym wpisie będą tylko i wyłącznie ciekawostką. Jednak moim zdaniem warto się z nimi zapoznać, chociażby po to, aby mieć orientację w tym, co dzieje się „za kulisami” aktualizacji WordPressa.
Mimo że w tym przypadku (inaczej niż w przypadku wtyczek i szablonów) nie wszystkie pliki są usuwane z serwera, to wciaż aktualna pozostaje zasada, że nie wolno wykonywać żadnych zmian w plikach WordPressa.
Informacje o dostępnych aktualizacjach pobierane są przez API z serwerów WordPress.org. Gdy znaleziona zostanie nowsza od zainstalowanej wersja, w panelu administracyjnym naszej strony pojawia się odpowiednia informacja.
Automatyczną aktualizację zawsze powinniśmy poprzedzić wykonaniem kompletnej kopii zapasowej plików i bazy danych naszej strony (tak na wszelki wypadek).
Po uruchomieniu aktualizacji WordPress pobiera ze strony WordPress.org plik ZIP z aktualną wersją skryptu. W wersji 3.2 w celu przyśpieszenia tego procesu (i zmniejszenia ruchu na serwerach) wprowadzono mechanizm częściowych aktualizacji. Polega to na tym, że pobierany jest plik zawierający tylko nowe i zmodyfikowane pliki, dzięki czemu jest on znacznie mniejszy (przykładowo, pełne archiwum wersji 3.5.1 ma 5,18 MB, podczas gdy archiwum częściowe tylko 906 KB).
Po pobraniu plik jest rozpakowywany i sprawdzany, po czym w katalogu głównym WordPressa jest tworzony plik .maintenance
. Plik ten powoduje, że nasza strona staje się czasowo niedostępna, a próbujący ją przeglądać użytkownicy otrzymują komunikat Witryna jest tymczasowo niedostępna z powodu zaplanowanych prac konserwacyjnych. Zapraszamy ponownie za minutę. Gdy aktualizacja z jakiegoś powodu nie zakończy się poprawnie, może zajść konieczność ręcznego usunięcia tego pliku.
W kolejnym kroku nowe pliki są kopiowane do katalogu głównego WordPressa (istniejące pliki są nadpisywane). Warto dodać, że katalog wp-content nie jest w ogóle dotykany w trakcie aktualizacji, tak więc mamy pewność, że szablony i wtyczki (również te znajdujące się w paczce instalacyjnej) nie zostaną nadpisane. W tym kroku aktualizowane są również pliki językowe.
Tu pojawia się pytanie: co jeśli jeden z dołączanych do WordPressa szablonów zostanie zaktualizowany? Odpowiedź jest prosta: można go będzie uaktualnić w taki sam sposób, jak inne szablony czy wtyczki. Nawet jeśli w paczce aktualizacyjnej WordPressa znajduje się nowsza wersja szablonu, nie jest ona instalowana podczas aktualizacji. Daje nam to kontrolę nad tym, czy i kiedy są uaktualniane szablony.
Jeśli w nowej wersji WordPressa został dodany nowy szablon, to jest on kopiowany do odpowiedniego katalogu. W praktyce sytuacja ta ma miejsce tylko w przypadku wydania nowego motywu domyślnego (czyli dość rzadko). Dotyczy to również dołączanych do WordPressa wtyczek, aczkolwiek ostatnio miało to miejsce przy okazji wydania wersji 2.0 (czyli w grudniu 2005 roku).
Następnie uruchamiana jest funkcja usuwająca niepotrzebne pliki WordPressa – ich lista znajduje się w zmiennej $_old_files
(można ją znaleźć w pliku update-core.php
). Po zakończeniu tego procesu wykonywana jest procedura aktualizacji bazy danych – może ona modyfikować strukturę tabel, a także dodawać lub zmieniać znajdujące się w nich dane.
Na koniec instalator sprząta po sobie – usuwa rozpakowaną paczkę instalacyjną i plik .maintenance
(co powoduje, że strona staje się znów dostępna dla odwiedzających).
I to właściwie tyle – pozostaje nam tylko sprawdzenie, czy po aktualizacji wszystko działa tak jak trzeba.