Debian - Windows-Freigabe dauerhaft mounten - Joomla

Ziel 1

Auf einem Debian Server ist Joomla mit der Erweiterung 'Easy-Folder-Listing' installiert. Es soll erreicht werden, dass eine Ressource des Windows-Dateiservers auf dem Linux-Server gemountet wird und innerhalb des Joomla-Systems in das Folderlisting eingebunden erscheint. Das Easy-Folder-Listing muss natürlich ebenfalls entsprechend eingerichtet werden, was ich an dieser Stelle nicht beschreibe. Änderungen in den betreffenden Inhalten der Windows-Ordnern werden damit im Intranet sichtbar, wenn die betreffende Seite aufgerufen oder deren Inhalt aktualisiert wird.

Linux mountet einen freigegebenen Windows-Ordner innerhalb seiner Apache-Verzeichnisse. Dadurch können diese Inhalte mit Easy-Folder-Listung im Websystem angezeigt werden.

Die Benutzer/innen, die Änderungsrecht in den betreffenden Windows-Verzeichnissen haben, können damit gleichzeitig dafür sorgen, dass die Dateien im Intranet 'mit aktualisiert werden' - so sieht es für die User aus. Tatsächlich schaut Linux lediglich in den Ordner hinein.

Frame-Sets sind im Internet nicht mehr willkommen. Im Intranet ergeben sich da immer noch sehr schöne Möglichkeiten.

Praktisches Beispiel

Eine Datenbanksystem erstellt über die Aufgabenverwaltung in Windows regelmäßig (alle fünf Minuten) eine Auswertung. Diese Daten immer in der aktuellen Ansicht benötigt. Im Alltag wird gern vergessen, die Auswertung erneut zu öffnen oder deren Ansicht zu aktualisieren.

Lösung

Die Ergebnisse der Auswertung werden nach HTML in ein unter Linux gemountetes Verzeichnis exportiert.

Diese exportierte Datei ist per Iframe in ein Frameset eingebunden, befindet sich tatsächlich innerhalb der in Linux gemounteten Verzeichnisstruktur.

Das Frameset ist innerhalb des Joomla-System als externe URL eingebunden.

Das Frameset ist so angelegt, dass dessen Ansicht bzw. die Auswertung alle zwei Minuten aktualisert wird.

Den Umweg über das Frameset muss deswegen gegangen werden, weil die exportierte HTML-Datei jedesmal überschrieben wird. So eine statische Datei aktualisiert sich nicht von allein und die Anwender/innen freuen sich sehr, wenn der Inhalt 'immer aktuell' ist.

Anweisung zum automatischen Aktualisieren
<META HTTP-EQUIV="refresh" CONTENT="120; auswertung.html>

Erläuterung

Das Joomla-System selbst ist auf dem Debian-Server installiert unter: '/var/www/cms/'

Innerhalb des Joomla-Systems gibt es einen Ordner 'images'. Innerhalb dieses Ordners soll/en der/die gemountete/n Windowsordner erscheinen. Das erreiche mit der Erweiterung 'Easy-Folder-Listing'. Damit diese Ordner als nicht zur Joomla-Installation gehörend zu erkennen sind, habe ich sie am Anfang mit 'mnt_' benannt.

Ordnerstruktur auf Debian mit installiertem MySql und Joomla 3.6.5

/var/www/cms/
/var/www/cms/administrator/
[...]
/var/www/cms/images/
/var/www/cms/images/mnt_beispielmount/
/var/www/cms/images/mnt_anderer_beispielmount/
[...]

In einem dieser gemounteten Ordner ist dann die Datei 'auswertung_iframe.html'.

Diese als externe URL eingebundene HTML-Datei (auswertung-iframe.html) wiederum bindet die exportierte HTML-Datei mit der Auswertung ein (auswertung.html).

