Przenoszenie strony na inny serwer

WordPress Duplicator
Nową stronę tworzymy zwykle na własnym komputerze lub na jakimś serwerze testowym. Gdy uznamy, że prace dobiegły końca, musimy przenieść cały serwis na docelowy serwer. WordPress nie posiada sensownego mechanizmu, który ułatwiałby taką operację. Wbudowany system eksportu danych nie nadaje się do przenoszenia całych serwisów – nie uwzględnia on bowiem ustawień strony, szablonu, wtyczek, menu i widgetów. Operację przenoszenia WordPressa na inny serwer można wykonać ręcznie, kopiując wszystkie pliki i bazę danych, a następnie modyfikując adresy URL, ale ponieważ zawsze staram się opisywać rozwiązania najprostsze, to zrobimy to za pomocą darmowej wtyczki Duplicator.

Aktualizacja – 18.01.2016: wpis został dostosowany do aktualnej wersji wtyczki (1.1.0).

Duplicator to narzędzie, które czyni cały proces przenoszenia zbudowanej na WordPressie strony pomiędzy serwerami tak prostym, że nie jestem w stanie wyobrazić sobie, jak można byłoby zrobić to jeszcze łatwiej. Rozszerzenie to można również wykorzystać do klonowanie serwisów lub wykonywania kopii bezpieczeństwa.

Po aktywacji wtyczki w menu panelu administracyjnego pojawi się nowe menu Duplicator. Znajduje się w niej sześć sekcji. Główna i najważniejsza to Packages, gdzie dzieje się cała magia. Settings zawiera ustawienia wtyczki. Tools to kilka narzędzi, które mogą pomóc w znalezieniu przyczyn ewentualnych błędów oraz generujące dane diagnostyczne, które w razie problemów należy przesłać autorowi wtyczki. Sekcja Help zawiera odnośniki do dokumentacji, a About – informacje o autorze.

Duplicator - Packages

Duplicator pozwala na utworzenie paczki instalacyjnej (plik ZIP), która zawiera wszystkie pliki naszej strony (włącznie z plikami WordPressa) i specjalnego instalatora (skrypt PHP), za pomocą którego automatycznie odtworzymy cały serwis znajdujący się w paczce na drugim serwerze. Instalator ten wykonuje również wszystkie operacje niezbędne do prawidłowego działania strony w nowym miejscu, takie jak zmiana informacji o bazie danych (login, hasło i nazwa) czy zmiana domeny we wszystkich adresach URL (zarówno tych znajdujących się we wpisach, jak i przechowywanych w konfiguracji WordPressa, wtyczek i szablonu).

Konfiguracja wtyczki

Zacznijmy od przejrzenia ustawień wtyczki. Znajdziemy je w menu Settings. Strona ustawień jest podzielona na dwie sekcje.

Duplicator - ustawienia

Sekcja Plugin zawiera kilka ustawień samej wtyczki. Poza numerem jej wersji znajdziemy tutaj opcje pozwalające na automatyczne usunięcie podczas dezinstalacji ustawień wtyczki i katalogu, w którym przechowywane są utworzone paczki. Poznamy także pełną ścieżkę katalogu, do którego zapisywane są wszystkie pliki. Opcja Disable .htaccess File In Storage Directory usuwa plik `htaccess` z katalogu, do którego wtyczka zapisuje pliki. Opcję tę należy włączyć tylko gdy napotkamy na problemy z pobieraniem utworzonych plików.

Duplicator - ustawienia

Sekcja Package zawiera kilka opcji związanych z procesem tworzenia paczek. Opcja Attempt Network Keep Alive pomaga w przypadku problemów z tworzeniem dużych archiwów. Opcja Database Build określa metodę tworzenia zrzutu bazy danych, z jakiej korzysta wtyczka. W większości przypadków sprawdzi się opcje Use PHP. Opcja Query Limit Size pozwala na określenie liczby rekordów zapisywanych w jednym zapytaniu SQL. Im wyższa wartość, tym szybciej zostanie wykonany zrzut bazy danych, ale zużycie pamięci będzie większe. Metoda Use mysqldump korzysta z narzędzia mysqldump, jest szybsza i powinna być włączana dla dużych baz danych. Może się jednak zdarzyć, że na niektórych serwerach współdzielonych nie będzie ona działać. Jeśli nie wiemy, z której metody skorzystać, zostańmy przy ustawieniach domyślnych.

Ostatnia opcja Package Debug pozwala na włączenie wyświetlania dodatkowych informacji technicznych na liście wygenerowanych paczek. Przydać się to może w przypadku problemów z wygenerowaniem paczki.

Tworzenie paczki instalacyjnej

