Przenoszenie PrestaShop – zmiana hostingu i domeny

Web Design Blog

Kategoria:
E-commerce

Data publikacji:
8 stycznia 2020

Autor:
Paweł Mansfeld

Przenoszenie PrestaShop – zmiana hostingu i domeny

Przenosznie sklepu PrestaShop 1.7 lub jego skopiowanie (czy sklonowanie) w celu postawienia wersji testowej/eksperymentalnej może sprawiać trudności. Postanowiłem zrobić tutorial przenoszenia skryptu PrestaShop w najtrudniejszym i najbardziej złożonym scenariuszu, czyli zmieniamy zarówno serwer i domenę. Jak przenieść PrestaShop na inny serwer? Odpowiedź w tym ilustrowanym przewodniku.

Zmiana domeny PrestaShop

Jeżeli zmieniamy tylko domenę to sprawa jest bardzo prosta. Najpierw przechodzimy do ustawień: Preferences >> SEO & URLs >> Set shop URL (lub po polsku: Preferencje >> Ruch >> Ustaw URL sklepu) i zmieniamy wartość na konkretną domenę.

Zmiana domeny sklepu PrestaShop

Z taką sytuacją mamy miejsce kiedy rozwijamy sklep przed rejestracją domeny a deweloperski serwer w pewnym momencie staje się środowiskiem produkcyjnym.

Teraz musimy spowodować aby nowa domena wskazywała na lokalizację, na którą wskazywała stara domena. możemy to zrobić poprzez:

  • edycję pola A
  • podłączenie domeny w panelu do zarządzania serwerem (opcja Multidomeny lub Multistrony),
  • edycja wpisów VirtualHost jeżeli na serwer wskazuje kilka domen i mamy do czynienia z jakimś VPS lub serwerem dedykowanym).

Zmiana serwera PrestaShop 1.7

Migracja PrestaShop na nowy serwer to znacznie ciekawsze zadanie. Na potrzeby tego tutorialu zainstaluję PrestaShop w najnowszej wersji 1.7 aby niczego nie przeoczyć. Dodam jakieś produkty aby mieć pewność, że wszystko zostało poprawnie przeniesione. Do celów przeniesienia, nie będę zmieniał żadnych opcji aby symulować sytuację, że oryginalna instalacja jest aktywna w trakcie całego procesu a my dysponujemy jedynie plikami i zrzutem bazy danych.

Krok 0: Tryb przerwy technicznej

Włączenie trybu konserwacji/przerwy technicznej może być przydatne jeżeli chcemy mieć idealną zgodność plików z bazą danych.

Włączanie przerwy technicznej

Wykonywanie kopii plików i bazy danych może spowolnić serwer i spowodować niepotrzebne problemy – to kolejny argument by włączyć przerwę techniczną ale nie jest to jakiś konieczny wymóg. Pamiętaj by po wszystkim wyłączyć przerwę techniczną.

Krok 1: Kopiowanie plików PrestaShop

Najpierw kopiujemy pliki do nowej lokalizacji. Nie kopiuj plików pojedynczo poprzez FTP. Aby zaoszczędzić sporo czasu zaloguj się na SSH lub stwórz sobie prosty plik PHP, który skompresuje cały folder ze sklepem do jednego pliku ZIP. Przenieś ten plik a potem go rozpakuj na docelowym serwerze.

Jeżeli kopiujesz pliki ze swojego lokalnego XAMPP to wystarczy użyć jakieś dowolnej aplikacji typu WinRar i zwyczajnie spakować pliki do archiwum ZIP.

Kompresja folderu do pliku ZIP na serwerze po SSH wykonujemy prostą komendą:

 zip -r prestashop.zip * 

Oczywiście z założeniem, że znajdujemy się wewnątrz tego folderu np. htdocs lub public_html. Na serwerze, na który przenosimy sklep wystarczy wywołać komendę

unzip prestashop.zip

Jezeli komendy zip i unzip nie działają (Command not found), trzeba zainstalować pakiet zip:

 sudo apt-get install zip 

Jeżeli nie masz dostępu do SSH, w ostateczności możesz stworzyć plik unzip.php z taką zawartością:

<?php 
system ("unzip prestashop.zip");

To spowoduje wypakowanie wszystkich plików. Upewnij się czy po rozpakowaniu plików i folderów – mają one dobrze przypisane uprawnienia, jeżeli nie wiesz jakie nadać to nadaj 777. To i tak nie ma znaczenia pod katem bezpieczeństwa, grunt aby PrestaShop mogła zapisywać pliki w niektórych folderach.

Krok 2: Eksport bazy danych MySQL

W tym celu możemy skorzystać z konsoli lub phpMyAdmin. Aby przewodnik był przydatny dla większości odbiorców posłużę się aplikacją phpMyAdmin:

Eksportowanie bazy danych MySQL PrestaShop

Po kliknięciu „Wykonaj” powinien nam się pobrać plik SQL. W przypadku obszernych baz można użyć opcji zaawansowanych i wybrać kompresję zip lub gzip.

Jeżeli nie masz phpMyAdmin lub nie chce ci się go włączać, możesz użyć komendy SSH (zakładamy, ze nazwa bazy danych to prestashop a użytkownik to root):

mysqldump -p -u root prestashop > presta.sql

Krok 3: Import bazy danych MySQL na nowym serwerze

Na nowym serwerze uruchamiamy phpMyAdmin i importujemy wyeksportowany plik z zawartością oryginalnej bazy danych pamiętając, że najpierw musimy wybrać istniejącą lub stworzyć nową bazę danych.

