Apache Konfigurationstool
September 26th, 2007Ich habe mein Konfigurationstool für Apache fertig geschrieben. Da ich meine Domains nach einem festen Schema organisiere gibt es viele mehrfach vorhandenen Informationen in den VirtualHost Direktiven meiner Apache Konfiguration. Das macht das ganze umständlich erweiter- und wartbar.
Aufgabe, Ziele
Mein Konfigurationstool nimmt eine einzelne XML Datei in denen Domains und Subdomains definiert sind. Man kann den Domains/Subdomains UNIX Benutzer zuordnen, und verschiedene Module hinzufügen. Module sind kleine Apache Konfigurationsschnipsel die in die Konfigurations des VirtualHost eigefügt werden.
Das Tool nimmt 2 Parameter, den Namen der Konfigurationsdatei und einen Ordnernamen in dem die fertige Apache Konfiguration ausgegeben werden soll. Aus den Domain/Subdomain/Modul Daten wird dann eine Ordnerstruktur mit Apache Konfigurationen erstellt, sowieo eine domains.conf Datei welche alle definierten Domains lädt.
Beispiel
Beispiel Konfiguration:
<root group="users" chmod="700">
<domain name="bar.com" owner="harald">
<userconfig />
<subdomain name="foo" owner="franz">
<userconfig />
</subdomain>
</domain>
</root>
Diese Konfiguration definiert die domain bar.com im Besitz von Harald, sowie eine subdomain foo welche Franz gehört.
Anfragen an bar.com, www.bar.vom verwenden somit das DocumentRoot /home/harald/bar.com/www. Eine Anfrage an foo.bar.com wird dagegen auf /home/franz/foo.bar.com/www geleitet. Alle anderen subdomains gehen auf die entsprechenden Ordner in /home/harald/bar.com/.
Das praktische hierbei ist, dass jede subdomain wieder eigene subdomains enthalten kann, so wird test.foo.bar.com in den Ordner /home/franz/foo.bar.com/test/ geleitet. So ist die Konfiguration sehr flexibel, und unterstützt auch Domains welche Subdomains bei verschiedenen Usern haben.
Das Konfigurationstool erstellt auch automatisch alle Ordner und setzt die Berechtigungen entsprechend den Werten der owner, group, chmod Attribute (Die Attribute werden an innere Elemente vererbt, so ist für foo.bar.com das Attribut group=”users” gesetzt).
Das Modul <userconfig /> erstellt und liest die Datei /home/USERNAME/(SUB-)DOMAINNAME/config.xml und fügt die Elemente in die Konfiguration ein. Hier kann der Inhaber der Domain weitere Module laden. z.B.:
<config>
<enableHtAccessFiles />
<log />
<auth allowGroup="test" />
</config>
Beim nächsten Aufruf des Tools werden diese Module berücksichtigt und die Logfiles, user/group Dateien für die Autentifizierung erstellt und die Konfiguration angepasst.
Um beim neuerstellen der Konfiguration die alte Konfiguration nicht zu zerstören und den Apache HTTPD in die ewigen Jagdgründe zu schicken werden Backups der alten Konfiguration in dem Zielordner mit einer angehängten Zahl gespeichert.
Hier findet ihr auch eine eine Auflistung der verfügbaren Module für die Benutzer, inkl einer kleinen Übersicht wie die Ordnerstruktur ihrer Domains aufgebaut ist.
PS: Ich hatte nicht viel Zeit, Rechtschreibung und Zeichensetzung sind also frei erfunden und stehen in keinem Zusammenhang mit der deutschen Sprache.
October 2nd, 2007 at 2:04 pm
Klingt ja sehr interessant, gibts irgendwo mehr Infos dazu ? Vielleicht auch das Tool selbst ? Ich bin aktuell auch am überlegen wie ich mir am besten und einfachsten ein Tool zum verwalten meiner Vhosts basteln ohne jedes mal händisch dran zu müssen, auch um auf die schnelle Änderungen an mehreren Vhosts zu machen (php-einstellungen wie sessiontemp + uploadtemp + sendmail-settings … etc). Ein Ansatz auf xml-basis in kombination mit einem php-script das ich über die Shell ausführe waren meine bisherigen Ideen, umgesetzt habe ich allerdings bis jetzt noch nichts.
mfg
robo47
October 2nd, 2007 at 2:26 pm
Gibt leider noch nicht mehr Infos dazu.
Ich verwende es momentan bei mir auf dem Server und entdecke so nach und nach ein paar Problemchen die damit auftreten und behebe diese.
Das Tool ist in Java geschrieben und über Textdateien (Template, inkl einer Liste der zu erstellenden Dateien) erweiterbar. Ich lad es die Tage ins Subversion Repository, dann kannst es dir gerne mal anschauen. Sonst schreib mich einfach mal im ICQ (154 231 968) an.
Momentan kann ist in den Templates doch noch das ein oder andere Serverspezifische an Konfigurationsschnipseln drin (z.B. ist die SSL Konfiguration recht schwierig). Aber ich wollte zusehen dass man das noch irgendwie Data-driven gestalten kann damit es einfacher auf vorhandene Systeme anzuwenden ist.