Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Jak zbudowałem Moodle'a

Nosiłem się z napisaniem tego artykułu jakiś czas, ale jakoś weny nie było. Minęło pół roku, tej dalej nie ma, ale gdzieś w pobliżu ją czuję.
O czym to - bo przecież nie napisałem moodle, tym się zajmuje facet z Australii plus cała grupa innych koderów. Otóż na uniwerku postanowiono zmienić system wspomagania nauki. Do tej pory korzystaliśmy z WebCT, ale wsparcie się skończyło. Firma ma w ofercie inny produkt, niestety nieziemsko drogi. Z mojego, czyli dba, punktu widzenia, również bardzo skomplikowany.
Nie będzie to wpis techniczny, być może kiedyś taki powstanie, z poradami jak wszystko skonfigurować i podregulować.
Tyle tytułem wstępu.

Wybór systemu

Jak wielu z Was zapewne wie, tak ważnego systemu dla przedsiębiorstwa (bo uniwersytet jest jakby nie było takim tworem), nie wybiera się w pięć minut. Powstał projekt, z radą, menadżerem, doradcami, sponsorami itp. Wybrano trzy systemy, zaproszono przedstawicieli firm na prezentację. Ponieważ moodle jako taki nie jest tworzony przez firmę, zaproszono doradców z takiej, zajmującej się wdrożeniami moodle i doradztwem. Byłem w komisji oceniającej produkty. Jak się to odbywało? Jak zwykła prezentacja ze slajdami, tyle że na koniec mogliśmy wałkować prezenterów. Pytania od członków komisji dotyczyły zarówno strony funkcjonalnej, jak i technicznej (ja). Nie będę Was zanudzał szczegółami ale oczywiście interesowało mnie z jaką bazą danych to może pracować, na jakich platformach itp.
Po ocenie prezentacji, przyszedł czas na następne spotkanie i bardziej szczegółowe pytania, wybraliśmy już wstępnie dwa systemy i chcieliśmy poznać więcej szczegółów. Koniec końców - wybór padł na moodle, z wielu względów, z których finansowy był jednym z najważniejszych.
Wysłano oficjalne maile do kogo się dało, zatwierdzono budżet i deadline'y - startujemy.

Wybór platformy OS i bazy danych

Żeby nie zostać posądzonym o stronniczość, trzeba było przetestować różne konfiguracje. W odróżnieniu od poprzednika (WebCT działał w zasadzie na ustalonym zestawie aplikacji - weblogic plus dwie bazy do wyboru), moodle oferuje wolność wyboru. W zasadzie jest jeden sztywny wymóg - PHP. W końcu aplikację pisze się w jednym języku a nie kilku. Co do reszty - serwer www, baza danych czy system operacyjny - można to postawić na wszystkim, na co jest kompilacja PHP.
Poprosiłem dział serwerowy o przygotowanie 4 vm'ów. Dwa windows, dwa linux, przy czym sam instalowałem redhata. Windows jest z gotowego szablonu, oszczędność czasu.
Jeden serwer windows dostał bazę MS SQL, IIS + PHP, drugi MySQL, apache i PHP. Ponieważ nie można postawić MS SQL na liuxie, PHP z jednego z nich łączył się z zewnętrznym serwerem. Żeby zrównoważyć testy, zmieniłem później konfigurację pierwszego serwera windows, tak by PHP łączyło się również z zewnętrzną bazą microsoftu.
Dodaliśmy na koniec jeszcze jeden test - z bazą MySQL na zewnętrznym serwerze.
Z takim środowiskiem przeprowadziliśmy mnóstwo testów wydajnościowych, wszystko było zapisywane i porównywane.
Najlepiej cały system działał na konfiguracji - linux, apache, PHP i MySQL. Ale ponieważ na uniwerku przyjęto politykę korzystania z rozwiązań MS gdzie się tylko da, postanowiliśmy stworzyć hybrydowe środowisko - serwery www na linuxie, baza na klastrze MS SQL.
Zacząłem budować całość, oprócz serwera bazy, bo to już mamy.
Zaczęły się poważne testy i migracja danych. Niestety z jakichś powodów system nie działał zbyt wydajnie. W pewnym momencie postanowiliśmy wykorzystać bardzo wydajny serwer, kupiony dla innych celów, i postawić na nim bazę MySQL. Ponowna instalacja moodle, konfiguracja .... i zbieraliśmy szczęki z podłóg.
Decyzja - zostajemy z takim zestawem - wszystko na linuxach z MySQL.

