Manual:Upgrading/pl



Informacje ogólne
Najpierw należy zapoznać się z informacjami zawartymi w pliku UPGRADE wchodzącym w skład pakietu instalacyjnego oprogramowania MediaWiki. W szczególności należy:


 * 1) sprawdzić wymagania systemowe
 * 2) przeczytać informacje o wydaniu
 * 3) wykonać kopię zapasową istniejących plików i bazy danych
 * 4) rozpakować pobrane pliki
 * 5) uruchomić skrypt aktualizacyjny w celu sprawdzenia bazy danych
 * 6) uaktualnić rozszerzenia
 * 7) przetestować uaktualnioną instalację

Sprawdzenie wymagań systemowych
Oprogramowanie MediaWiki wymaga:

PHP

 * PHP 5.0.x lub nowszy
 * Zaleca się korzystanie z PHP 5.1.x, 5.2.x lub 5.3.x, oprócz wersji 5.3.1,w której występuje błąd.
 * Uwaga: oprogramowanie PHP 5.0.x działając na niektórych platformach 64-bitowych wykazuje błędy powodujące podstawowe błędy w działaniu oprogramowania MediaWiki. Przy pracy na platformach x86_64 (AND64, EMT64) zaleca się korzystanie z PHP w wersji 5.1.x lub 5.2.x.

System zarządzania bazami danych

 * MySQL 4.0.x lub nowszy
 * Wersja 3.x nie jest obsługiwana przez MediaWiki od wersji 1.6.0

lub


 * PostgreSQL 8.1 lub nowszy
 * W systemie wymagana jest obecność modułów tsearch2 oraz plpgsql, jeśli zainstalowano PostgreSQL 8.1 lub 8.2.
 * Patrz również Upgrading Postgres/pl

Przeczytaj informacje o wydaniu
W archiwum .tar.gz z dystrybucją MediaWiki lub pośród plików wyeksportowanych/pobranych z SVN znajduje się kilka plików o nazwach zapisanych wielkimi literami, z których jeden zawiera informacje o wydaniu (RELEASE-NOTES). Należy ten plik otworzyć i sprawdzić zmiany, które zostały wprowadzone do aktualnie pobranej wersji MediaWiki.

Wykonanie kopii zapasowej istniejących plików i bazy danych

 * Pełne instrukcje: Manual:Backing up a wiki/pl

Skrypty aktualizacyjne są dobrze napisane i skuteczne, lecz mimo wszystko niektóre kwestie mogą potoczyć się niezgodnie z przewidywaniami. Przed uaktualnieniem struktury bazy danych należy wykonać pełną kopię bezpieczeństwa całej wiki, obejmującą zarówno bazę danych jak i pliki.


 * Zawartość wiki przechowywana w bazie danych. Oprócz zrzutu bazy danych SQL warto rozważyć wykonanie kopii w postaci pliku XML.
 * MySQL:
 * zrzut tekstowy: mysqldump --all-databases > file.txt
 * zrzut do pliku XML: mysqldump --all-databases --xml > file.xml
 * PostgreSQL:
 * Plik dla programu pg_restore: pg_dump --create -Fc -i yourwiki > yourwiki.db.dump
 * SQLite:
 * php maintenance/sqlite.php --backup-to filename
 * Grafiki i inne media (zawartosć katalogu images)
 * Pliki konfiguracyjne, tj. LocalSettings.php</tt> i AdminSettings.php</tt> (jeśli są obecne w instalacji)
 * Pliki programowe MediaWiki, w tym wszystkie skórki i rozszerzenia, szczególnie jeśli pliki te zostały poddane modyfikacjom

Z pakietu .tar.gz
Po pobraniu pakietu .tar.gz należy go rozpakować na serwerze, gdzie uruchomiona jest poprzednia instalacja oprogramowania MediaWiki. Normalnie, przy rozpakowywaniu pakietu stworzony będzie katalog, dla nowej wersji wiki i zaistnieje konieczność przekopiowania nowych plików do katalogu, gdzie działa dotychczasowy serwis. Proces można uprościć, wydając jedno polecenie:

$ tar xvzf mediawiki-.tar.gz -C /katalog/gdzie/znajduje/się/wiki/ --strip-components=1

W przypadku starszych dystrybucji Linuksa (np. RHEL/CentOS 4.x) polecenie wygląda następująco:

