5. Systemstrategien für kleine und Nur-Lese-Umgebungen

In Abschnitt 3, „Die rc-Subsysteme und nur-Lese Dateisysteme“ wurde darauf hingewiesen, dass das /var-Dateisystem von /etc/rc.d/var konstruiert wurde und die Präsenz eines Nur-Lese-Wurzeldateisystems Probleme mit vielen in FreeBSD gebrächlichen Softwarepaketen verursacht. In diesem Artikel werden Vorschläge für das erfolgreiche Betreiben von cron, syslog, Installationen von Ports und dem Apache-Webserver unterbreitet.

5.1. cron

Während des Bootvorgangs wird /var von /etc/rc.d/var anhand der Liste aus /etc/mtree/BSD.var.dist gefüllt, damit cron, cron/tabs, at und ein paar weitere Standardverzeichnisse erstellt werden.

Jedoch löst das noch nicht das Problem, Crontabs über Neustarts des Systems hinaus zu erhalten. Wenn das System neu gestartet wird, verschwindet das /var-Dateiystem, welches sich im Hauptspeicher befunden hat und jegliche Crontabs, die Sie hatten werden ebenfalls verschwinden. Aus diesem Grund besteht eine Lösung darin, Crontabs für diejenigen Benutzer zu erstellen, die diese auch benötigen. Dazu sollte das /-Dateisystem lesend und schreibend eingehängt und diese Crontabs an einen sicheren Ort kopiert werden, wie beispielsweise /etc/tabs. Fügen Sie dann eine Zeile an das Ende der Datei /etc/rc.initdiskless hinzu, die diese Crontabs in /var/cron/tabs kopiert, nachdem dieses Verzeichnis während der Systeminitialisierung erstellt wurde. Sie werden auch eine Zeile hinzufügen mössen, welche die Besitzer und Berechtigungen auf diesen Verzeichnissen, die Sie erstellen und den dazugehörigen Dateien, die Sie mittels /etc/rc.initdiskless kopieren, setzen.

5.2. syslog

Die Datei syslog.conf spezifiziert den Ort von bestimmten Logdateien, welche in /var/log existieren. Diese Dateien werden nicht von /etc/rc.d/var während der Systeminitialisierung erstellt. Aus diesem Grund müssen Sie irgendwo in /etc/rc.d/var nach dem Abschnitt, der die Verzeichnisse in /var erstellt, eine Zeile ähnlich der folgenden hinzufügen:

# touch /var/log/security /var/log/maillog /var/log/cron /var/log/messages
# chmod 0644 /var/log/*

5.3. Installation von Ports

Bevor die notwendigen Änderungen erkärt werden, einen Ports-Baum zu verwenden, ist es notwendig, Sie an die Nur-Lese-Besonderheit Ihres Dateisystems auf dem Flash-Medium zu erinnern. Da dieses nur lesend verfügbar ist, müssen Sie es vorübergehend mit Schreibrechten ausstatten, indem Sie die mount-Syntax, wie in Abschnitt 3, „Die rc-Subsysteme und nur-Lese Dateisysteme“ dargestellt wird, verwenden. Sie sollten immer diese Dateisysteme erneut mit nur-Lese-Rechten einhängen wenn Sie damit fertig sind - unnötige Schreibvorgänge auf dem Flash-Medium kann dessen Lebenszeit erheblich verkürzen.

Um es zu ermöglichen, in das Ports-Verzeichnis zu wechseln und erfolgreich make install auszuführen, müssen wir ein Paketverzeichnis auf einem Nicht-Hauptspeicherdateisystem erstellen, welches die Pakete über Neustarts hinweg im Auge behält. Weil es sowieso nötig ist, Ihre Dateisysteme mit Lese-Schreibrechten für die Installation eines Pakets einzuhängen, ist es sinnvoll anzunehmen, dass ein Bereich Ihres Flash-Mediums ebenfalls für Paketinformationen, die darauf abgespeichert werden, verwendet wird.

Erstellen Sie zuerst ein Verzeichnis für die Paketdatenbank. Normalerweise ist dies /var/db/pkg, jedoch können wir es dort nicht unterbringen, da es jedesmal verschwinden wird, wenn das System neu gestartet wird.

# mkdir /etc/pkg

Fügen Sie nun eine Zeile in /etc/rc.d/var hinzu, welche das /etc/pkg-Verzeichnis mit /var/db/pkg verknüpft. Ein Beispiel:

# ln -s /etc/pkg /var/db/pkg

Nun wird jedes Mal, wenn Sie Ihre Dateisysteme mit Lese-Schreibrechten einbinden und ein Paket installieren, der Befehl make install funktionieren und Paketinformationen werden erfolgreich nach /etc/pkg geschrieben (da zu diesem Zeitpunkt das Dateisystem mit Lese-Schreibrechten eingebunden ist), welche dann stets dem Betriebssystem als /var/db/pkg zur Verfügung stehen.

5.4. Apache Webserver

Anmerkung:

Die Anweisungen in diesem Abschnitt sind nur notwendig, wenn Apache so eingerichtet ist, dass dieser seine PID oder Protokollierungsinformationen ausserhalb von /var ablegt. Standardmässig bewahrt Apache seine PID-Datei in /var/run/httpd.pid und seine Protokolldateien in /var/log auf.

Es wird nun davon ausgegangen, dass Apache seine Protokolldateien in einem Verzeichnis namens apache_log_dir ausserhalb von /var speichert. Wenn dieses Verzeichnis auf einem nur-Lese-Dateisystem existiert, wird Apache nicht in der Lage sein, Protokolldateien zu speichern und wird vermutlich nicht richtig funktionieren. Wenn dies der Fall ist, muss ein neues Verzeichnis zu der Liste der Verzeichnisse in /etc/rc.d/var hinzugefügt werden, um dieses in /var zu erstellen und um apache_log_dir nach /var/log/apache zu verknüpfen. Es ist auch nötig, Berechtigungen und Besitzer auf diesem neuen Verzeichnis zu setzen.

Fügen Sie zuerst das Verzeichnis log/apache zu der Liste von Verzeichnissen hinzu, die in /etc/rc.d/var angelegt werden sollen.

Danach tragen Sie die folgenden Befehle in /etc/rc.d/var nach dem Abschnitt zum Erstellen der Verzeichnisse ein:

# chmod 0774 /var/log/apache
# chown nobody:nobody /var/log/apache

Schliesslich löschen Sie das bestehende apache_log_dir Verzeichnis und ersetzen es mit einer Verknüpfung:

# rm -rf apache_log_dir
# ln -s /var/log/apache apache_log_dir

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.

Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.