Realizacja

Przyszedł czas na konkretne zaplanowanie infrastruktury.
Z testów wynikało, że pojedyncza baza na wybranym sprzęcie spokojnie da radę. Ale oczywiście trzeba mieć jakiś serwer "stand by" - czyli taki, który można przełączyć w tryb produkcyjny, w razie awarii podstawowego.
Serwer na bazę ma 96GB ram, 32 rdzenie, 4 karty sieciowe (nie korzystam ze wszystkich). Drugi jest identyczny. MySQL skonfigurowałem w zestawie Master-Slave. W razie czego, przełączenie może być zrobione w 5 minut, może mniej. Mamy plany, by zmienić tę konfigurację w klaster active-active.
W systemie z WebCT działały 4 serwery www, jeden administracyjny. Postanowiłem zbudować podobny zestaw. Serwer www to klaster 3 serwerów z apache, PHP, akceleratorem, zbudowane na maszynach wirtualnych. Do tego przyłączony jest czwarty serwer administracyjny, ale nie zarządza pozostałymi - jest przeznaczony do tzw. obsługi - czyli zaplanowane zadania, czyszczenie, wysyłanie maili, skrypty przetwarzające, importujące z innych baz itp. Aby nie obciążać głównych serwerów. Ten nie jest ujęty w puli na "load balancerze". O co chodzi z tym "load balancerem"? Uniwerek ma właśnie taki rozdzielacz ruchu, który obsługuje całe mnóstwo systemów. Jeden z wirtualnych serwerów na nim to właśnie moodle. Szczegółowa konfiguracja tego cuda to nie ja ;) W każdym razie - pula serwerów dla moodle zawiera trzy serwery produkcyjne. Ruch rozdzielany jest na zasadzie obciążenia, ale z tzw. sticky sessions.
WebCT zapisywało wszystkie pliki w bazie danych. To wygodne ale powoduje, że baza puchnie jak zwariowana, trzeba stosować quoty itp. Moodle zapisuje pliki w systemie operacyjnym. Ale wszystkie serwery www muszą mieć dostęp do tego samego zasobu, więc kolejny serwer - NFS. Na razie jest to osobna maszyna z linuxem, ale nasz nowy SAN ma tę funkcjonalność, z mirrorowaniem, więc w niedługim czasie się na to przerzucimy. NFS to VM, więc mamy jej mirror na drugim kampusie, LUN jest też kopiowany na lustrzany obszar, niemniej - przełączenie maszyny to kilkanaście minut. Z NFS na SAN to może być nawet nie zauważone przez serwery www.

Produkcja, testy, szkolenia ....

Środowisko produkcyjne jest, ale to nie wszystko. Prawdziwy hardcore pracuje na żywym organizmie, ale w takiej firmie potrzebujemy zestawu testowego. Mamy swoich deweloperów, tworzą dodatki, moduły, plug-iny itd. Bez testów nikt nie odważy się zainstalować tego na produkcji. A i oni muszą mieć na czym to tworzyć. A cała kadra nauczycielska musi mieć swoje środowisko treningowe, studenci coś na czym zapoznają się z systemem itd itd. Liczba serwerów rośnie....
A jeszcze mamy serwery archiwalne, zawierają surowe dane zmigrowane z WebCT. Konfiguracja systemu testowego jest najbardziej zbliżona do produkcyjnego. Ze zrozumiałych względów. Połączenia do zdalnych systemów są również zdublowane, np. do firmy sprawdzającej plagiaty.
Zapomnieliście już o bazach MS SQL? Ależ łączymy się z nimi z moodle. W tych bazach jest całe mnóstwo danych agregowanych z innych systemów - student record system, financial system, HR itd. Z serwera administracyjnego łączymy się z tymi bazami i pobieramy dane. Jakie - nie mam pojęcia, to wiedzą koderzy i zainteresowane działy. Ja oczywiście musiałem zainstalować i skonfigurować potrzebne sterowniki i biblioteki.

A siódmego dnia ....