Aufbau Iframe-Datei
<!DOCTYPE html>
<html lang="de">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Seitentitel hier eintragen</title>
<STYLE TYPE="text/css">
*       {margin:0;padding:0;}
html, 
body    {height:100%;  width:100%; overflow:hidden; margin-left:5px; margin-right:5px; margin-top:5px; margin-bottom:5px;}
table   {height:100%;  width:100%; table-layout:static; border-collapse:collapse;}
iframe  {float:left; position: absolute; height:95%; width:99%; border: none}
.header {border-bottom:1px solid #000}
.content {height:100%;}
p
{ 
  font-family:Arial,sans-serif, Helvetica, sans-serif; color:#000000; font-size:12pt; font-weight: regular; 
}    
</STYLE>
<body>
<p><strong>Angezeigte Seitenüberschrift</strong></p>
<p>Der Inhalt dieser Seite wird automatisch aktualisiert.</p>
  <iframe src="auswertung.html" /></iframe>
<META HTTP-EQUIV="cache-control" CONTENT="no-cache">
<META HTTP-EQUIV="refresh" CONTENT="120; auswertung_iframe.html">
</body>
</html>

Hierbei werden die Daten durch eine Windows-Anwendung aktualisert, eben die Auswertung. Die tatsächliche Ansicht wird über das Kommando im Iframe aktuell gehalten.

An dieser Stelle kommt man ohne 'rsync' und ohne 'crontab' zurecht.

Ziel 2

Auf einem Linux-Computer soll eine Windows-Freigabe einer Windows-Domäne gemountet werden. Wenn der Linux-Computer einmal neu gestartet werden sollte, soll die Freigabe wieder gemountet sein. Die gemountete Freigabe soll auf dem Linux-Computer stets an der gleichen Stelle im Verzeichnisbaum erscheinen. Dadurch wäre sicher gestellt, dass zum Beispiel mit 'cron' und 'rsync' regelmäßig die Dateien snychronisiert werden können.

Nützlich ist auch die Funktion, ohne dass man rsync verwendet. So lassen sich die Inhalte eines gemounteten Ordners in eine Website einbinden. Zusammen mit 'fancyindexing' (andere Anleitung) erhält man so eine Website, die 'dynamisch' immer die aktuellen Ordnerinhalte anzeigt, wenn die betreffende Adresse aufgerufen wird.
Konkrete Anwendung: Die gemounteten Verzeichnisse befinden sich auf einem Windows-Dateiserver. Anwenderinnen ändern darin die Inhalte. Diese Inhalte sind dann über das Intranet jederzeit aktuell einsehbar.

Das kann als eine einfache Form der Datensicherung verwendet.

Vorbereitung Ziel 2

apt-get install rsync

Vorbereitung Ziel 1 und Ziel 2

Auf dem Linux-Computer wird ein Verzeichnis erstellt, in dem die Daten erscheinen sollen. Dabei steht 'beispielmount' für den Ordnernamen beziehungweise die Freigabe auf dem Windows-Server, unter dem die Daten dann auf dem Linux-Computer zu finden sein sollen.

Ordner auf dem Linux-System erstellen

# mkdir /var/www/cms/images/mnt_beispielmount

Software auf dem Linux-Computer installieren

# apt-get install cifs-utils

Um die Freigabe mounten zu können, muss das Linux-System Benutzername und Passwort an das Windows-System übermitteln. Diese Informationen sollen, um die Sicherheit zu erhöhen, in einer gesonderten Datei gespeichert werden. Hierfür kann ein vorhandenes oder eigens dafür angelegtes Windows-Benutzerkonto verwendet werden. Die Datei wird angelegt.

# touch /root/.smbzugang

Inhalt

'winbenutzer' steht für den Namen des Benutzers unter Windows.
'password' steht für das Passwort, mit welchem der Windows-Benutzer sich an der Domäne anmeldet. Klar, dass dieser Benutzer wenigstens Leserecht auf die Windows-Freigabe haben muss. In der Praxis habe ich dafür einen Benutzer angelegt, den ich mit Blick auf die Joomla-Installation 'verzeichnisbrowsing' genannt habe.

username=winbenutzer
password=winpasswort

Hinweis

Falls(!) die betreffende Datei nicht im root-Verzeichnis gespeichert wurde, ist es ratsam, die Berechtigungen für die Datei .smbzugang so zu ändern, so dass sie nicht von jedermann gelesen werden kann.

Beispiel

# chmod 600 /home/linuxbenutzer/.smbzugang

/etc/fstab

Nun werden die Zugangsdaten noch in '/etc/fstab' eingetragen, damit die Freigabe wie gewünscht gemountet werden kann. Am Ende gibt es noch eine Ergänzung. Alles wird in eine Zeile geschrieben. Umbrüche sind hier platzbedingt.

# Windows-Freigabe beim Starten in die Joomla-Installation mounten
//winservername/winfreigabename /var/www/cms/images/mnt_beispielmount cifs credentials=/root/.smbzugang,iocharset=utf8

Anmerkung: Wenn ich es genau so eingetragen habe, wie in https://wiki.ubuntu.com/MountWindowsSharesPermanently angegeben, erhielt ich die folgende Meldung. Deswegen habe ich es so eingetragen, wie oben geschrieben.

mount error (95): Operation not supportet
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

Freigaben manuell (erneut) mounten

Über die Konsole werden die Ressourcen bei Bedarf neu gemountet.

# mount -a

Die Dateien der Windows-Freigabe sollten nun an der betreffenden Stelle im Joomla-System mit 'Easy-Folder-Listing' unter 'var/www/cms/images/mnt_beispielmount/' beziehungsweise '/mnt/beispielmount' auf dem Linux-Computer zu sehen sein. Je nachdem, welche Konfiguration vorliegt.

Die Verbindung kann wieder aufgehoben werden mit

# umount /mnt/beispielmount

Abschließend wird der Linux-Computer einmal neu gestartet, um zu prüfen, ob auch alles korrekt funktioniert.

Hinweis

Bitte sich immer vergegenwärtigen, dass man über die Konsole des Linux-Rechners die Inhalte auf dem Windows-Dateiserver sieht. Also an dieser Stelle den Ordner mit den Dateien darin in Ruhe lassen. Immer erst die Ordner unmounten und die Ansicht aktiualisieren, prüfen, dass die 'leer/unmounted' sind, bevor man damit etwas tut. Sonst hat man schnell die Dateien vom Windows-Dateiserver gelöscht.

Ziel 2

rsync

Beispieleintrag in '/etc/crontab'

Hier wird davon ausgegangen, dass ein beliebiger Windows-Ordner unter Linux gemountet wurde. Das Verfahren ist, wie oben beschrieben. Die Pfade sind andere und der Eintrag in '/etc/fstab' muss entsprechend geändert werden.

Hier soll erreicht werden, dass - zum Beispiel als eine Art einfacher Sicherung/Replikation Daten auf dem Windows-Server auf das Linux-System übertragen werden.

Eintrag in '/etc/crontab'

5 10 * * * root rsync -avz --delete /mnt/beispielmount /var/www/ein/linuxordner

Täglich um 10:05 Uhr werden allen Dateien aus /mnt/beispielmount überprüft und mit der Stelle im Linux-System abgeglichen. In /mnt/beispielmount nicht länger vorhandene Dateien werden gelöscht(!) [--delete] und neu hinzugekommene Dateien werden kopiert nach /var/www/ein/linuxordner.

Ohne '--delete' werden alle neu hinzukommenden oder die geänderten Dateien kopiert. Die Datenmenge auf dem Linux-System wird also zunehmen, weil die neuen Dateien des Windows-Systems stets hinzu kopiert werden. Das eignet sich gut als 'einfache Sicherung'. Man kann gegebenenfalls eine von dem Windows-System versehentlich gelöschte Datei zurück kopieren. Anleitung lesen mit

$ man rsync

Quellen
http://debian-handbook.info/browse/stable/sect.windows-file-server-with-samba.html
https://wiki.ubuntu.com/MountWindowsSharesPermanently
http://wiki.ubuntuusers.de/Samba_Client_cifs
http://www.thomas-krenn.com/de/wiki/Windows_Freigabe_unter_Linux_mounten