W zakładce Packages znajdziemy przycisk Create New, który pozwala na utworzenie nowej paczki instalacyjnej. Po jego kliknięciu pojawi się strona z ustawieniami procesu generowania plików, podzielona na kilka sekcji.

Duplicator - sprawdzenie wymagań

W sekcji Requirements znajdziemy informacje na temat wymagań wtyczki odnośnie naszego serwera. Wymagania te nie są zbyt wygórowane i na większości serwerów nie będzie z nimi problemów. Zielone komunikaty Pass oznaczają, że dane wymaganie jest spełnione. Wtyczka sprawdza, czy posiadamy odpowiednią wersję PHP (wymagana jest wersja 5.2.9 lub nowsza), czy mamy zainstalowane moduły ZipArchive i MySQLi (jeśli ich nie ma, należy skontaktować się z administratorem serwera), czy dostępne są wymagane przez wtyczkę funkcje PHP oraz czy tryb Safe Mode jest wyłączony. Sprawdzane są również uprawnienia zapisu do katalogów, w których wtyczka tworzy swoje pliki, wersja bazy danych MySQL (5.0 lub nowsza), a także obecność pozostałości po nieudanych procesach tworzenia paczki instalacyjnej (Reserved Files).

Duplicator - ustawienia katalogu docelowego

W kolejnej sekcji możemy wprowadzić nazwę naszej nowej paczki instalacyjnej (pole Name), a także opcjonalnie dodać do niej opis (przycisk Notes). Sekcja Storage wyświetla informację o katalogu, do którego zostanie zapisana paczka. W płatnej wersji Pro mamy możliwość przesłania wygenerowanych plików do wybranej chmury (Dropbox, Google Drive lub Amazon S3), a także na dowolny serwer za pośrednictwem FTP.

Duplicator - ustawienia plików

Sekcja Archive zawiera dwie zakładki. W pierwszej z nich (Files) możemy wprowadzić katalogi (Directories), które nie zostaną dołączone do paczki instalacyjnej. Warto dodać tu katalog cache (o ile taki posiadamy). Jeśli na przykład tworzymy kopie bezpieczeństwa, które są zapisywane również na naszym serwerze, to warto wykluczyć katalog, do którego one trafiają. Możemy także wykluczyć pliki o konkretnych rozszerzeniach (File extensions), które nie mają trafić do paczki. Można tu na przykład wprowadzić rozszerzenie `tmp`, a w niektórych przypadkach dobrym pomysłem będzie wykluczenie wszelkiego rodzaju archiwów (pliki zip, rar, tag.gz i tym podobne). Należy jednak uważać, aby nie wykluczyć czegoś istotnego.

Duplicator - ustawienia bazy danych

W zakładce Database możemy wykluczyć tabele bazy danych. Opcja ta będzie przydatna w sytuacji, gdy w jednej bazie mamy dane kilku serwisów.

Duplicator - ustawienia instalatora

Sekcja Installer pozwala na wprowadzenie danych serwera docelowego, na którym mamy zamiar zainstalować naszą paczkę instalacyjną. Jeśli pozostawimy wszystkie pola puste, instalator pozwoli nam na wprowadzenie wymaganych informacji w momencie instalacji.

W części MySQL Server wprowadzamy dane serwera baz danych – host, port (zwykle domyślny będzie OK), nazwę bazy danych i nazwę użytkownika. Warto zwrócić uwagę, że nie ma pola do wprowadzenia hasła – będziemy musieli podać je podczas instalacji.

W części Advanced Options znajdziemy opcje Enforce on AdminEnforce on Login, które dotyczą tylko stron z cetyfikatem SSL. Pozwalają one na wymuszenie dostępu do panelu administracyjnego i ekranu logowania przez połączenie szyfrowane (https). Domyślnie Duplicator wyłącza wsparcie dla SSL. Opcje związane z cache (Keep EnabledKeep Home Path) pozwalają na zachowanie ustawień cache (domyślnie cache jest wyłączany).

W polu New URL możemy podać adres URL, jaki ma mieć serwis po zainstalowaniu. Instalator automatycznie zamieni w całej bazie danych stary (aktualny) adres na nowy.

Po wprowadzeniu wszystkich informacji możemy przejść dalej klikając przycisk Next.

Następnym krokiem jest skanowanie naszego serwisu. Na tym etapie nie jest jeszcze tworzona paczka instalacyjna – wtyczka zbiera jedynie informacje o plikach i bazie danych. Proces ten może trwać od kilku do kilkudziesięciu sekund – zależy do od ilości plików, wielkości bazy danych i wydajności serwera.

Po zakończeniu skanowania zobaczymy ekran podsumowania, podzielony na dwie sekcje.

Duplicator - skanowanie

