W tym poście opisuje jak ręcznie przenieść serwis elearningowy Moodle pomiędzy dwoma serwerami. W moim przypadku źródłowym jest Windows a docelowym Linux na home.pl. Moim źródłowym serwerem www jest WAMP zainstalowany w katalogu c:\wamp. Myślę, że jeśli masz inny serwer WWW poniższe polecenia nie będą się znacznie różnić. Taką potrzebę miałem w czasie gdy na home.pl nie dało się zainstalować Moodle 2.4 i podczas instalacji cały czasy pojawiały się jakieś błędy. Rozwiązałem to metodą prostą i prymitywną: zainstalować w domu na WAMPie, spakować przenieść na home.pl a tam rozpakować. Udało się a proces opisuje poniżej.
A. Archiwizacja serwisu moodle z serwera źródłowego
1. Logujemy się na konsolę systemu cmd – Windows, terminal -Llinux; jeśli pracujemy na Windows prawdopodobnie trzeba jeszcze będzie przejść do katalogu gdzie znajdują się pliki wykonywalne MySQL. W moim przypadku c:\wamp\bin\mysql\bin
2. Za pomocą polecenia
mysqldump -u user -p nazwa_bazy > plik_wynikowy.sql
archwizujemy naszą bazę moodle’a; w moim przypadku wyglądało to tak:
mysqldump -u root -p moodle > moodle.sql
wygenerowany zostanie spory plik tekstowy z poleceniami języka SQL, który zaimportujemy na serwerze docelowym. Opcja -u user to nazwa użytkowania bazy, -p wymaga podania hasła do bazy dla w/w użytkownika natomiast znak > powoduje przekierowanie wyjścia czyli poleceń SQL do pliku o wybranej nazwie. Plik może być duży więc warto go spakować tworząc plik np moodlesql.zip .
3. Kolejny krok to przejście do katalogu serwera WWW i spakowanie katalogu gdzie umieszczone są plik moodle’a. W moim przypadku serwerem jest WAMP o standardowej instalacji więc pliki znajdują się w c:\wamp\moodle. Zatem pakujemy zawartość tego katalogu do pliku dajmy na to moodlewww.zip.
4. Przenosimy nasze dwa pliki do serwera docelowego. Można użyć ftp (o ile dostawca udostępnia taka opcję) i skopiować pliki za pomocą programu Total Commander. Oczywiście użyjesz swojego ulubionego softu.
B. Wgrywanie na serwer docelowy
5. Na serwerze docelowym należy się zalogować na swoje konto (w przypadku dostawców usług raczej nie będzie innej możliwości) aby tworzone katalogi były naszą własnością. Teraz musimy stworzyć katalog, do którego wgramy pliki naszego serwisu. Ten katalog musi być na liście możliwej do odczytania przez serwer www. Ja używam home.pl więc moje katalogi i pliki znajdują się w głównym katalogu jaki mam udostępniony przez ftp. Utworzyłem więc katalog moodle a w nim rozpakowałem plik moodlewww.zip.
6. Teraz czas na bazę danych. Należy utworzyć nową bazę danych. O tym jak to się robi nie będę pisał bo nie jest to celem niniejszego artykułu jedno co można powiedzieć to to, że tworzenie bazy będzie inne w przypadku home.pl a inne w przypadku innych serwisów i jeszcze inne gdy docelowy serwer to platforma Linux do której masz pełny dostęp. W home.pl stworzenie nowej bazy to kilka kliknięć. Należy zapamiętać nazwę bazy, użytkownika i hasło. Przykładowy widok zakładania nowej bazy w home.pl:
8. Mamy już rozpakowane pliki moodle’a – czas na zaimportowanie bazy danych. Można zrobić to z poziomu konsoli MySQL lub zapewne z poziomu panelu www dostawcy serwisu a na pewno już z poziomu MySQLAdmin o ile taki jest udostępniany przez dostawcę. W moim przykładznie posłużę się linią poleceń Linuxa i konsolą MySQL. Tak więc przechodzimy do powłoki systemu serwera docelowego (jeśli mamy taka możliwość), przechodzimy do katalogu, w którym umieściliśmy plik moodlesql.zip czyli spakowaną bazę. Plik ten należy rozpakować. Następnie (pozostając w tym samym katalogu) uruchamiamy program mysql:
#mysql -u user -p baza
gdzie user to nazwa użytkownika bazy danych a baza to nazwa bazy (pustej, nowej) do której zaimportujemy nasze dane. Po zalogowaniu się wydajemy polecenie:
mysql>source nasz_pliksql;
Powyższe polecenie wczyta całość z pliku do bazy. Po zakończeniu (o ile nie było żądnych błędów) kończymy pracę z programem wpisując polecenie quit;.
Efektem wykonania powyższego powinno być wiele komunikatów: Query OK, 0 rows affected (0.00 sec). Jeśli pojawi się coś innego to może oznaczać jakieś błędy i należy się temu przyjrzeć. Po poprawnym imporcie baza będzie wypełniona danymi z serwera źródłowego.
9. Teraz należy „pogrzebać” w pliku konfiguracyjnym moodle’a config.php (znajduje się w głównym katalogu moodle’a) i zmienić kilka parametrów. W moim przypadku mam serwer WAMP i plik konfiguracyjny wygląda tak:
<?php // Moodle configuration file unset($CFG); global $CFG; $CFG = new stdClass(); $CFG->dbtype = 'mysqli'; $CFG->dblibrary = 'native'; $CFG->dbhost = 'localhost'; $CFG->dbname = 'moodle'; $CFG->dbuser = 'root'; $CFG->dbpass = ''; $CFG->prefix = 'mdl_'; $CFG->dboptions = array ( 'dbpersist' => 0, 'dbsocket' => 0, ); $CFG->wwwroot = 'http://192.168.0.205:8000/moodle'; $CFG->dataroot = 'C:\\wamp\\moodledata'; $CFG->admin = 'admin'; $CFG->directorypermissions = 0777; $CFG->passwordsaltmain = '3zCsykywrC[dr,ro r*2p4gZF^'; require_once(dirname(__FILE__) . '/lib/setup.php'); // There is no php closing tag in this file, // it is intentional because it prevents trailing whitespace problems!
Musimy zmienić, zgodnie z docelowym serwerem, kilka parametrów (zaznaczone na czerwono w powyższym kodzie):
– wwwroot: pełna nazwa domenowa pod jaką jest osiągany nasz serwis (tu uwaga należy wcześniej ustawić odpowiednia domenę tak aby wskazywała na katalog moodla) np https://www.mojemoodle.pl- dataroot: katalog danych moodla np: //moodledata jeśli katalog moodledata jest w katalogu macierzystym moodle’a
– dbpass: hasło do bazy SQL w docelowym serwerze
– dbuser: nazwa użytkownika bazy danych w docelowym serwerze
– dbname: nazwa bazy w docelowym serwerze
Jeśli wszystko poszło bez błędnie można już się logować do naszego nowego serwisu moodle. Powodzenia!