$ tar xvzf mediawiki-.tar.gz -C /katalog/gdzie/znajduje/się/wiki/ --strip-path=1

Osoby korzystające ze starszej wersji programu tar, np. GNU tar 1.13.x nieobsługującej flag --strip-components czy --strip-path mogą zdekompresować archiwum bez opcji -C i rekursywnie przekopiować zawartości zdekompresowanego katalogu do struktury katalogów wiki:

$ tar xvfz mediawiki-.tar.gz $ cp -r mediawiki-/* /katalog/gdzie/znajduje/się/wiki/

Użytkownicy systemu (Open)Solaris powinni skorzystać z polecenia gtar lub:

$ gzip -dc mediawiki-.tar.gz | tar xf -

Użytkownicy systemu Windows mogą skorzystać z programu 7-Zip.

Korzystanie z systemu subversion
Pobierając oprogramowanie MediaWiki z systemu subversion, należy wyeksportować pliki do czystej, niezajętej lokalizacji. Wszystkie pliki należy zastąpić nowo pobranymi wersjami, zachowując strukturę katalogów. Główna część kodu MediaWiki zostanie w ten sposób uaktualniona.

Uruchomienie skryptu aktualizacyjnego
Uwaga: Zmieniając wersję oprogramowania MediaWiki na starszą niż 1.16, należy upewnić się, że w głównym katalogu wiki znajduje się plik AdminSettings.php</tt> i że zawiera on aktualne informacje. Użytkownik prowadzący aktualizację musi mieć pełny dostęp do bazy danych.

Zalecane jest przeprowadzanie uaktualnienia za pomocą uruchamianego z wiersza poleceń skryptu aktualizacyjnego, choć aktualizacja również możliwa jest po uruchomieniu działającego w przeglądarce WWW instalatora.

Wiersz poleceń
W linii poleceń powłoki SSH lub innej, należy przejść do katalogu maintenance</tt> i uruchomić skrypt aktualizacyjny:

$ php update.php

Uwaga dotycząca prostych instalacji w systemach Windows, na przykład działających pod oprogramowaniem XAMPP: można uruchomić skrypt aktualizacyjny po dwukrotnym kliknięciu, jeśli pliki o rozszerzeniu .php otwierane są przy pomocy PHP.exe; jeśli nie, należy kliknąć prawym przyciskiem myszy plik update.php, wybrać polecenie &bdquo;Otwórz za pomocą...&rdquo; i wskazać plik PHP.exe. Należy też sprawdzić, czy działa serwer WWW (np. Apache) i serwer baz danych (np. MySQL).

Oprogramowanie MediaWiki dokona sprawdzenia aktualnej konfiguracji i uaktualni ją do prawidłowej współpracy z nowym kodem, dodając wymagane tabele i kolumny.

Co zrobić w przypadku wystąpienia błędu &bdquo;No superuser credentials&rdquo;
W przypadku, gdy skrypt zatrzymuje pracę wyświetlając komunikat:

&bdquo;No superuser credentials could be found. Please provide the details of a user with appropriate permissions to update the database. See AdminSettings.sample for more details&rdquo;

oznacza, ze należy sprawdzić, czy w pliku LocalSettings.php</tt>, znajdującym się w głównym katalogu wiki, zdefiniowano zmienne $wgDBadminuser</tt> i $wgDBadminpassword</tt>. Jest to nazwa użytkownika mającego dostęp do bazy danych i jego hasło.

Co zrobić w przypadku wystąpienia błędu &bdquo;unexpected T_STRING&rdquo;
Po uruchomieniu skryptu update.php</tt> z linii poleceń może wystąpić błąd o następującym opisie:

syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in ~/mainteance/commandLine.inc on line 13

Błąd ten pojawia się, gdy skrypt aktualizacyjny uruchamiany jest z wykorzystaniem PHP4.

Osoby zarządzające serwisami internetowymi na serwerach, gdzie dostępne zą wersje 4 i 5 języka skryptowego PHP powinny podjąć następujące kroki:


 * 1) wydać polecenie whereis php5</tt>;
 * 2) po ustaleniu lokalizacji ścieżki dostępu do PHP5, wyświetlić zawartość katalogu php5/bin</tt>l
 * 3) po ustaleniu nazwy pliku wykonywalnego PHP5 (zwykle php</tt> lub php5</tt>, w poleceniu uruchamiającym skrypt aktualizacyjny należy podać pełną ścieżkę dostępu do pliku wykonywalnego PHP.

Przykład: $ whereis php5 $ ls -la ls /usr/local/php5/bin $ /usr/local/php5/bin/php update.php

Alternatywa 1: phpShell
Jeśli nie ma pełnych uprawnień w dostępnie do katalogu MediaWiki lub pełnego dostępu do shella, należy rozważyć opcje takie, jak oprogramowanie phpShell, emulujące wiersz poleceń z wykorzystaniem funkcji PHP. Rozwiązanie może nie działać na niektórych hostach z określonymi blokadami działań.

Przy wykorzystywaniu tej metody przydatne okazuje się wyłączenie odliczania podczas startu skryptu. Można tego dokonać dodając do wywołania skryptu opcję --quick</tt>:

$ php update.php --quick

Jeśli na serwerze zainstalowane są dwie wersje PHP, konieczne może się okazać zastąpienie wywołania &bdquo;php&rdquo; przez &bdquo;php5&rdquo;. W przypadku wykorzystywania narzędzia phpshell</tt>, może zaistnieć konieczność wyedytowania plików commandLine.inc i LocalSettings.php, by skrypt nie zakończył przedwcześnie działania (dzieje się tak, gdy phpshell uruchamiany jest na serwerze). Problemu można uniknąć wydając polecenie:

$ unset REQUEST_METHOD; php update.php --quick

Powoduje to wyzerowanie zmiennej środowiskowej REQUEST_METHOD, której obecność powoduuje przerwanie pracy skryptu, i prawidłowe jego uruchomienie.

Alternatywa 2: ponowne uruchomienie instalatora
Alternatywą do uruchamiania skryptu aktualizacyjnego z shella jest ponowne uruchomienie w przeglądarce instalatora:


 * 1) zmienić nazwę pliku LocalSettings.php</tt> na LocalSettings.old.php</tt>
 * 2) umożliwić serwerowi WWW zapisu do katalogu config</tt>
 * 3) upewnić się, ze użytkownik bazy danych ma do niej pełny dostęp;
 * 4) przejść do katalogu wiki i uruchomić instalator
 * wypełnić pola formularza takimi samymi wartościami, jakie wykorzystywano w pierwszej instalacji
 * po uruchomieniu skryptu instalacyjnego wykryje on aktualnie wykorzystywane tabele bazy danych i uaktualni strukturę bazy
 * po zakończeniu procesu stworzony zostanie nowy plik <tt>LocalSettings.php</tt>
 * 1) skasować nowo utworzony plik (<tt>LocalSettings.php</tt>)
 * 2) zmienić nazwę pliku <tt>LocalSettings.old.php</tt> z powrotem na <tt>LocalSettings.php</tt>
 * 3) przywrócić uprawnienia w katalogu <tt>config</tt>

Aktualizacja rozszerzeń
Część rozszerzeń uaktualniono tak, by prawidłowo współpracowały z najnowszą wersją MediaWiki. Należy uaktualnić stosowane rozszerzenia do ich najnowszych wersji. Może zaistnieć konieczność ręcznej aktualizacji rozszerzeń niestandardowych.

Przetestowanie uaktualnionej instalacji
Po zakończeniu aktualizacji należy przejsc do serwisu i sprawdzić, czy prawidłowo działają następujące funkcje:
 * przeglądanie stron
 * edytowanie stron
 * przesyłanie plików

Na stronie Special:Version powinny znajdować się wpisy potwierdzające zainstalowanie aktualnej wersji oprogramowania MediaWiki i obecność wszystkich rozszerzeń.

Jak trudna jest aktualizacja?
Jeśli jedynym zmodyfikowanym w uaktualnianej wiki plikiem jest <tt>LocalSettings.php</tt>, a uaktualnienie oprogramowania MediaWiki przebiega z wersji co najmniej 1.5, proces jest wyjątkowo prosty. Nakład pracy operatora włożony w aktualizację systemu wynosi wtedy kilka minut. Zmiany w strukturze bazy danych zajmują czas proporcjonalny do wielkości bazy – w przypadku dużych serwisów wiki z milionami stron może to zając godziny, lecz w przypadku typowych serwisów z kilkoma tysiącami stron, zajmuje to zwykle kilka sekund.

Drobne aktualizacje, przebiegające w ramach jednej wersji, na przykład z wydania 1.13.01 do 1.13.1, nie wymagają zmian w obrębie bazy danych; wtedy wystarczające jest zastąpienie starych plików nowymi.

Uaktualnianie wiki z wersji 1.4 i starszej jest o tyle niebezpieczne, że w nowszych wersjach zrezygnowano ze wsparcia dla kodowań znaków innych niż UTF-8, zmieniono też mechanizm przechowywania dużych ilości tekstu. Szczegóły znajdują się w odpowiedniej sekcji pliku <tt>UPGRADE</tt>.

Uaktualnienie systemu jest również trudne, jeśli dokonano zmian w kodzie źródłowym oprogramowania, a administrator systemu nie chce, by wprowadzone zmiany zostały nadpisane. Pożyteczne mogą się wtedy okazać narzędzia takie, jak diff i patch. Kłopoty mogą się również pojawić w przypadku instalacji zawierających nieaktualne rozszerzenia. Należy je zawsze uaktualniać wraz z aktualizacją oprogramowania MediaWiki.

Jak przeprowadzić aktualizację z naprawdę dawnej wersji MediaWiki? Czy lepiej jest to zrobić w jednym etapie, czy w kilku?
Takie aktualizacje najlepiej przeprowadzać jednoetapowo, z aktualnej do najnowszej stabilnej wersji. Większość raportów z aktualizacji, w tym zautomatyzowane testy, potwierdza skuteczność takiej metody.

Osoby nie wierzące w skuteczność jednoetapowej aktualizacji z dawnej wersji MediaWiki mogą zapoznać się z odpowiednim postem na liście dyskusyjnej.

Czy najpierw powinienem wykonać kopię zapasową?
Krótka odpowiedź: tak.

Długa odpowiedź: zależy od a) tego, jak cenne są dla Ciebie dane zawarte w wiki, b) tego, jak trudne jest sporządzenie kopii zapasowej i c) jak radzisz sobie z administrowaniem bazami danych MySQL.

Błąd w trakcie aktualizacji może pozostawić bazę danych w dwuznacznym stanie, stojącym pomiędzy dwoma wersjami. Może przenieść ważną tablicę do tymczasowej lokalizacji i zatrzymać się przed ponownym prawidłowym utworzeniem tabel. Może zmienić definicję typu pola, wprowadzając niedozwoloną wartość. Błąd podczas uaktualniania MediaWiki rzadko prowadzi do nieodwracalnej utraty danych. Częściej uszkodzone dane da się odzyskać przy wsparciu zdolnego administratora baz danych.

Odzyskiwanie danych często jest skomplikowane. Ochotnicy oferujący wsparcie na forach pomocy chłodno reagują na użytkowników zapominających o sporządzeniu kopii zapasowej i szukających pomocy w przywróceniu ładu w bazie danych uszkodzonej podczas aktualizacji oprogramowania. Lepszym rozwiązaniem jest możliwość powrotu do wcześniejszej wersji bazy danych i zaraportowanie błędu procesu aktualizacji, który spowodował uszkodzenie danych.

Czy mogę zachować plik LocalSettings.php?
Tak, lecz konieczne może się okazać wprowadzenie w nim kilku zmian. Format pliku <tt>LocalSettings.php</tt> jest z zasady kompatybilny wstecznie. Zmiany w pliku, które mogą spowodować niekompatybilność opisane są w sekcji "configuration changes" pliku zawierającego informacje o wydaniu.

Czy wiki w trakcie uaktualniania oprogramowania może być aktywna?
Tak.

Jeśli dokonuje się uaktualniania w obrębie jednej wersji silnika MediaWiki, wystarczy zaktualizować pliki oprogramowania.

Jeśli aktualizacja przebiega pomiędzy różnymi wersjami MediaWiki, sugerowana procedura jest następująca:


 * 1) rozpakuj nową wersję oprogramowania MediaWiki w nowym katalogu
 * 2) przygotuj nowy katalog; skopiuj do niego aktualnie wykorzystywany plik <tt>LocalSettings.php</tt> oraz wykorzystywane rozszerzenia i skórki
 * 3) plik <tt>LocalSettings.php</tt> w katalogu dotychczasowej instalacji MediaWiki zablokuj pozostawiając go tylko do odczytu:


 * 1) uruchom skrypt aktualizacyjny w nowym katalogu
 * 2) zamień stary i nowy katalog