Jeżeli w tym kroku też chcemy wykorzystać SSH, to możemy skopiować plik presta.sql na nowy serwer i wywołać:

mysqldump -p -u root prestashop < presta.sql

Krok 4: Edycja pliku parameters.php

Plik parameters przechowuje podstawową konfigurację w tym dane uwierzytelniające do bazy danych. Ścieżka: app/config/parameters.php

Edytujemy stare dane dostępowe na nowe. Należy zmienić:

  • adres serwera MySQL (często pozostaje localhost jeżeli baza danych jest zainstalowana lokalnie),
  • nazwę użytkownika MySQL,
  • hasło do MySQL,
  • nazwę bazy danych.
Edycja pliku parameters.php

Jeżeli adres do bazy danych to w obu przypadkach „localhost” a nazwy baz danych były identyczne zazwyczaj trzeba będzie podmienić tylko hasło. Oczywiście, jeżeli ktoś przy instalacji ustawił inny prefix lub baza wymaga podania portu to należy to tutaj także wprowadzić.

Krok 5: Edycja adresu sklepu PrestaShop w bazie danych

Przed eksportem nie zmienialiśmy domeny w ustawieniach PrestaShop, dlatego trzeba zmienić w bazie danych adres sklepu. Przechodzimy do tabeli ps_configuration i szukamy pól: PS_SHOP_DOMAIN i PS_SHOP_DOMAIN_SSL:

Rekordy PS_SHOP_DOMAIN

Jak można się domyślić, zmieniamy oryginalną domenę na nową.

To samo robimy w tabeli ps_shop_url, zmieniamy wartość w kolumnach domain i domain_ssl

Kiedy wejdziemy na sklep zobaczymy błąd 500:

Błąd 500 w PrestaShop

W pliku var/logs/***.exception.log pojawią nam się szczegóły:

Link to database cannot be established: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO) at line 127 in file classes/db/DbPDO.php 

Lub (using password: YES) jeżeli oryginalny serwer logował się do MySQL za pomocą hasła. Błąd wygląda tak jakby dane w pliku parameters.php nie zostały zaktualizowane! To wina pamięci podręcznej a wyjaśnienie jest w następnym punkcie.

Krok 6: Usunięcie pamięci podręcznej

To bardzo istotny krok, PrestaShop zapisuje zawartość pliku parameters.php w kilku osobnych lokalizacjach. Jedną z nich jest plik /app/cache/prod/appProdProjectContainer.php

Aby wyeliminować wszelkie problemy należy całkowicie usunąć zawartość folderów app/cache oraz var/cache zostawiając pliki index.php, które są tam dla bezpieczeństwa.

Krok 7: Wyczyszczenie plików cookies w przeglądarce

To częsta pułapka, w którą wpadają początkujący administratorzy! Kiedy już wszystko jest zrobione okazuje się, że sklep w jakiś magiczny sposób przekierowuje na starą domenę. To wina pamięci podręcznej przeglądarki, która płata nam takie figle jeżeli nie wytrzymaliśmy i weszliśmy na nowy adres przed dokonaniem wszelkich zmian. Usuwamy pliki tymczasowe lub korzystamy z nowego okna Incognito.

Krok 8: Odbudowa .htaccess

Kiedy wejdziemy na Front-Office zauważymy, że zdjęcia nie wyświetlają się a wszelkie podstrony zgłaszają błąd 404. Na sam koniec należy usunąć plik .htaccess i przejść do panelu administracyjnego. Jeżeli przyjazne adresy były aktywowane na oryginalnym sklepie, wyłączamy je a następnie włączamy na nowo.

Włączenie i wyłączenie przyjaznych adresów URL PrestaShop

Dzięki temu zdjęcia będą się wyświetlać i strony nie będą zgłaszać błędu 404.

Możliwe problemy

Jeżeli sklep nie działa problemem są moduły których zabezpieczenia antypirackie uniemożliwiają działanie na innej domenie. Aby wyeliminować ten przypadek można usunąć moduły, które potencjalnie sprawiają problem na czas przenoszenia.

Zalecenia końcowe

Jeżeli jest to testowy egzemplarz sklepu, pilnuj aby nie został on przypadkowo indeksowany przez wyszukiwarkę. Byłaby to katastrofa pod kątem SEO. Sprawdź także inne potencjalne niespodzianki zmiany serwera lub domeny w przewodniku dotyczącym migracji stron i sklepów. Jeżeli modyfikacje nad którymi pracujesz, mają na celu przyspieszyć działanie sklepu Prestashop sprawdź mój szczegółowy poradnik jak przyspieszyć PrestaShop.

Podsumowanie

Przenoszenie sklepu PrestaShop może przysporzyć kłopotu jeżeli spodziewamy się przeniesienia plików, bazy danych i edycji danych dostępowych do bazy danych w jednym miejscu. Postępowanie według tych wskazówek daje 100% pewności, że sprawny sklep PrestaShop zostanie bez problemu przeniesiony do nowej lokalizacji.

Źródła:

https://stackoverflow.com/questions/30398176/prestashop-redirects-to-old-domain-after-changing-it-in-database

Oceń artykuł na temat: Przenoszenie PrestaShop – zmiana hostingu i domeny
Średnia : 4.5 , Maksymalnie : 5 , Głosów : 2

Poprzedni post:

Następny post:

Tagi:
PrestaShop,



Następny artykuł: