LAMS und Moodle, schön wärs gewesen…

Tja, wer kommt nicht ins Träumen beim Gedanken einer engen Integration von LAMS in Moodle? Und wie wenn es die Götter der LMS (Learning Management Systeme) gehört hätten, wurde auch daran gearbeitet. Von der schönen Oberfläche geblendet habe ich kurzerhand alle meine Abneigungen über Bord geworfen und mich daran gemacht, es zu installieren, wohlbewusst dass es eine Wanderung durch das Tal der Tränen sein wird, wie immer wenn mein alter Kollege Tomcat mitreist.

Das wichtigste zu Beginn: Es war ernüchternd. Die Integration ist noch nirgends. Das kann ich so selbstbewusst sagen, weil es tatsächlich noch HTML-Syntaxfehler drin hatte, die korrigiert werden mussten um den Firefox zu einer Mitarbeit zu überreden.

Es soll sich aber jeder selbst ein Urteil bilden. Hier eine Kurzanleitung, wies unter Linux gelaufen ist.

Zuerst die Doku:

Wir betreiben Moodle mit https (Secure HTTP) um ein Absniffen der Passworte durch die Lernenden zu verhindern. LAMS kann damit nicht umgehen. Man muss also einen HTTPS-HTTP Gateway dazeischenschalten. Dafür habe ich einen eigene Site in Apache konfiguriert, welche mittels url-rewriting transparent die https seiten für den localhost als http serviert:

<virtualhost *:3333>
  ServerName moodle.yourhost.ch
  ServerAdmin admin@server.ch
  DocumentRoot /data/www/httpsgateway/htdocs
  ErrorLog /data/www/httpsgateway/logs/error.log
 
  LogLevel debug
  CustomLog /data/www/httpsgateway/logs/access.log combined

  <location>
                Order deny,allow
                Deny from all
                Allow from 127.0.0.1
  </location>

  RewriteEngine On
  RewriteCond %{REQUEST_URI} !^/index.php(.*)$
  RewriteRule ^/(.*) http://moodle.yourhost.ch:3333/index.php?url=%{REQUEST_URI}&amp;%{QUERY_STRING} [R]
</virtualhost>

Und die index.php im Webroot:

< ?
$params=$_REQUEST;
unset($params["url"]);
$paramsstr="";

foreach($params as $key=>$val) {
        $paramsstr.="&".$key."=".urlencode($val);
}

$url="https://moodle.yourhost.ch".$_REQUEST["url"]."?".$paramsstr;

$sessions = curl_init();
curl_setopt($sessions, CURLOPT_URL,$url);
curl_setopt($sessions, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($sessions, CURLOPT_SSL_VERIFYPEER, 0);

#print "[$url]";die();

$my_load_page = curl_exec($sessions);

if (curl_errno($sessions)) {
        print curl_error($sessions);
        print "URL:".$url."
n"
;
} else {
        curl_close($sessions);
        echo $my_load_page;
}
?>

mod_jk

Damit Tomcat über Apache angesteuert werden kann braucht es mod_jk und die Datei /etc/libapache2-mod-jk/workers.properties sollte folgendermassen aussehen:

# workers.properties -
#
# This file is a simplified version of the workers.properties supplied
# with the upstream sources. The jni inprocess worker (not build in the
# debian package) section and the ajp12 (deprecated) section are removed.
#
# As a general note, the characters $( and ) are used internally to define
# macros. Do not use them in your own configuration!!!
#
# Whenever you see a set of lines such as:
# x=value
# y=$(x)something
#
# the final value for y will be valuesomething
#
# Normaly all you will need to do is un-comment and modify the first three
# properties, i.e. workers.tomcat_home, workers.java_home and ps.
# Most of the configuration is derived from these.
#
# When you are done updating workers.tomcat_home, workers.java_home and ps
# you should have 3 workers configured:
#
# - An ajp13 worker that connects to localhost:8009
# - A load balancer worker
#
#

# OPTIONS ( very important for jni mode )

#
# workers.tomcat_home should point to the location where you
# installed tomcat. This is where you have your conf, webapps and lib
# directories.
#
workers.tomcat_home=/opt/lams/jboss/tomcat-4.1.x

#
# workers.java_home should point to your Java installation. Normally
# you should have a bin and lib directories beneath it.
#
workers.java_home=/opt/java

#
# You should configure your environment slash... ps= on NT and / on UNIX
# and maybe something different elsewhere.
#
ps=/

#
#------ ADVANCED MODE ------------------------------------------------
#---------------------------------------------------------------------
#
#

#
#------ worker list ------------------------------------------
#---------------------------------------------------------------------
#
#
# The workers that your plugins should create and work with
#
worker.list=ajp13_worker

#
#------ ajp13_worker WORKER DEFINITION ------------------------------
#---------------------------------------------------------------------
#

#
# Defining a worker named ajp13_worker and of type ajp13
# Note that the name and the type do not have to match.
#
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13
#
# Specifies the load balance factor when used with
# a load balancing worker.
# Note:
#  ----&gt; lbfactor must be &gt; 0
#  ----&gt; Low lbfactor means less work done by the worker.
worker.ajp13_worker.lbfactor=1

#
# Specify the size of the open connection cache.
#worker.ajp13_worker.cachesize

#
#------ DEFAULT LOAD BALANCER WORKER DEFINITION ----------------------
#---------------------------------------------------------------------
#

#
# The loadbalancer (type lb) workers perform wighted round-robin
# load balancing with sticky sessions.
# Note:
#  ----&gt; If a worker dies, the load balancer will check its state
#        once in a while. Until then all work is redirected to peer
#        workers.
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp13_worker

In der site-conf für Apache2: /etc/apache2/sites-available/moodle.yourhost.ch

# LAMS
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkWorkersFile   /etc/libapache2-mod-jk/workers.properties
JkLogLevel debug
JkLogFile  /data/www/moodle.yourhost.ch/logs/mod_jk.log
JkMount /lams/* ajp13
JkMount /lams   ajp13
JkMount /lams/images/* ajp13
JkMount /lams/images   ajp13

Zum Schluss muss nur noch Moodle konfiguriert werden:

Administration, Module, LAMS, EInstellungen:

server_url: https://moodle.yourhost.ch/lams
server_id:  lamsserver01
server_key: sErVeRKeY

Dann aufrufen und Accounts nach Anleitung erstellen: https://moodle.yourhost.ch/lams/login.jsp.

Brauchbar ist es noch nicht :(…. Die Integration vergisst beim Bearbeiten die Namen des LAMS-Kurses etc… Vielleicht in ein paar Monaten…

2 Gedanken zu „LAMS und Moodle, schön wärs gewesen…

  1. Hallo,

    würde mich mal interessieren, ob Du da in letzter Zeit mal wieder reingeschaut hast. Ich suche jemanden, der mir vielleicht helfen kann. Vielleicht können wir uns da austauschen. Ich habe einwenig mit Moodle probiert und habe jetzt das LAMS soweit lauffähig, mir sind aber noch einige Dinge im Lams unklar, auch die Dokumentation hilft mir nicht wirklich weiter einiges zu verstehen. Würde mich über einen Kontakt sehr freuen.

    Sonst ist das ein Interessanter Blog 😉

    Gruß,
    Holger

  2. Ich habe mich gar nicht mehr mit LAMS beschäftigt, sorry. Kosten/Nutzen scheinen mir momentan einfach nicht gegeben :)… Ich wünsche Dir aber viel Glück damit!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.