Moodle und Reverse Proxies

Heu­te wird es sehr tech­nisch – aber wofür sind Feri­en denn da… Ich hat­te ein­mal meh­re­re Mood­le­sys­te­me hin­ter einem Rever­se Pro­xy lau­fen – das wird den meis­ten nicht viel sagen, daher eine kur­ze Erklärung.

Das Pro­blem

Mood­le ist extremst resour­cen­hung­rig und kann unter hoher Last einen schlecht kon­fi­gu­rier­ten Web­ser­ver in die Knie zwin­gen, beson­ders auf schwach­brüs­ti­gen Maschi­nen (die man pri­vat so finan­zie­ren kann). Da liegt dar­an, das für Mood­le vom Web­ser­ver ein soge­nann­ter PHP-Inter­pre­ter auf­ge­ru­fen wer­den muss, der dann aus zahl­rei­chen Script­vor­ga­ben eine stink­nor­ma­le HTML-Sei­te baut und über den Web­ser­ver an den Brow­ser des Benut­zers aus­lie­fert. Erschwe­rend kommt hin­zu, dass die Scrip­ten von Mood­le zusätz­lich vie­le Daten­bank­ab­fra­gen erzeu­gen und so durch den erfor­der­li­chen Daten­bank­ser­ver (meist MyS­QL) Last erzeu­gen. Ein gut kon­fi­gu­rier­ter Mood­le­ser­ver wird also dafür sor­gen, dass mög­lichst wenig Last beim PHP-Inter­pre­ter und bei der MyS­QL-Daten­bank ankommt – man sagt: Das Backend (PHP&MySQL) muss „geschützt“ werden.

Rever­se Pro­xy als Lösung

Dafür führt kein Weg an einem Rever­se Pro­xy vor­bei. Was macht die­ser genau? Der PHP-Inter­pre­ter und die Daten­bank bau­en ja eine stink­nor­ma­le HTML-Sei­te zusam­men – das kann z.B. die Start­sei­te eines Mood­le­kur­ses sein. Immer wenn der glei­che Nut­zer die glei­che Sei­te auf­ruft, muss die­se wie­der und wie­der gebaut wer­den. Ein Rever­se Pro­xy spei­chert die­se Sei­te im HTML-Code zwi­schen und lie­fert sie bei zwei­ten Auf­ruf direkt an den Brow­ser ohne den Web­ser­ver, den PHP-Inter­pre­ter oder die MyS­QL-Daten­bank zu bemü­hen. Ein Rever­se Pro­xy ist sehr schlank und braucht nur weni­ge Resour­cen. Selbst wenn ein Opcode-Cache wie eac­ce­le­ra­tor oder xcache die PHP-Sei­te direkt bedie­nen kann, sind vor­her zwei Instan­zen mit viel höhe­rem RAM-Ver­brauch betei­ligt (bei Apa­che ein kom­plet­ter Thread, bei ligh­ty der Web­ser­ver­pro­zess und ein fast­C­GI-Thread) – das ist in Last­si­tua­tio­nen nach mei­ner Erfah­rung immer sub­op­ti­ma­ler als gleich per Pro­xy aus­zu­lie­fern. Der Opcode-Cache ist trotz­dem eine wich­ti­ge zusätz­li­che Vor­keh­rung.  Der Rever­se Pro­xy löst gera­de bei meh­re­ren Mood­lein­stan­zen auf dem glei­chen Ser­ver noch eini­ge  wei­te­re Pro­ble­me, aber dazu wei­ter unten mehr.

Wei­ter­le­sen

Moodle nutzen – aber wo und wie hosten?

Mood­le muss betrie­ben wer­den, es bedarf regel­mä­ßi­ger Pfle­ge, Updates sind essen­ti­ell, um die Daten Daten inner­halb eines Mood­le­sys­tems best­mög­lich zu schüt­zen, schließ­lich sind es nicht unse­re Daten, son­dern die der SuS. Vie­les spricht also dafür, dass man die­se Daten jeman­dem anver­trau­en soll­te, der sich damit aus­kennt. Das wie­der­um kos­tet, z.B. bei einem deut­schen Mood­le­part­ner rich­tig viel Geld – selbst im Bereich des ohne­hin schon teue­ren Applikations-Hostings.

