Przenoszenie Joomla! 2.5, 3.2 z instalacji lokalnej do Internetu

Zdjęcie autora
Lindus One
Autor:
Lindus One
Data Publikacji:
Aktualizacja:

Jak przenieść Joomla! z instalacji lokalnej do internetu? Krótki poradnik i opis radzenia sobie z potencjalnymi problemami.

Materiał archiwalny - aktualność może być ograniczona

Dlaczego ręcznie?

Zapewne wielu uważa, że temat jest już dokładnie opisany i w Internecie można znaleźć precyzyjne przepisy. Prawdopodobnie tak jest, ale ponieważ ostatnio przenosiłem jakiś serwis więc postanowiłem napisać zwięzłe „krok po kroku” dla potrzebujących. Nie będziemy używać do przenoszenia żadnego dodatku, wszystko zrobimy ręcznie. Ten sposób ma dwie zalety:

  1. Dokładnie wiemy co i jak robimy
  2. W przypadku kłopotów jesteśmy lepiej przygotowani na radzenie sobie niż po użyciu „magicznych” narzędzi

A oto kolejne kroki:

  1. Kopiujemy wszystkie pliki z katalogu w którym jest lokalnie zainstalowana Joomla! do wybranego katalogu na serwerze internetowym za pomocą klienta FTP. Np. FileZilla. To nie musi być katalog główny! Jeżeli strona ma otwierać się w podkatalogu ponieważ chcemy ją dalej testować lub mamy inną potrzebę to jak najbardziej możemy to zrobić.
  2. Zakładamy bazę MySql na serwerze internetowym.
  3. Kopiujemy zawartość lokalnej bazy Joomla! do bazy docelowej. Najprostszym sposobem jest użycie PphMyAdmin i opcji export/import. Można również wykorzystać skrypt Kopiowanie bazy Joomla! z produkcyjnej do lokalnej ustawiając odpowiednio konfigurację bazy źródłowej i docelowej.
  4. Dokonujemy zmian w pliku configuration.php znajdującym się w głównym katalogu. Modyfikacje wpisów będą następujących sekcjach.

Modyfikacje pliku configuration.php

Dostęp do bazy danych

Najważniejszym wpisem, który należy poprawić jest konfiguracja bazy danych zgodnie z opisem poniżej.
Plik configuration.php

public $host = 'localhost';//99% przypadków, jeżeli nie działa kontakt z hostingiem
public $user = 'nazwa_uztykownika';//Nazwa użytkownika, który ma uprawnienia do bazy joomla!
public $password = 'twoje_haslo';//Hasło do bazy
public $db = 'nazwa_bazy';//Nazwa bazy. Na ogół przy zakładaniu jest nadawana automatycznie.

Katalog do plików tymczasowych i logów

Kolejną rzeczą, którą należy ustawić są ścieżki do katalogów: tymczasowego i logów. Jeżeli tego nie zrobimy Joomla! będzie działać, ale nie będzie można instalować komponentów. Najprostszym sposobem sprawdzenia czy katalogi te są ustawione prawidłowo jest wybranie w panelu administracyjnym:

  • Witryna > Informacje o systemie > Prawa do katalogów. (Joomla! 2.5)
  • System > Informacje o systemie > Prawa do katalogów. (Joomla! 3.0, 3.2)

Jeśli w dolnej części przy Katalog dzienników i Katalog tymczasowy będzie stan „Niezapisywalny” oznacza to konieczność zmiany w pliku configuration.php.

Joomla! 2.5 konfiguracja uprawnień do katalogów temp i log
Widok Joomla! 2.5
Joomla! 3.2 konfiguracja uprawnień do katalogów temp i log

Widok Joomla! 3.2

Sposobem, który stosuję na sprawdzenie jaka jest prawidłowa ścieżka to wgranie do katalogu głównego (tam gdzie znajduje się plik configuration.php) prostego pliku path.php z następującym kodem:

<?php 
echo getcwd();
?>

Następnie wywołujemy plik w przeglądarce i wynik sklejamy zgodnie z opisem poniżej:

//Przykładowe wyniki otrzymane na hostingu home.pl.
//Plik wywołany bezpośrednio po nazwie domeny (http://wwww.twojadomana.eu/path.php)
//daje wynik „/”.
//Nasze wpisy konfiguracyjne:
public $log_path = '/logs'; public $tmp_path = '/tmp'; //Wywołany w katalogu (http://www.twojadomena.eu/joomlatestowa/path.php)
//daje wynik „/joomlatestowa”. //Nasze wpisy konfiguracyjne:
public $log_path = '/joomlatestowa/logs'; public $tmp_path = '/joomlatestowa/tmp';

Ścieżka do przeniesionego serwisu

