ILIAS-Tricks not only for Schools

Gambio für E-Commerce-Kaufleute auf einem vServer

[wolfganghuebsch] - 18. Sep 2020, 08:08

Die Idee ist, einen vServer anzumieten mit Ubuntu 18.04 ohne Plesk und darauf die Shop-Software Gambio zu installieren. Dieser mit htaccess-Passwort geschützter Gambio-Master wird von der Lehrkraft eingerichtet und kann dann per Skript x-fach geklont werden, so dass alle SuS ihren eigenen Webshop erhalten. 

  • Changelog:
    • 2020.09.18: Initiale Version
  • Gambio-Version: 4.0.2.0
  • Autor: Wolfgang Hübsch

An dieser Stelle eine Danksagung für die mega Arbeit des Gambio-Teams aus Bremen :)

Vorbereitung und Installation des Master-Shops

  • Download von Gambio.de als Zip-File: https://www.gambio.de/information/download
  • Auswahl eines geeigneten vServers, z.B. von hier (ich werde dafür nicht bezahlt, dies ist auch eine private Dokumentation für meine Arbeit): https://www.hosteurope.de/Server/Virtual-Server/, z.B. Starter Plus. Das Paket kann sogar während des Betriebes erweitert werden, falls es nicht ausreicht. Also erstmal ein kleineres nehmen. 
  • Wenn die IP des Servers bekannt ist, diese einer Domain oder Subdomain zuordnen, wie es hier beschrieben ist: https://bbs-ilias.de/ilias/goto.php?target=pg_31_187&client_id=info. Dann das ILIAS-Install-Tutorial for Ubuntu 18.04 (meine Anleitung) weiter durcharbeiten bis einschließlich Kapitel 4
  • Eine Datenbank erstellen, wie es in Kapitel 5 in meiner Anleitung beschrieben ist
  • Gambio entpacken und den Inhalt von "Shopsystem->Dateien" nach /var/www/html/gambiomaster (Ort des Master-Shops) kopieren. Dazu ist ggf. ein FTP-Server notwendig.
  • Mit der Gambio-Installationsanleitung aus dem Zip Gambio installieren

  • Ggf. muss die Installation nicht mit https sondern http durchgeführt werden. Die Fehlermeldung lautet "gambio Shop unter dieser Adresse nicht erreichbar". In diesem Fall muss vorher ein evtl. vorhandenes rewrite auf https in der Vhost-Datei 000-gambio.kivinet.de entfernt werden (ganz unten zu finden). Die Installation dann zunächst mit http in der Browseradresszeile durchführen.
  • Damit später der Admin-Bereich unter https aufrufbar ist, muss ggf. der Serverpfad manuell auf https umgestellt werden. Dazu ist die folgende Datei zum Abschluss der Installation in Zeile 60 auf https zu ändern:  
    • nano /var/www/html/gambiomaster/admin/includes/configure.php
    • Beispiel: define('HTTP_SERVER', 'https://gambio.kivinet.de');

Server E-Mail-fähig machen

MX-Record erstellen

  • Sofern noch nicht geschehen, muss der FQDN einen MX-Eintrag im DNS-System erhalten. Bei einer Subdomain gambio.kivinet.de würde dies z.B. so aussehen:

E-Mail-Dienst installieren

Verzeichnisschutz für den Master-Shop erstellen

Damit SuS nicht versehentlich den Master-Shop verwenden, dessen Passwort ihnen ja bekannt ist, bauen wir einen htaccess-Schutz ein.

htusers erstellen

  • Statt eine htaccess-Datei zu verwenden, die uns später beim Klonen stören könnte, schreiben wir direkt in die vhost-Konfiguration, von denen zwei vorhanden sind:
    • 000-gambio.kivinet.de.conf
    • 000-gambio.kivinet.de-le-ssl.conf
  • Wenn noch nicht geschehen: mkdir -p /opt/scripts/schutz
  • cd /opt/scripts/schutz
  • Einen Benutzer hsv erstellen: htpasswd -c -B .htusers hsv
  • Das Passwort lautet natürlich "aufstieg"
  • Wurde auch die Datei .htusers korrekt angelegt?: ls -la /opt/scripts/schutz