Das ist Geld für eine Dienst­leis­tung, von der Ein­zel­ne zwar über­zeugt sein mag, deren Sinn für eine Schu­le sich aber nicht sofort erschließt, weil man den Wert von Mood­le nicht erzäh­len, son­dern nur erfah­ren kann. Man kauft also etwas teu­er ein, von dem man u.U. als Schul­ge­mein­schaft noch gar nicht weiß, ob das für einen passt. Dem­entspre­chend hoch ist der Drang eben­die­ser Schul­ge­mein­schaft, die­ses Geld lockerzumachen.

Des­we­gen gehen ver­schie­de­ne Schu­le und ver­schie­de­ne Leh­rer damit ganz unter­schied­lich um.

Wei­ter­le­sen

Mahara – I just met a girl named Mahara…

Maha­ra (dort gibt es auch eine Demo) ist ein E‑Portfoliosystem, was bei uns an der Schu­le immer mal „mit­lief“. Da es die glei­che Authen­ti­fi­zie­rungs­quel­le nutzt wie unser Schul­mood­le, steht es allen Schul­an­ge­hö­ri­gen ohne wei­te­re Bedin­gun­gen offen. Maha­ra bedient sich intui­tiv – so intui­tiv, dass sich gera­de immer noch Fünft­kläss­ler von mir, die ich ges­tern in das Sys­tem ein­ge­führt habe, dar­in tummeln.Für Mood­le brauch­te ich immer min­des­tens zwei Ein­füh­rungs­stun­den für jede Klas­sen­stu­fe. In Maha­ra muss man nur ver­ste­hen, was eine Ansicht ist und wie man da Medi­en, Tex­te usw. mit der Maus hin­ein­zieht – den (abschalt­ba­ren) Com­mu­ni­ty­krams haben die SuS sofort spitz, weil sie es schon kennen.

Was ist Maha­ra denn nun?

Maha­ra ist ein schü­ler­zen­trier­tes Tool mit aus­ge­feil­ten Com­mu­ni­ty­funk­tio­nen (Social Net­wor­king so rich­tig seit Maha­ra 1.2), die teil­wei­se sogar Face­book feh­len. SuS kön­nen soge­nann­te Ansich­ten ein­fach per Drag’n Drop gestal­ten und bestim­men, wer die­se Ansich­ten sehen wann und not­falls auch wie lan­ge darf. So las­sen sich auf ein­fa­che Wei­se Lese­ta­ge­bü­cher, „Pla­ka­te“ zu The­men, klas­si­sche Port­fo­lio­sei­ten u.v.m gestalten.

Jeder Web2.0‑affine Mensch fin­det sich nach einer sehr kur­zen Ein­ar­bei­tungs­zeit dar­in blen­dend zurecht. Maha­ra ist kon­trol­lier­ter Kon­troll­ver­lust, da jeder jeder­zeit bestimmt, wer wel­che Ansicht sieht, sich aber auch jeder jeder­zeit mit jedem ver­net­zen kann. Jeder Benut­zer kann eige­ne Grup­pen erstel­len und Freun­de in die­se Grup­pen ein­la­den, es gibt eine per­sön­li­che Pinn­wand – es gibt eben ein­fach alles, was kom­mer­zi­el­le Sys­te­me wie Face­book bie­ten – es ist nur geschützt, ver­net­zen kann man sich damit via XML-RPC trotz­dem, unser Mood­le ist mitt­ler­wei­le so angedockt.

Das User­in­ter­face ist modern und basiert kom­plett auf Ajax. Als ich das heu­te alles gese­hen habe, mach­te es in mei­nem Kopf andau­ert „Pling! – das könn­test du damit…“ und „Pling! – *das* ist Schü­ler­zen­trie­rung“ und zeit­wei­se sogar „Pling! – hmpf, Mood­le?“. Kei­ne Sor­ge – Mood­le wird das auch bei mir über­le­ben, der Ansatz von Mood­le ist nur ein kom­plett ande­rer – obwohl: Gegen Maha­ra emp­fin­de ich die Par­ti­zi­pa­ti­ons­mög­lich­kei­ten von Teil­neh­men­den in Mood­le jetzt schon als erbärm­lich (und) kom­pli­ziert. Die­sen Pro­zess muss man in Mood­le aktiv kon­stru­ie­ren und bleibt dann den­noch auf weni­ge Akti­vi­tä­ten beschränkt. Nach­tei­lig an Maha­ra ist das gro­ße Ablen­kungs­po­ten­ti­al durch die Com­mu­ni­ty­funk­tio­nen – um Inhal­te geht es bei mei­nen Fünft­kläss­lern bis­her noch nicht sooo viel…