Na ogół w tej sekcji nie trzeba nic zmieniać, ale są dostawcy u których po przeniesieniu serwisu Joomla! nie działa prawidłowo. Najczęstszym objawem jest nieprawidłowe czytanie arkuszy stylów i błędne linki wewnętrzne pomiędzy artykułami. Przykładem takiego dostawcy jest home.pl. Podsumowując, jeżeli strona nie wyświetla się jak należy w tej sekcji należy dokonać zmian zgodnie z opisem poniżej.

public $live_site = '';//Powinno działać, ale niestety nie u wszystkich dostawców
public $live_site = 'http://www.twojastrona.pl/';//Jeżeli Joomla! jest w głównym katalogu
public $live_site = 'http://www.twojastrona.pl/twoja-joomla/';//Joomla! jest w podkatalogu
//Należy chwilę poeksperymentować

W ramach ciekawostki i dopieszczania jeżeli instalacja Joomla! jest w podkatalogu, należy poprawić wpisy w pliku robots.txt. Nie ma to żadnego znaczenia dla działania samego serwisu, ale nie męczy wyszukiwarek niepotrzebnymi katalogami.

Techniki zaawansowane - kopiowanie plików za pomocą ssh

Różnica pomiędzy ssh i ftp

Jeżeli mamy dostęp do protokołu ssh możemy proces kopiowania plików lokalnej instalacji przeprowadzić szybciej i w sposób bardziej zaawansowany. Podstawową różnicą pomiędzy protokołem ssh i ftp jest większa kontrola nad zdalnym serwerem. FTP możemy przegrywać pliki i zmieniać uprawnienia, ssh dodatkowo wywoływać komendy na zdalnym serwerze. Najważniejsza dla nas jest możliwość rozpakowania pliku archiwum na zdalnej maszynie. Jommla! 3 to ponad 6.000 plików. W standardowym kopiowaniu ftp oznacza to oddzielny proces dla każdego pliku. W sytuacji gdy nasze połączenie z internetem nie jest idealne wydłuża to znacznie czas kopiowania i zwiększa ryzyko błędów. W ssh kopiujemy jeden plik i rozpakowujemy go na zdalnym serwerze.

Spakowanie plików Joomla!

Zaczynamy od spakowania plików Joomla! do formatu zip lub tar. W Windows możemy to zrobić za pomocą np. 7-zip. Zaznaczamy zawartość katalogu lokalnej instalacji i pakujemy do formatu tar. Ponieważ będziemy zakładać odpowiedni katalog na serwerze zdalnym lub wykorzystamy istniejący, ważne jest żeby przy rozpakowywaniu utworzyła się nam bezpośrednio struktura instalacji bez katalogu nadrzędnego. Do formatu zip możemy użyć eksploratora Windows, zaznaczyć wszystkie foldery i pliki, prawym przyciskiem myszy wybrać opcje „Wyślij do > Folder skompresowany(zip)”.

Kompresowanie plików za pomocą 7-zip
Widok struktury katalogów w Joomla! 3.2 przy kompresowaniu do formatu tar

Założenie katalogu na zdalnym serwerze (opcjonalnie)

Do wywoływania komend i kopiowania plików niezbędny jest klient ssh. Używam i polecam puTTY. Jeśli masz już założony katalog do którego chcesz wgrać pliki Joomla!, lub uruchamiasz serwis z głównego katalogu na serwerze zdalnym to przechodzisz do następnego punktu.

Uruchamiamy puTTY.exe. Pojawi się nam okno terminala, logujemy się danymi naszego konta. Nawigujemy do katalogu głównego z plikami html. U większości dostawców jest to /public_html. Pomocne komendy to ls - lista plików i folderów, cd nazwa_folderu - przejście do folderu niżej o wskazanej nazwie, cd .. - przejście do folderu wyżej. Gdy już znajdujemy się w folderze nadrzędnym (potwierdzamy to komendą ls) do założenia katalogu test w bieżącym folderze wpisujemy:

mkdir test

Skopiowanie pliku tar na serwer internetowy

W katalogu w którym zainstalowaliśmy puTTY jest program PSCP.exe służący do kopiowania plików na serwer zdalny. Wywłujemy go z odpowiednimi parametrami pliku źródłowego i docelowego.

Podstawowa składnia do kopiowania pliku na serwer zdalny to:

pscp [options] source [source...] [user@]host:target

Uruchamiamy Wiersz polecenia w Windows i żeby skopiować plik C:\temp\archive.zip do katalogu na serwerze /test (musimy znać pełną ścieżkę do katalogu, pomoże nam w tym komenda pwd, którą w skrócie opiszę dalej) nasz przykładowy wpis będzie wyglądał:

