Instalacje
Z Joomla 1.0 do Joomla 1.5 | Z Joomla 1.0 do Joomla 1.5 |
|
|
| Redaktor: Stefan Wajda | |
| 12.08.2008. | |
|
Wprawdzie Joomla 1.5 jest następcą 1.0, ale różnice między obu wydaniami są tak istotne, że Joomla 1.0.x nie można unowocześnić do Joomla 1.5 przy pomocy łatki aktualizującej. Jedyną możliwą drogą jest migracja – założenie nowej witryny na Joomla 1.5 i przeniesienie danych z Joomla 1.0.x. Migracja przebiega w dużej mierze automatycznie. Ten artykuł przeprowadzi Cię krok po kroku przez cały proces migracji. Zanim będziesz migrować działającą witrynę, przeczytaj najpierw cały ten artykuł i przetestuj migrację lokalnie, aby ograniczyć do minimum błędy i czasowe wyłączenie witryny. Czy migracja jest na pewno konieczna?Nie ma co zawracać kijem wody w Wiśle, ani młyńskiego koła rękami zatrzymywać. Nowy Joomla powstał także i po to, by zastąpić starszego. A że rzeczy niemożliwych w informatyce chyba nie ma, to i możliwa jest doskonała migracja z Joomla 1.0 do 1.5. Doskonała, czyli bezstratna, bez frustracji, że coś zepsujemy, trwająca tak krótko, że użytkownicy naszej witryny nawet się nie spostrzegą, kiedy jej dokonamy. Tak czy owak, wcześniej czy później trzeba ją przeprowadzić. Ale czy na pewno? Promotorowi Joomla! w Polsce nie wypada ani wątpić w słuszność takiego zabiegu, ani tym bardziej zniechęcać do migracji. Wręcz przeciwnie – wypada przekonywać że warto i objaśnić, jak jej dokonać najbezpieczniej i najprościej. Nie będziemy zatem zbytnio na temat korzyści i strat dywagować, ale też nie możemy przemilczeć, że:
Generalnie rzecz biorąc – opłacalne jest migrowanie z witryn małych, z niewielką ilością danych, z niewielką ilością rozszerzających rdzeń komponentów, modułów i innych dodatków. Na pewno warto migrować duże witryny nawet z dużą ilością danych, jeśli obsługiwane są przez standardowe komponenty, a dla nielicznych rozszerzeń istnieją nowsze wersje lub rozwiązania alternatywne. Głęboko natomiast trzeba się zastanowić nad migracją rozbudowanej, a dobrze działającej witryny z wieloma dodatkowymi składnikami, dla których nie opracowano jeszcze unowocześnionych wersji. Być może nawet w ogóle nie należy z takich witryn migrować. BezpiecznieMigracja jest bezpieczna, dopóty zachowujemy standardowe środki ostrożności. A zatem:
Ponadto przed migracją warto najpierw zaktualizować swoją witrynę Joomla 1.0.x do najnowszej wersji w tej serii (aktualnie 1.0.15). Pełnego sukcesu taki krok nie zapewni, ale może zaoszczędzić niespodziewanych sytuacji. Dwa etapyMigracja przebiega w dwóch etapach. W pierwszym etapie trzeba:
W drugim etapie trzeba:
Warto sobie w tym momencie uświadomić, że w nowej witrynie nie odtworzymy wszystkiego w 100 %, chociażby dlatego, że niektórych rozwiązań w Joomla 1.5 po prostu nie ma albo zostały zastąpione innymi. Dobrym przykładem jest polecenie I etap: Przygotowanie do migracjiKrok 1: Zgromadź potrzebne materiałyPobieranie plików z Internetu nie stanowi dziś zwykle żadnego problemu, ale potrzebne pakiety instalacyjne warto zgromadzić przed rozpoczęciem migracji. A będą potrzebne:
Krok 2: Sporządź bezpieczną kopię witrynyW to, że dysponujesz aktualną i bezpieczną kopią swojej witryny nawet nie śmiemy wątpić. Niemniej - upewnij się, że to najaktualniejsza kopia. A gdyby było inaczej, uaktualnij ją:
Bardzo pomocnym w wykonaniu tych zadań może być komponent JoomlaPack z www.joomlapack.net. Krok 3: Zainstaluj w Joomla 1.0 komponent MigratorPrzygotowanie danych z przenoszonej witryny zostało zautomatyzowane dzięki pracy dwóch programistów – Haralda Baera, który opracował przed kilku laty komponent eBackup, oraz Samuela Moffatta, który ten komponent przeprojektował do nowego zadania, udostępniając go pod nazwą Migrator. Komponent wykonuje jedno, ale jakże istotne zadanie: generuje zrzut odpowiednio przekonwertowanej bazy danych witryny zbudowanej na Joomla! 1.0.x lub Mambo 4.5.2 0. Dokładniej – dwa zadania: konwertuje treści oraz ustawienia konfiguracyjne, w tym przenosi niektóre ustawienia z plików do bazy danych. Ale to już tajemnice programu niezbyt dla nas istotne. Najnowszą wersję komponentu migracyjnego – w chwili pisania artykułu była to wersja 1.0 znajdziesz na stronie Pasamio Project's FRS.
Natomiast polskie wydanie komponentu znajdziesz w składnicy Polskiego Centrum Joomla! Komponent instalujemy w standardowy sposób w swojej witrynie Joomla 1.0.x, którą chcemy migrować (albo w Mambo 4.5.2):
Po chwili pojawi się komunikat o udanej instalacji, a w menu Komponenty znajdziesz nową pozycję –> Migrator. Wywołaj ją. Na stronie otwierającej znajdziesz zwięzłą instrukcję oraz – na dole – zestaw odnośników, pod którymi kryją się polecenia komponentu lub ekrany z dodatkowymi informacjami.
Migrator przenosi do pliku migracyjnego tylko dane gromadzone w rdzennych tabelach Joomla!. Aby obsługiwał dane zgromadzone przez komponenty rozszerzające Joomla!, potrzebuje dodatkowych „wtyczek”. Krok 4. Doinstaluj wtyczki migracyjneNiestety, w tym miejscu – oprócz dobrej wiadomości – mamy i złą: udało nam się znaleźć jedynie wtyczki do komponentu JoomFish. Do innych – nawet śladu. Na dodatek są tak ukryte, że trudno je znaleźć, nie mówiąc już otym, iż trzeba wiedzieć, że istnieją. Zajrzyj do sekcji SVN.
Na szczęście, jest i dobra wiadomość: potrzebne wtyczki szybko się projektuje i łatwo pisze nawet, jeśli nie mamy żadnych doświadczeń w programowaniu. Można się zresztą bez nich obejść. Natomiast bez wtyczek dla JoomFisha byłoby trudno w przypadku, gdy mamy witrynę wielojęzyczną. Do migracji danych z nierdzennych komponentów potrzebne są dwa rodzaje wtyczek: ETL i SQL. Pierwsza, wtyczka SQL, jest zwykłym plikiem SQL z poleceniami tworzącymi potrzebne tabele. Druga, wtyczka ETL, jest skryptem PHP, generującym odpowiednie wpisy w pliku SQL. Wtyczka ETL rozszerza działanie klasy ETLPlugin tak, aby komponent obsługiwał przenoszenie innych danych, niż należące do rdzennych komponentów. Wtyczka ETLWtyczki ETL są rzeczywiście niezwykle łatwe do napisania – zwykle wystarczy 5 linii kodu PHP. Przykłady znajdziemy wśród skryptów komponentu, w katalogu /plugins. Wzorcowy kod wtyczki ETL przedstawia listing 1: <?php class NazwaTabeli_ETL extends ETLPlugin { function getName() { return "Nazwa opisowa"; } function getAssociatedTable() { return "nazwatabeli"; } } ?> W pierwszej linii definiujemy nową klasę rozszerzającą klasę Doświadczeni programiści mogą stworzyć wtyczki bogatsze w funkcje, np. opuszczające wskazane kolumny tabel (pola), zmieniające nazwy pól czy zmieniające wartości w kolumnach. Pełną listę metod znajdziemy w skrypcie migrator.class.php w definicji klasy Aby samodzielnie przygotować potrzebne wtyczki ETL:
Uwaga: we wszystkich trzech przypadkach – nazwy klasy, opisowej nazwy tabeli i rzeczywistej nazwy tabeli można zastosować dokładnie taki sam tekst. Poniżej zamieszczamy pełny przykład skryptu wtyczki Adsmanager Ads ETL: <?php /** * Adsmanager Ads ETL Plugin * Wtyczka Adsmanager Ads ETL dla tabeli #__adsmanager_ads * @package Migrator * @author Stefan Wajda < Ten adres email jest ukrywany przed spamerami, włącz obsługę JavaScript w przeglądarce, by go zobaczyć > * @license GNU/GPL http://www.gnu.org/licenses/gpl.html * @copyright 2008 Stefan Wajda * @version SVN: $Id:$ */ class Adsmanager_Ads_ETL extends ETLPlugin { function getName() { return "Wtyczka ETL - Adsmanager ads"; } function getAssociatedTable() { return 'adsmanager_ads'; } } ?> Wtyczka SQLWe wtyczkach SQL umieszczamy zapytanie SQL generujące potrzebną tabelę bazy danych. Przykład wtyczki SQL znajduje się na listingu 3. CREATE TABLE IF NOT EXISTS `jos_adsmanager_categories` ( `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `parent` int(10) UNSIGNED DEFAULT '0', `name` varchar(50) DEFAULT NULL, `description` varchar(250) DEFAULT NULL, `ordering` int(11) DEFAULT '0', `published` tinyint(1) DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM; Stworzenie wtyczek SQL jest więc rzeczywiście banalnie proste – wykonujemy zrzut struktury swojej bazy danych Joomla 1.0, a następnie zapisujemy kod dla każdej tabeli w pliku nazwanym: nazwatabeli.sql Dodajmy jeszcze, że niekoniecznie każdą wtyczkę trzeba zapisywać w odrębnym skrypcie. Wszystkie wtyczki dla jednego komponentu można zapisać w dwóch plikach – w jednym definicje klas ETL, w drugim kwerendy SQL. Instalacja wtyczekPojedyncze wtyczki można zainstalować za pomocą polecenia dostępnego w komponencie – jeśli masz tylko jedną czy dwie wtyczki, użyj formularza „Instalacja rozszerzeń Migratora”:
Jeśli jednak masz więcej dodatków i dysponujesz dostępem do serwera, możesz przesłać pliki dodatków do ich poszczególnych katalogów (/plugins oraz /tables). Komponent używa tylko plików, które istnieją w jego katalogach, więc rejestracja w bazie danych nie jest wymagana do zastosowania dodatku. Krok 5: Stwórz plik migracyjny SQLPo zainstalowaniu wszystkich niezbędnych wtyczek, przystępujemy do właściwego zadania – wygenerowania pliku migracyjnego SQL. W tym celu:
Przez chwilę potrwa wykonywanie zadań, na ekranie dosłownie zamigoczą dwie strony z informacjami o przebiegu operacji:
I w końcu pojawi się komunikat o zakończeniu pracy z nazwą utworzonego pliku SQL i odnośnikiem do strony z plikami do pobrania:
Po naciśnięciu odnośnika Pobierz pojawi się strona z listą plików migracyjnych. Można tutaj stworzony plik pobrać lub usunąć. Etykieta odnośnika Informacja o SQL ma w zamyśle projektanta prowadzić do podglądu pliku SQL, ale funkcja najwyraźniej nie została w wydaniu 1.0 zaimplementowana.
Uwaga: Oczywiście, podczas generowania pliku migracyjnego mogą zdarzyć się błędy w działaniu komponentu. Komponent wczytuje dodane skrypty wszystkich wtyczek ETL i SQL i sprawdza ich poprawność. Jeśli napotka błędy, przerwie działanie i wyświetli odpowiedni komunikat. II etap: Nowa witryna z przeniesionymi danymiDysponując plikiem migracyjnym, możemy przystąpić do II etapu pracy, obejmującego instalację Joomla 1.5 z danymi migracyjnymi, dodanie rozszerzeń oraz testowanie nowej witryny. Krok 6: Zainstaluj Joomla! 1.5 z danymi migracyjnymiNową witrynę zakładamy w środowisku, w którym będzie ona działała, a więc zwykle na tym samym serwerze co witryna oparta na Joomla 1.0. Możemy zainstalować Joomla 1.5:
Dopóki jednak nie mamy pewności, że migracja przebiegnie pomyślnie, dotychczasowa witryna powinna pozostać nienaruszona. Pierwsze rozwiązanie zatem raczej w rachubę nie wchodzi. Nową witrynę instalujemy w nowym, odrębnym katalogu, z nową bazą danych albo – jeśli dysponujemy tylko jedną bazą danych – z innym przedrostkiem nazw tabel. Ale nawet jeśli zdecydujemy się na zastąpienie starej witryny nową instalacją, to:
W żadnym wypadku nie należy „nadpisywać” plików starej witryny, skryptami pakietu instalacyjnego Joomla 1.5.x. Jedyne, co możemy pozostawić w katalogu instalacyjnym z zasobów starej witryny, to pliki danych (np. grafiki) oraz skrypty szablonów. Wszelkie inne pozostałości mogą być źródłem niepoprawnej instalacji i błędów w działaniu nowej witryny. Przypomnienie: jeśli jeszcze nie masz tego kroku za sobą, sporządź pełną kopię zapasową istniejącej witryny, zarówno systemu plików, jaki bazy danych. Kopię umieść w bezpiecznym miejscu tak, aby podczas testowania nowej instalacji w ogóle nie mieć do niej dostępu. Pierwsze pięć kroków wykonujemy tak, jak w przypadku „zwykłej” instalacji Joomla, a więc:
Jeśli dysponujemy tylko jedną bazą danych, trzeba pamiętać, aby w 4. kroku ustalić unikalny przedrostek nazw tabel, inny niż używany w witrynie Joomla 1.0. Po skonfigurowaniu bazy danych i – ewentualnie obsługi FTP – dochodzimy do momentu, w którym finalizujemy migrację danych. Komunikaty ekranowe na stronie Konfiguracja witryny jasno i jednoznacznie informują, że w tym kroku możemy umieścić w witrynie:
Oczywiście, nas interesuje trzecia opcja – migracja ze skryptu zgodnego ze strukturą bazy danych Joomla 1.0 (a więc i Mambo 4.5.2). Dane migracyjne możemy wczytać ze skryptu SQL:
Druga z metod jest wygodniejsza, ale nie zawsze skuteczna. Zakończy się powodzeniem tylko wtedy, gdy przenosimy niewielką witrynę (plik migracyjny SQL jest mniejszy niż 2MB). Jeśli jest większy, trzeba go przesłać na serwer za pomocą dowolnego klienta FTP lub SCP do katalogu /installation/sql/migration/. Przesyłany plik musi się nazywać migrate.sql. Katalogi /installation/sql/migration/ oraz katalog podręczny (/tmp) muszą być udostępnione do zapisu dla użytkownika www ((np. wwwrun, www-data czy apache). Aby poprawnie migrować dane:
Zauważ – w przypadku migracji z Joomla! 1.0 zawsze podajemy, że tabele w pliku migracyjnym mają przyrostek jos_. Autor komponentu Migrator, aby nie komplikować zbytnio swojego rozwiązania, przyjął takie założenie – wszystkie nazwy tabel w pliku migracyjnym SQL generowanym przez komponent mają przedrostek Instalator podejmie próbę stworzenia tabel bazy danych i jeśli operacja się powiedzie, otrzymamy na kolejnym ekranie stosowaną informację.
Migracja nieudanaMoże się wszakże zdarzyć, że otrzymamy niezbyt radosny komunikat o napotkanych podczas migracji problemach. Jednym z częstszych problemów jest niepoprawna struktura standardowej tabeli Zakońćzenie migracjiAby zakończyć instalację:
Jeśli podamy nowe hasło i adres administratora, instalator spróbuje je zmienić w bazie danych, ale operacja ta niekoniecznie musi się zakończyć powodzeniem. Lepiej nie ryzykować! Krok 7. Dodaj i skonfiguruj rozszerzeniaZanim zabierzemy się za dokończenie migracji, rozejrzyjmy się zarówno po witrynie, jaki zapleczu administracyjnym. Z łatwością zauważymy, że w nowej witrynie:
Czyżby migracja się nie powiodła? Wszak komunikat głosił, że się udała, co więcej – są niektóre treści, można się zalogować na zaplecze... Oczywiście, że migracja przebiegła pomyślnie, ale Migrator:
Stosunkowo łatwo można uaktywnić wyłączone pozycje menu i moduły. Wystarczy zaznaczyć je na listach i opublikować. Nie oznacza to jeszcze, że wszystko zadziała, jak oczekujemy - pozycje menu wywołujące treści komponentów odwołują się do nieistniejących rozszerzeń. Nie wystarczy, że je doinstalujemy. Trzeba jeszcze połączyć je z pozycjami menu. Przed instalacją komponentówNie spiesz się, zwłaszcza gdy sporo czasu zajęło Ci własnoręczne stworzenie wtyczek ETL i SQL, by migrować dane z komponentów. Instalatory wielu komponentów usuwają swoje tabele, jeśli takie istnieją już w bazie danych. Możliwe są dwa rozwiązania:
Drugi ze sposobów wydaje się prostszy. Przed zainstalowaniem komponentu przeglądamy plik nazwa_komponentu.xml (ewentualnie także nazwa_komponentu.polish.xml) i usuwamy z niego instrukcje nakazujące usunięcie istniejących w bazie danych tabel. Instrukcje usuwające tabele mają taką postać: <query> DROP TABLE IF EXISTS `#__nazwa_tabeli`; </query> Przy okazji warto również sprawdzić, czy nie ma instrukcji umieszczających przykładowe dane albo przykładowe kategorie. Takie instrukcje również nie są potrzebne - wszak mamy dane z poprzedniej witryny. Usuwamy zatem z plików instalacyjnych .xml instrukcje wyglądające, jak w poniższym wzorcu: <query> INSERT INTO `#__nazwa_tabeli` VALUES (1,0,'Jakis_tekst','Jakis_tekst','',0,1,0); </query> Po doinstalowaniu komponentówTrzeba je, oczywiście, skonfigurować:
Tryb zgodności wstecznejAby komponenty i inne rozszerzenia napisane dla Joomla 1.0 działały w Joomla 1.5, musi być włączony tryb zgodności wstecznej. Z menu zaplecza wybieramy pozycję Rozszerzenia -> Dodatki, odszukujemy dodatek System - Spuścizna (System - Legacy) i w kolumnie Włączony naciskamy czerwoną ikonę z białym krzyżykiem. W efekcie zmieni się kolor i kształt ikony (zielony haczyk), a w pasku informacyjnym po prawej stronie menu pojawi się informacja oznaczona ikoną Joomla! o tym, że witryna działa w trybie zgodności z 1.0. Przywrócenie ustawień konfiguracyjnychWiele komponentów przechowuje swoje ustawienia w plikach konfiguracyjnych. Najprostszym sposobem przywrócenia ustawień dokonanych w poprzedniej wersji witryny jest więc odszukanie potrzebnego pliku konfiguracyjnego i przekopiowanie go do odpowiedniego katalogu w Joomla 1.5. Zwykle jest to katalog /administrator/components/nazwa_komponentu, a plik nosi zwykle nazwę config.nazwa_komponentu.php. W przypadku, gdy w pliku konfiguracyjnym znajdowały się wartości tekstowe (np. regulaminy), a witryna kodowana była w ISO-8859-2, konieczna może być wcześniejsza konwersja pliku do formatu UTF-8. Krok 8. Popraw odwołania w menuDzięki nowej w Joomla 1.5 funkcji zmiany typu pozycji menu to zadanie jest niezwykle łatwe do wykonania. Nie musimy usuwać dawnych pozycji menu - wystarczy otworzyć je do edycji, nacisnąć przycisk Zmień typ i wskazać na liście doinstalowany wcześniej komponent, a następnie sprawdzić na stronie frontowej, czy wszystko działa należycie. Bibliografia |
|
| Zmieniony ( 13.08.2008. ) |
| « poprzedni artykuł | następny artykuł » |
|---|