Pierwsza sekcja zawiera wynik diagnostyki serwera, ustawień PHP i WordPressa. Wtyczka obsługuje praktycznie wszystkie najpopularniejsze serwery, tak więc nie powinno tu być żadnych problemów. Jedynym problemem, który może pojawić się podczas diagnostyki konfiguracji PHP, jest zbyt krótki maksymalny czas wykonywania skryptów. Jeśli otrzymamy taki komunikat, a nasza firma hostingowa nie będzie chciała zwiększyć tego limitu, to jedynym wyjściem będzie wykluczenie większych katalogów, tak aby generacja paczki trwała krócej. Diagostyka WordPressa sprowadza się do sprawdzenia jego wersji (wtyczka wymaga wersji 3.7 lub nowszej), pliku `wp-config.php` oraz katalogu cache (który warto wykluczyć).

Duplicator - skanowanie

Sekcja Archive zawiera wyniki skanowania plików naszej strony oraz bazy danych. Jak widać na zamieszczonym wyżej zrzucie ekranu, najczęstszym problemem są ostrzeżenia związane ze zbyt dużym rozmiarem plików lub bazy. W tym konkretnym przypadku występuje też problem z nazwami niektórych plików (Name Checks), które zawierają niedozwolone znaki. Szczegółowe informacje dotyczące tych ostrzeżeń możemy zobaczyć klikając linki ze strzałką.

Duplicator - skanowanie

Jeśli przejrzeliśmy wszystkie ostrzeżenia i chcemy kontynuować proces generowania paczki instalacyjnej, należy zaznaczyć opcję A warning status was detected, are you sure you want to continue? i kliknąć przycisk Build.

Duplicator - tworzenie paczki instalacyjnej

Proces tworzenia paczki instalacyjnej może chwilę potrwać. Wtyczka zrzuca zawartość bazy danych, tworzy skompresowane archiwum wszystkich plików i generuje skrypt instalatora. W trakcie generacji paczki nie wolno zamykać okna przeglądarki.

Duplicator - status tworzenia paczki

Po zakończeniu procesu pojawi się strona informująca, że wszystko poszło dobrze, wraz z nazwą paczki, czasem jej tworzenia oraz linkami do pobrania instalatora (Installer) i paczki instalacyjnej (Archive). Nowa paczka pojawi się również na liście dostępnych paczek (sekcja Packages). Lista ta zawiera między innymi informacje o czasie wykonania i rozmiarze paczki, a także o wersji wtyczki, jaką była wykonana. Klikając link View uzyskamy dostęp do pliku ze zrzutem bazy danych (nie będzie nam on potrzebny, ale dobrze wiedzieć, że tam jest) oraz logu procesu generowania paczki (może się przydać do rozwiązywania ewentualnych problemów).

Po prawej stronie znajdują się przyciski InstallerArchive, za pomocą których możemy pobrać na dysk odpowiednio instalatora i paczkę instalacyjną. Warto zwrócić uwagę, że nazwa paczki zawiera tajemniczo wyglądającym ciągiem znaków – jest tam on dlatego, aby nikt nieuprawniony nie był w stanie odgadnąć nazwy pliku paczki i pobrać go z naszego serwera.

Instalacja paczki na serwerze

Po pobraniu instalatora i paczki musimy przesłać oba pliki na docelowy serwer. Cały serwis zostanie zainstalowany w katalogu, w którym umieścimy pliki. Miejsce, do którego powinniśmy przesłać pliki, zależy od naszego serwera – najczęściej będzie to katalog public_html, ale nasza domena może być przypisana do innego katalogu. Jeśli mamy wątpliwości gdzie powinien zostać zainstalowany WordPress, skontaktujmy się z firmą hostingową utrzymującą nasz serwer.

Po przesłaniu plików musimy otworzyć skrypt instalatora w przeglądarce. Aby to zrobić musimy wpisać adres naszej docelowej strony, dodając do niego installer.php, na przykład http://nowa-domena.pl/installer.php. Jeśli wszystko poszło dobrze, powinniśmy zobaczyć stronę z pierwszym krokiem instalacji.

Duplicator - instalacja

W pierwszym kroku możemy sprawdzić, czy serwer, na którym chcemy zainstalować naszą paczkę, spełnia minimalne wymagania skryptu (sekcja Requirements) oraz uzupełnić dane bazy danych. W polu Host należy wpisać nazwę serwera baz danych (w większości przypadków będzie to localhost), w polu User – nazwę użytkownika bazy danych, w polu Password – hasło, a polu Name – nazwę naszej bazy danych.

Instalator wymaga pustej bazy danych, tak więc jeśli w naszej coś już jest, możemy wybrać opcję Connect and Remove All Data, która usunie wszystkie tabele ze wskazanej bazy. Alternatywnie możemy wybrać opcję Create New Database, która utworzy nową bazę danych (o ile taka jeszcze nie istnieje, a wprowadzony użytkownik bazy danych ma do tego uprawnienia). Klikając przycisk Test Connection możemy sprawdzić poprawność wpisanych danych.