Mein Traum:

Bei­de Sys­te­me ver­schmel­zen – dann hat man bei­des. Geht ja leid­lich. Via XML-RPC (MNET).

Mein Tipp:

Da schläft der nächs­te Hype…

Benutzerdaten für Moodle mit einer Tabellenkalkulation erzeugen

Mood­le bie­tet die Mög­lich­keit des CSV-Uploads, um Daten­be­stän­de zu pfle­gen. Wenn man in der – nach mei­ner Ansicht – bedau­erns­wer­ten Lage ist, kei­ne schon vor­han­de­ne exter­ne Authen­ti­fi­zie­rungs­mög­lich­keit nut­zen zu kön­nen, kann das ein eini­ger­ma­ßen kom­for­ta­bler Weg sein, um User­da­ten zu ver­wal­ten. Mood­le bie­tet eini­ge nütz­li­che Funk­tio­nen, um Nut­zer­na­men aus Tabel­len­da­ten zu erzeu­gen – viel­sei­ti­ger ist aber der Weg über die Tabellenkalkulation.

Jede Tabel­len­kal­ku­la­ti­on besitzt For­meln für Text – wenn man sich nur die­se anzei­gen lässt, wird man sehr schnell fündig.

  • KLEIN() wan­delt einen Text in Klein­buch­sta­ben um
  • LINKS() lie­fert den lin­ken Teil einer Zei­chen­ket­te zurück, durch zusätz­li­ches Argu­ment kann ich sagen, wie lang der Teil sein soll, stan­dard­mä­ßig gilt die Län­ge 1.
  • VERKETTEN() ver­knüpft zwei Zeichenketten
A B C
1 Riecken Maik

Um den Benut­zer­na­men „mriecken“ zu gene­rie­ren, gebe ich in der Zel­le A1 fol­gen­de For­mel ein:

=KLEIN(VERKETTEN(LINKS(C1);B1))

Gehen wir das mal von innen nach außen durch:

