Przenoszenie Joomla! 2.5, 3.2 z instalacji lokalnej do Internetu
- Data Publikacji:
- Aktualizacja:
Jak przenieść Joomla! z instalacji lokalnej do internetu? Krótki poradnik i opis radzenia sobie z potencjalnymi problemami.
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:
- Dokładnie wiemy co i jak robimy
- W przypadku kłopotów jesteśmy lepiej przygotowani na radzenie sobie niż po użyciu „magicznych” narzędzi
A oto kolejne kroki:
- 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ć.
- Zakładamy bazę MySql na serwerze internetowym.
- 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.
- 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.
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)”.
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.