W sekcji Advanced Options możemy wybrać dodatkowe opcje instalacji. Opcja Manual package extraction spowoduje, że instalator załaduje tylko dane do bazy danych i nie rozpakuje archiwum z plikami. Ta opcja może być przydatna gdy z jakiegoś powodu (na przykład zbyt dużego pliku) automatyczne rozpakowanie archiwum nie powiedzie się. Opcja Fix non-breaking space characters powoduje zamianę problematycznych znaków UTF8 na spacje. Z tej opcji można skorzystać tylko jeśli po imporcie widzimy w treści wpisów dziwne znaczki lub znaki zapytania. Pozostałe opcje zostały omówione przy okazji tworzenia paczki instalacyjnej.

Jeśli nasz serwer spełnia wymagania skryptu, a test połączenia z bazą danych zakończył się pomyślnie, możemy zaznaczyć opcję I have read all warnings & notices i rozpocząć automatyczne rozpakowanie paczki i import danych do bazy klikając przycisk Run Deployment.

Po zakończeniu instalacji paczki zostaniemy przeniesieni do kroku drugiego, który wykona zamianę starych adresów URL i ścieżek na nowe. Jest to konieczne, ponieważ w ustawieniach WordPressa oraz treści naszych wpisów mogą się znajdować pełne adresy, wraz z nazwą domeny z poprzedniego serwera. Musimy więc zamienić stary adres serwisu na nowy.

Duplicator - instalacja

W sekcji Old Settings znajdują się stary adres strony oraz ścieżka katalogu, w którym był zainstalowany WordPress. W sekcji New Settings znajdują się analogiczne dane dla nowego serwera. W większości przypadków pola te będą już wypełnione, więc musimy się tylko upewnić, że wszystkie informacje są poprawne.

W sekcji New Admin Account możemy utworzyć nowe konto administratora. Jeśli konto, które próbujemy stworzyć, już istnieje, to nie zostanie ono nadpisane ani usunięte.

Przejdźmy do sekcji ustawień zaawansowanych (Advanced settings). Na liście Scan Tables znajdują się wszystkie zaimportowane do bazy danych tabele. Jeśli mamy pewność, że któreś z nich nie zawierają adresów URL serwisu (na przykład tabele, które nie mają nic wspólnego z naszą stroną), to możemy je wykluczyć ze skanowania.

Lista Activate Plugins zawiera listę wtyczek znajdujących się w paczce instalacyjnej. Domyślnie wszystkie te rozszerzenia zostaną aktywowane, ale możemy aktywować tylko wybrane z nich.

Opcja Enable Full Search włącza pełne skanowanie tabel w bazie danych. Domyślnie instalator skanuje i modyfikuje ścieżki i adresy URL tylko w polach typu tekstowego (co w znacznej większości przypadków jest wystarczające). Pełne skanowanie powoduje, że pod uwagę brane są również pola innych typów, co znacznie spowalnia cały proces.

Na koniec została nam opcja Keep Post GUID unchanged?. GUID to unikalny identyfikator wpisu, który ogólnie rzecz biorąc nie powinien się nigdy zmienić. Opcję tę należy włączyć tylko wtedy, gdy przenosimy stronę na inny serwer bez zmiany jej adresu URL.

Kliknięcie przycisku Run Update spowoduje zaktualizowanie bazy danych naszego serwisu i zakończenie procesu instalacji paczki.

Duplicator - podsumowanie instalacji

Ostatni, trzeci krok instalacji zawiera listę kilku czynności, które musimy wykonać ręcznie. Przede wszystkim należy usunąć pliki instalatora (installer.php, installer-data.sql,installer-log.txt,installer-backup.php) i paczkę instalacyjną z serwera. Możemy to zrobić automatycznie, za pomocą narzędzia Cleanup (zostaniemy do niego przeniesieni po kliknięciu linku Security Cleanup). Następnie należy zaktualizować ustawienia linków – aby to zrobić wystarczy w panelu administracyjnym WordPressa przejść do sekcji Ustawienia → Bezpośrednie odnośniki i kliknąć przycisk Zapisz zmiany. Oczywiście nie wolno zapomnieć o przetestowaniu naszej strony, szczególnie pod kątem poprawności linków. Warto też zapoznać się z raportem z instalacji (link Review Install Report), który poza ogólnymi informacjami na temat ilości zaimportowanych i zmodyfikowanych danych, zawiera również informacje o błędach i ostrzeżeniach, jakie wystąpiły podczas instalacji paczki.

Bezpośredni link