Projekt, od rozpoczęcia do zamknięcia, trwał ok. 9 miesięcy. Po drodze kupiliśmy kilka przydatnych narzędzi, jak np. Full Convert Enterprise - program do migracji danych z bazy do bazy.
Moodle okazał się bardzo "wdzięcznym" produktem. Oprócz PHP, reszta składników jest dowolna, zamiast apache można wykorzystać nginx czy lighthttpd. Zamiast MySQL z oracle, można użyć MariaDB albo bazy z Percona, albo zupełnie innej - MS SQL czy PostgreSQL. Całość może chodzić na linuxie albo windowsie, czytałem o wdrożeniach z wykorzystaniem komponentów w całości prawie microsoftowych. Może to działać też w chmurze, jest dużo firm hostujących moodle dla instytucji edukacyjnych. Zagłębiając się już w funkcjonalność - moodle może wyglądać zupełnie ... nie jak moodle. Trochę to zalatuje reklamą, ale po skomplikowaniu WebCT, z nieszczęsnym weblogikiem, opartym na javie - to wydało mi się niesamowicie proste.

Panie, z czym mi tu, ja to znam

Dla wielu to pewnie opowiadanie ich własnej historii. Jednakże mam nadzieję, że komuś nie obeznanemu w temacie, albo komuś kto pracuje w małej firmie, ten wpis przybliży jak się to robi w większych przedsiębiorstwach i na obczyźnie. Choć myślę, że nie różni się to wiele od projektów w Polsce.

Ty to zbudowałeś?

Dlaczego na początku napisałem, że to ja zbudowałem moodle? Dlatego, że tak było. Jestem DBA na uniwerku już 6 rok, przejąłem WebCT od poprzednika, niejako z urzędu byłem kandydatem na wykonanie tego projektu. Nie stworzyłem systemu oczywiście zupełnie sam. Inne teamy współdziałały, koderzy z www, serwerowcy, sieciowcy, gość od Load Balancera itd. Jednakże większość robiłem ja, począwszy od projektu systemu a skończywszy na oddaniu go do użytku. I nie piszę tego żeby się chwalić, chodzi o to, że taki system może zbudować ktoś, w zasadzie, ze średnią wiedzą o systemach na linuxie.

 

linux oprogramowanie serwery

Komentarze

0 nowych
patryk9200   8 #1 11.07.2013 23:31

Na Politechnice Śląskiej jest moodle właśnie. Wielokrotnie miałem okazję go używać. System bardzo ciekawy. Tylko moim zdaniem domyślny interfejs mógł by być bardziej uproszczony. Gratuluję świetnej roboty! :-)

  #2 11.07.2013 23:44

Brawo :)
Szczerze to niewiele zrozumiałem, ale nic w tym złego. Imponuje mi wiedza pozwalająca na zbudowanie takiego systemu, i dowiedziałem się kilku rzeczy. Fajny wpis :)
Pozdrawiam :)

nitro2012   10 #3 12.07.2013 03:09

Na wielu uczelniach moodle jest zainstalowany. Bo jest darmowy, łatwy w instalacji, duża ilość wtyczek. Obecna wersja to 2.5 . Sam mam paczkę moodle z ulubionymi wtyczkami o łącznym rozmiarze 161 MB. Do tego wykorzystuje Xerte Online Toolkits do tworzenia prezentacji ze spolszczoną przeze mnie wersją gdzie do tych prezentacji linkuje na moodle (nie opłaca mi się za każdym razem po zmianie ładować do SCORM a tak mam zawsze aktualne). Więc moodle jest ok.

jaredj   10 #4 12.07.2013 07:32

Dzięki Patryk9200 :)
Moodle - tak jest bardzo elastyczny, łatwo konfigurowalny, po zmianach może wyglądać kompletnie inaczej. Ale, jak ciekawostkę podam, parę dni po uruchomieniu i oddaniu do użytkowania, dostaliśmy email od studenta z "gratulacjami", że wybraliśmy najgorszy możliwy produkt ;)

Autor edytował komentarz.
jaredj   10 #5 12.07.2013 12:10

Nie mam zielonego pojęcia jaki jest eFront, nie testowaliśmy tego. Być może był brany pod uwagę, na wczesnym etapie, przez komisję, do prezentacji i testów jednakowoż nie doszło.

  #6 12.07.2013 15:10

dla zainteresowanych tematyką moodle'a zapraszam na spotkanie przy kawie w Katowicach 25 lipca
http://www.webanywhere.pl/landing/nowoczesne-platformy-lms a już wkrótce informacje o szkoleniach dla admnistratorów moodle 2.5 w sierpniu i wrześniu - zapraszamy

jaredj   10 #7 12.07.2013 22:08

Przyjrzę się temu, bo dlaczego nie ;)
Moodle ma co roku tzw MoodleMoot - czyli taki gathering ;)
W przyszłym roku będzie w Edynburgu, mamy nadzieję, że nasz uniwerek coś dosponsoruje. Ja przygotuję na pewno jakąś prezentację.
Na czym ten eFront stoi?