=LINKS(C1) gibt den Buch­sta­ben „M“ zurück
=VERKETTEN((LINKS(C1);B1) gibt die Zei­chen­ket­te „MRiecken“ zurück
=KLEIN(VERKETTEN(LINKS(C1);B1)) macht die­se Zei­chen­ket­te klein

Noch ein Beispiel:
=KLEIN(VERKETTEN(LINKS(C1;2);B1)) gibt dann z.B. „mariecken“ zurück

Es gibt auch die Funktionen
=RECHTS() – gleich wie LINKS() nur schnip­pelt die eben rechts
=TEIL() – schnei­det in der Mit­te aus
=GROSS() gibt es auch…

Das geht auch für Pass­wör­ter, die man dann gleich per Seri­en­brief mit­tei­len kann. Gefunden/geklaut/neu zusam­men­ge­fasst habe ich das (von) hier. Dafür nimmt man ein eige­nes Tabel­len­blatt und erstellt fol­gen­den Inhalt:

  • Zel­le A1 bis A9: Zah­len 1 bis 9
  • Zel­le A10 bis A35: Klein­buch­st­ab­den a bis z 
  • Zel­le A36 bis A61: Groß­buch­sta­ben A bis Z 

Dann in eine lee­re Zel­le fol­gen­de Formel:

=INDIREKT(„A“&ZUFALLSBEREICH(1;61))&INDIREKT(„A“&ZUFALLSBEREICH(1;61))&INDIREKT(„A“&ZUFALLSBEREICH(1;61))&INDIREKT(„A“&ZUFALLSBEREICH(1;61))&INDIREKT(„A“&ZUFALLSBEREICH(1;61))&INDIREKT(„A“&ZUFALLSBEREICH(1;61))

für sechs­stel­li­ge Pass­wör­ter. Für mehr Stel­len, muss man ein­fach noch zusätz­li­che „&INDIREKT(„A“&ZUFALLSBEREICH(1;61)“ am Ende ein­fü­gen. Die­se For­mel kopiert man im sepa­ra­ten Tabel­len­blatt ein­fach her­un­ter und fügt dann über „Inhal­te ein­fü­gen“ die erstell­ten Pass­wor­te in die Tabel­le im Pass­wort­feld ein, die die Nut­zer­da­ten ent­hält. Man kann das nicht direkt im glei­chen Tabel­len­blatt machen, da die For­mel spä­tes­tens bei einem neu­en Auf­ruf der Datei neue Pass­wör­ter erzeugt…

Für die ganz Beque­men gibt es hier zwei Down­loads für ein Mus­ter­ta­bel­len­blatt zur Gene­rie­rung von Pass­wor­ten. Dabei habe ich  bereits Zei­chen eli­mi­niert, die der Nut­zer ger­ne ver­wech­selt, etwa den Buch­sta­ben „O“ und die Null oder den Buch­sta­ben „l“ (ger­ne mit der Eins ver­wech­selt). Die Tabel­le bie­tet in der ers­ten Spal­te den Pool an Zufallzei­chen, in der zwei­ten ein sechs­stel­li­ges und in der drit­ten ein acht­stel­li­ges Zufalls­pass­wort an. Sie lässt sich leicht an die eige­nen Bedürf­nis­se anpassen.

Zusam­men mit den ande­ren Mög­lich­kei­ten, die durch den CSV-Import in Mood­le gege­ben sind, las­sen sich damit span­nen­de Din­ge anstellen.

Projektstart: Moodlekurs zur Medienbildung

Bei uns an der Schu­le soll es bald ein Prä­ven­ti­ons­kon­zept geben.Teil die­ses Kon­zep­tes (7. Klas­se) wird auch die Nut­zung des Inter­nets bzw. der Umgang damit sein. Ich habe mich aus meh­re­ren Grün­den für einen Mood­le­kurs entschieden:

  1. Ver­schie­dens­te KuK wer­den mit den SuS die betref­fen­den Stun­den durchführen
  2. Ich möch­te etwas Uni­ver­sel­les haben, z.B. auch für Ver­tre­tungs­stun­den
  3. Ich möch­te einen Schutz­raum für die SuS schaffen
  4. Ich möch­te Mood­le bei uns an der Schu­le noch bekann­ter machen
  5. Ich muss lei­der ent­ge­gen mei­nem sons­ti­gen Ansatz die Lehr­kraft teil­wei­se durch Mood­le substituieren

Das Pro­blem an Mood­le ist für mich jedoch unbe­streit­bar, dass es recht wenig attrak­ti­ve Inter­ak­ti­ons­mög­lich­kei­ten für SuS bie­tet (gegen in die­ser Alters­grup­pe ange­sag­te Web2.0‑Tools kann die­se Platt­form nicht ansatz­wei­se gegenanstinken).

Daher möch­te ich klei­ne Bau­stei­ne zusam­men­stel­len, die zwar in ihrer Abfol­ge eine gewis­se Logik auf­wei­sen, jedoch nicht zwin­gend in der gege­be­nen Rei­hen­fol­ge bear­bei­tet wer­den müs­sen und eine Fül­le von exter­nen Res­sour­cen ver­wen­den, damit es nicht bei Mood­le bleibt. Es sol­len klei­ne Lern­häpp­chen und ver­schie­de­ne Arbeits­for­men mög­lich sein.

Ich bin über­haupt kein Typ für das „anspre­chen­de Design“ – man mag mir anfäng­li­che Spar­ta­ni­tät etwas nach­se­hen. Der Kurs wird natür­lich unter CC hier ver­öf­fent­licht, wenn er einen gewis­sen Umfang erreicht hat. Für Rück­mel­dung bin ich in jeder Form dank­bar. Hier der Link:

http://moodle.riecken.info/course/view.php?id=2

Ein Bau­stein steht inhalt­lich. Die Aus­wahl der Bei­spie­le (Fil­me) ist nicht zufäl­lig – man kann dar­an ver­schie­de­ne Facet­ten von Her­aus­for­de­run­gen im Netz zei­gen (Urhe­ber­recht, Cyber­mob­bing, Selbst­ver­mark­tung, posi­ti­ve Netzidentität…).

1 3 4 5 6 7 8