C:\PuTTY\App\putty\PSCP.EXE C:\temp\archive.zip nazwa_uzytkownika@nazwa_konta.dostawca_hostingu.pl:/home/nazwa_konta/public_html/test/archive.zip

Skopiowanie pliku archive.tar do głównego katalogu public_html (gdy mamy jeden serwis, to nasz katalog na pliki).

C:\PuTTY\App\putty\PSCP.EXE C:\temp\archive.tar nazwa_uzytkownika@nazwa_konta.dostawca_hostingu.pl:/home/nazwa_konta/public_html/archive.tar

Dane do logowania (nazwa użytkownika i adres serwera) uzyskamy u dostawcy hostingu.

Rozpakowanie archiwum na zdalnym serwerze

Gdy mamy już skopiowane archiwum na serwerze zdalnym uruchamiamy puTTY.exe i nawigujemy do folderu w którym jest nasze archiwum. Przydatne komendy to: ls, cd nazwa_folderu, cd ..

W docelowym folderze (potwierdzamy miejsce gdzie jesteśmy komendą ls) wykonujemy komendę rozpakowującą pliki w bieżącym folderze.

Dla pliku archive.tar

tar -xvf archive.tar

Dla pliku archive.zip

unzip archive.zip

Nadanie odpowiednich uprawnień (opcjonalnie)

Po rozpakowaniu weryfikujemy czy uprawnienia do plików i katalogów są właściwe. Dla plików powinny być 644 (-rw-r--r--) dla katalogów 775 (drwxr-xr-x). Możemy to sprawdzić komendą ls -l. Jeżeli uprawnienia są niewłaściwe należy je zmienić. Uwaga, zastosowanie poniższych komend w niewłaściwy sposób, może spowodować, że stracimy dostęp do plików!

Zmiana uprawnień wszystkich podkatalogów w bieżącym folderze na 755 (rekurencyjnie dla wszystkich poziomów zagnieżdżenia):

find -type d -exec chmod 755 {} \;

Zmiana uprawnień wszystkich plików w bieżącym folderze na 644 (rekurencyjnie dla wszystkich poziomów zagnieżdżenia):

find -type f -exec chmod 644 {} \;

Lista najważniejszych komend ssh

Skrócona lista komend ssh, które możemy wywołać w konsoli połączenia.

  • Wyświetlenie listy plików i folderów w bieżącym katalogu
    ls
  • Lista folderów i plików wraz z uprawnieniami
    ls -l
  • Pełna ścieżka do miejsca w którym jesteśmy. Wynikiem jest bezwzględna ścieżka w formacie UNIX-owym np. /home/nasze_konto/public_html/folder_w_ktorym_jestesmy
    pwd
  • Skasowanie pliku o nazwie archive.zip
    rm archive.zip
  • Kasowanie wszystkich plików i folderów w bieżącym katalogu
    rm -rf *
  • Przejście do folderu znajdującego się w bieżącym folderze o nazwie administrator
    cd administrator
  • Przejście do folderu wyżej
    cd ..
  • Założenie w bieżącym folderze katalogu nowy_katalog
    mkdir nowy_katalog
  • Rozpakowanie pliku archive.zip lub archive.tar w bieżącym katalogu
    tar -xvf archive.tar unzip archive.zip
  • Zmiana uprawnień wszystkich katalogów w bieżącym katalogu na 755 (drwxr-xr-x) rekurencyjnie na wszystkich poziomach zagnieżdżenia Ostrożnie!
    find -type d -exec chmod 755 {} \;
  • Zmiana uprawnień wszystkich katalogów we wskazaj ścieżce (uzyskanej komendą pwd) na 755 rekurencyjnie Ostrożnie!
    find /home/konto/public_html/test -type d -exec chmod 755 {} \;
  • Zmiana uprawnień wszystkich plików w bieżącym katalogu na 644 (-rw-r--r--) rekurencyjnie na wszystkich poziomach zagnieżdżenia Ostrożnie!
    find -type f -exec chmod 644 {} \;
  • Zmiana uprawnień wszystkich plików we wskazaj ścieżce na 644 (-rw-r--r--) rekurencyjnie Ostrożnie!
    find /home/konto/public_html/test -type f -exec chmod 644 {} \;

Podsumowanie

Powyższy opis działa zarówno z Joomla! 1.5, 1.6 - 2.5 oraz 3.0 - 3.2. Nie zdarzyło się mi się jeszcze żeby przeniesiony w ten sposób serwis nie działał. Dla wszystkich którzy nie używali jeszcze SSH polecam to jako dobry początek z tym narzędziem. Tylko uwaga przy zmianie uprawnień, jeżeli nie czujesz się pewnie to lepiej użyć do tego klasycznego klienta FTP.