nitro2012   10 #8 12.07.2013 22:45

eFront ma prostszy wygląd, ale część jest nie przetłumaczona, mało skórek, wtyczek... A moodle jest popularne, mimo że trochę zamula.

Moodle rulez!

W dniach 23-25 sierpnia odbędzie się MoodleMoot 2013 jako wirtualna konferencja http://www.wiziq.com/course/6983-moodlemoot-2013-mmvc13 na platformie wiziq

  #9 14.07.2013 21:48

Witaj w klubie. Tylko się cieszyć, że kolejne wdrożenie nastąpiło, w kolejnym uniwersytecie.

  #10 14.07.2013 22:07

WSB w Dąbrowie Górniczej ma Moodle i raczej nie wzbudził mojej miłości. Wśród wykładowców z tego co widzę również, chociaż to i tak lepsza platforma od tego, co mieli poprzednio.

jaredj   10 #11 15.07.2013 11:18

Moodle w podstawowej formie, z podstawowymi dodatkami jest taki sobie. Jego siłą natomiast jest społeczność. Jest cała masa pluginów, bloków, dodatków, tematów itp. Poza tym nic nie stoi na przeszkodzie, żeby zrobić własny temat, pod konkretną uczelnię.

Wdrożenie nastąpiło więcej niż rok temu :) Zdążyłem już uczestniczyć w dwóch moodlemoot'ach ;)

  #12 15.07.2013 14:03

Serwer na bazę ma 96GB ram, 32 rdzenie - brzmi potęrznie dla zwykłego zjadacza chcleb soho :)

Ilu userów jednocześnie przewidujecie?

jaredj   10 #13 16.07.2013 16:18

1500 do 3000 tysięcy. Z testów wynikło, że serwer bazy spokojnie sobie poradzi. Serwery www mają ustawiony limit do 1000 procesów apache, a są na razie 3. Zawsze mogę dostawić jakiś kolejny w razie potrzeby.

ddobrow   2 #14 12.09.2013 20:21

No cóż artykuł ciekawy - natknąłem się na niego przypadkowo szukając info dotyczącego instalacji moodla wykorzystując serwer MariaDB - od momentu kiedy dostałem zakaz użytkowania moodla (znajdowałem dziesiątki by nie powiedzieć setki błędów i niedoróbek) nie interesowałem się tym systemem wcale do momentu gdy znajomy poprosił mnie o kilka uwag na jego temat (czytaj zaznajomić z obsługą) MySQL podobnie jak OpenOffice powoli przechodzi w zapomnienie (coraz więcej dystrybucji przechodzi na MariaDB jako podstawowy system bazodanowy) więc próbowałem zainstalować moodla na systemie z zainstalowaną bazą danych MariaDB - szczerze nie udało mi się do zrobić pojawia sie błąd zapisu do bazy danych - na stronie moodla jest info że MariaDB będzie obsługiwana dopiero od wersji 2.6. No cóż z ciekawości sprawdziłem moją ulubiona platformę e-learningową (ATutor) jak ona zachowa się z MariąDB - instalacja i praca bez problemów to samo z efront-em, claroline. Potwierdza to moją opinię iż niektóre "popularne" platformy (moodle) nie zawsze idą z duchem czasu. Zresztą moodla nie polecam nikomu - jest kilka innych ciekawych darmowych platform które o wiele sprawdzają sie w nauczaniu na odległość.

jaredj   10 #15 19.09.2013 23:23

Właśnie postawiłem serwer z bazą z Percony. Moodle jeszcze nie jest zainstalowany ale platformę mam przygotowaną. Napiszę jak poszło. Ciekawe dlaczego miałeś problemy z MariaDB. Mówi się, że na razie jest zgodna na poziomie binarnym z MySQL. To skąd ten błąd zapisu? Zaciekawiłeś mnie do tego stopnia, że postawię system z Marią.

  #16 27.05.2015 22:48

Tragiczna platforma. Poziom skomplikowana jest ogromny. NIE INTUICYJNA. Zamiast administracja była in line i funkcje dostępne w zależności od uprawnień to funkcje administracyjne są dostępne w zupełnie oddzielonej części administracyjnej. Trzeba skakać/szukać. DNO. Wybrałem bo niby najpopularniejsza - błąd. Po roku użytkowania szukam czegoś innego bo poziom skomplikowania jest tragiczny.