vhosts bearbeiten

  • Nacheinander beide vhost-Configs öffnen:
    • nano /etc/apache2/sites-available/000-gambio.kivinet.de-le-ssl.conf
    • nano /etc/apache2/sites-available/000-gambio.kivinet.de.conf
  • Jeweils den folgenden Code einfügen: 

1
2
3
4
5
6
7
8
<Directory /var/www/html/gambiomaster>

AuthType Basic
AuthName "Geschützter Bereich - Bitte geben Sie ein Passwort ein!"
AuthUserFile /opt/scripts/schutz/.htusers
Require valid-user

</Directory>

  • /etc/init.d/apache2 restart

Den Master-Shop klonen

Wir wollen den Master-Shop nun klonen, um ihn für x SuS verfügbar zu machen. Dazu wird ein Skript benutzt, welches den Master kopiert (Datenbank und Verzeichnis).

  • nano /opt/scripts/clone
  • Füge den folgenden Code ein:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/bin/bash
anzahl=5; #Anzahl der Klone
prefix="gambio2020" #Teil es Verzeichnisnamens. Keine Grossbuchstaben hier
dbuser="dbgambiomaster1" #Datenbankuser der Vorlage (des Masters)
dbpassw="geheim123" #Datenbankpasswort f?ür alle DBs
dbmaster="dbgambiomaster" #Name der Masterdatenbank, die geclont werden soll
htmlpath="/var/www/html"
gambiomasterfolder="gambiomaster"
URL="https://gambio.kivinet.de"
webu=www-data:www-data #Webuser

echo "Master-DB exportieren"
rm /opt/${dbmaster}.sql;
mysqldump --no-tablespaces -h localhost -u${dbuser} -p${dbpassw} ${dbmaster} > /opt/${dbmaster}.sql --skip-lock-tables;

for ((i=1;i<=${anzahl};i++));
do
echo "___________________________________"
vorgang=${prefix}_$i;

echo ${vorgang};

echo "Kopiere DB von Master";
currentdb="db${prefix}_${i}";
echo "Aktuelle DB: ${currentdb}";
mysql -e "DROP DATABASE ${currentdb}";
mysql -e "DROP USER '${currentdb}'@'localhost'";
mysql -e "CREATE DATABASE ${currentdb}";
#Master-DB importieren

echo
mysql -e "CREATE USER '${currentdb}'@'localhost' IDENTIFIED BY '${dbpassw}'";
mysql -e "GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, DROP, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON ${currentdb}.* TO '${currentdb}'@'localhost' IDENTIFIED BY '${dbpassw}'";
mysql -u${currentdb} -p${dbpassw} ${currentdb} < /opt/${dbmaster}.sql

echo
echo "Kopiere Verzeichnisse";
rm -R ${htmlpath}/${vorgang};
cp -R ${htmlpath}/${gambiomasterfolder} ${htmlpath}/${vorgang};
echo
echo "Passe Datei includes/configure.php an";
echo
currentpath1="${htmlpath}/${vorgang}/includes/configure.php";
echo "Aendere Datei ${currentpath1}";
sed -i "s/define('DB_DATABASE', 'dbgambiomaster');/define('DB_DATABASE', '${currentdb}');/g" ${currentpath1};
sed -i "s/define('DB_SERVER_USERNAME', 'dbgambiomaster1');/define('DB_SERVER_USERNAME', '${currentdb}');/g" ${currentpath1};
echo
echo "Passe Datei admin/includes/configure.php an";
currentpath2="${htmlpath}/${vorgang}/admin/includes/configure.php";
echo
echo "Aendere Datei ${currentpath2}";
sed -i "s/define('DB_DATABASE', 'dbgambiomaster');/define('DB_DATABASE', '${currentdb}');/g" ${currentpath2};
sed -i "s/define('DB_SERVER_USERNAME', 'dbgambiomaster1');/define('DB_SERVER_USERNAME', '${currentdb}');/g" ${currentpath2};

