PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : apache2: eigene Logdatei für User



Tasman
27.05.05, 13:49
Hallo,

ich habe einen apache2 Webserver im Einsatz. Mehrere User haben dort ihre Webseiten liegen.

Ist es möglich, den Usern jeweils eine eigene Logdatei (access_log und error_log) in deren Homeverzeichnissen zu Verfügung zu stellen?

Ich habe schon daran gedacht per cronjob die Hauptlogdateien in /var/log/apache2/ mittels grep auseinanderzusortieren, aber ich habe das Gefühl, dass das viel zu kompliziert ist.

Mein System läuft unter Suse 9.3.

Über Eure Hilfe würde ich mich sehr freuen!

chrigu
27.05.05, 13:52
Hi,
Wenn deine User je einen VirtualHost haben, kannst du pro VirtualHost ein anderes Logfile angeben!
Direkt in der Konfiguration des Apaches.

Gruss
Chrigu

Tasman
27.05.05, 14:09
Hallo,

danke für Deine schnelle Antwort!

Mit VirtualHosts kann ich leider nicht arbeiten, da ich keine fest IP Adresse habe.

Gibt es noch eine andere Möglichkeit?

tschloss
27.05.05, 14:31
Gibt es nicht auch name based virtual hosts?

Oder: Separate httpd´s pro "user"? Net schön, aber es ist glaube ich möglich.

Tasman
27.05.05, 14:46
Hallo,

danke für Deinen Beitrag!

Ich habe mir das Prinzip der virtuellen Webserver mal genauer angesehen. Es gibt davon 3 Arten:

1. Namensbasiert
Der Server hat genau eine feste IP Adresse. Im DNS können mehrere Namen für die mehreren Websites angelegt werden, die alle auf genau die eine verfügbare IP zeigen.

2. IP-basiert
Jeder virtuelle Webserver wird jeweils über eine eigene feste IP angesprochen.

3. Portbasiert
Jeder virtuelle Webserver wird über eine eigene Portnummer angesprochen.

Die Varianten 1 und 2 kommen wegen meiner dynamischen IP leider nicht in Frage.
Die Variante 3 könnte jedoch interessant sein. Auf die bestehenden Domainnamen der User könnte ich eine Weiterleitung an jeweils eine andere Portnummer einrichten. Ich werde mir diese Konstruktion mal genauer ansehen.

Vielen Dank nochmals für Eure Gedankenanstöße! ;)

Tasman
27.05.05, 15:11
Hallo!

[...]
3. Portbasiert
Jeder virtuelle Webserver wird über eine eigene Portnummer angesprochen.

Die Varianten 1 und 2 kommen wegen meiner dynamischen IP leider nicht in Frage.
Die Variante 3 könnte jedoch interessant sein. Auf die bestehenden Domainnamen der User könnte ich eine Weiterleitung an jeweils eine andere Portnummer einrichten. Ich werde mir diese Konstruktion mal genauer ansehen.
[...]
Diese Variante 3 ist die von tschloss vorgeschlagene. Soeben habe ich gelesen, dass es sich um dasselbe Prinzip handelt.

Das kann jedoch nicht funktionieren (zumindest wegen der Logdateien), da die Umleitung im DNS von http://EigeneDomain zwar auf die Portnummer (z.B.8081) greifen würde, jedoch nach dem 1. Zugriff wieder auf http://servername/~username zeigen würde. (Weil es sich nur um eine ganz einfache Weiterleitung handelt und der "alte" Name dann vergessen wird.)

Gibt es denn keinen Schalter für Logdateien im apache2 Konfigutations-Bereich <Directory /home/*/public_html>?

Tasman
27.05.05, 18:10
Hallo,

das Thema hat sich gerade erledigt.

Für alle, die es interessiert:

Ich habe ein Script eingericht, das im Hintergrund vor sich hin läuft. Im Prinzip kommt es dabei auf folgendes Kommando an:

tail -f -n0 /var/log/apache2/access_log | grep "/~<username>/" >> /home/<username>/log/httpd/access_log

Die Serverglobale access_log wird also ständig überwacht und falls ein Zugriff auf eine Userwebsite stattfindet, wird der Eintrag in die Userlogdatei hereinkopiert (immer hinten angehängt).
Ich weiss, das ist nicht die eleganteste Lösung, aber immerhin eine, die keinen kompletten Umbau meines Homeservers vorraussetzt.

Danke an alle, die mir mit ihren Tips geholfen haben.

Roger Wilco
28.05.05, 12:40
Mit VirtualHosts kann ich leider nicht arbeiten, da ich keine fest IP Adresse habe.
Du brauchst keine feste IP-Adresse, nur um VirtualHosts verwenden zu können. Du hast ja selbst schon festgestellt, dass es auch andere Varianten gibt, als IP-based VHosts. ;)
Dann steht in der Konfiguration eben ein "*" statt einer konkreten IP-Adresse.

Mit CustomLog (http://httpd.apache.org/docs-2.0/mod/mod_log_config.html#customlog) kannst du dann jedem Benutzer ein eigenes Access-Log und mit ErrorLog (http://httpd.apache.org/docs-2.0/mod/core.html#errorlog) ein eigenes Error-Log :ugly: zuweisen.