echo "Cache- und Template-Ordner optimieren...";
rm ${htmlpath}/${vorgang}/cache/*.pdc
rm ${htmlpath}/${vorgang}/cache/*.css
rm ${htmlpath}/${vorgang}/cache/*.meta
rm ${htmlpath}/${vorgang}/cache/*.md5
rm ${htmlpath}/${vorgang}/cache/*.tpl
cp ${htmlpath}/${vorgang}/cache/sessions/index.html /opt/index.html
rm -R ${htmlpath}/${vorgang}/cache/sessions/*
cp /opt/index.html ${htmlpath}/${vorgang}/cache/sessions/
rm ${htmlpath}/${vorgang}/templates_c/*.php


echo "Setze Rechte neu für ${vorgang}";

chown -R ${webu} ${htmlpath}/${vorgang}
chmod -R 775 ${htmlpath}/${vorgang}

find ${htmlpath}/${vorgang} -type d -exec chmod 755 {} \;
find ${htmlpath}/${vorgang} -type f -exec chmod 644 {} \;
chmod 444 ${htmlpath}/${vorgang}/admin/includes/configure.org.php
chmod 444 ${htmlpath}/${vorgang}/admin/includes/configure.php
chmod 444 ${htmlpath}/${vorgang}/includes/configure.org.php
chmod 444 ${htmlpath}/${vorgang}/includes/configure.php
echo
echo "**Dieser Shop ist erreichbar unter ${URL}/${vorgang}"
echo
done
echo "___________________________________"
echo
echo "Setze Rechte neu für ${gambiomasterfolder}"




chown -R ${webu} ${htmlpath}/${gambiomasterfolder}
chmod -R 775 ${htmlpath}/${gambiomasterfolder}

find ${htmlpath}/${gambiomasterfolder} -type d -exec chmod 755 {} \;
find ${htmlpath}/${gambiomasterfolder} -type f -exec chmod 644 {} \;
chmod 444 ${htmlpath}/${gambiomasterfolder}/admin/includes/configure.org.php
chmod 444 ${htmlpath}/${gambiomasterfolder}/admin/includes/configure.php
chmod 444 ${htmlpath}/${gambiomasterfolder}/includes/configure.org.php
chmod 444 ${htmlpath}/${gambiomasterfolder}/includes/configure.php

  • In den Zeilen 2-10 sind entsprechende Einstellungen vorzunehmen, die selbsterklärend sein dürften.
  • Nach dem Speichern das Skript startfähig machen: chmod +x /opt/scripts/clone
  • Skript starten: /opt/scripts/clone
  • Das Skript löscht evtl. vorhandene Klone mit identischen Namen!

Lösch-Skript erstellen

  • Ein Löschskript kann wie oben erstellt werden mit folgendem Code. Wenn die Daten beim Klonen in den Zeilen 2 und 3 gleich eingegben werden, sollte alles geklonte auch wieder gelöscht werden: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash
anzahl=5;
prefix="gambio2020" #Keine Grossbuchstaben hier
htmlpath="/var/www/html"

for ((i=1;i<=${anzahl};i++));
do
echo "___________________________________"
vorgang=${prefix}_$i;

echo ${vorgang};

currentdb="db${prefix}_${i}";
echo "Loesche DB und User: ${currentdb}";

mysql -e "DROP DATABASE ${currentdb}";
mysql -e "DROP USER '${currentdb}'@'localhost'";

echo
echo "Loesche Verzeichniss ${htmlpath}/${vorgang}";
rm -R ${htmlpath}/${vorgang};
echo
done
echo "___________________________________"
echo
echo "Fertig."

No comment has been posted yet.