Apache, Mac OS X, Konfiguration für OS X
Peter de Leuw
- webserver
Hallo,
ich hake noch mal am Thread http://forum.de.selfhtml.org/archiv/2006/3/t125735/ ein. Ich kämpfe momentan auch mit der Konfiguration von Apache auf meinem Mac mit OS X. SSI will einfach nicht funktionieren. Ich habe es so gemacht, wie im genannten Thread geschildert. DocumentRoot ist auf dem voreingestellten Wert
DocumentRoot "/Library/WebServer/Documents", dazu
<Directory "/Library/WebServer/Documents">
Die Seiten finde ich nun unter http://localhost/~<user>
Stelle ich DocumentRoot jetzt um auf
DocumentRoot "/Users/user/WebSites/Projekt1", dazu
<Directory "/Users/user/WebSites/Projekt1">
(wobei "user" durch den wahren Benutzernamen ersetzt ist), funktioniert es. Nicht wirklich gut, weil ich auch noch Projekt2 und Projekt3 habe. Ständig im Terminal DocumentRoot und die entsprechende Zeile <Directory ...> umzustellen, macht nicht wirklich Spaß.
Wo liegt der Fehler?
Danke und Gruß,
Peter
Sorry, sollte im Subject natürlich "Konfiguration für SSI" heißen :-(
Peter
hallo,
Wo liegt der Fehler?
In deiner Fragestellung. "Ständig im Terminal DocumentRoot und die entsprechende Zeile <Directory ...> umzustellen, macht nicht wirklich Spaß" ist zwar beinahe verständlich, worin der Rest deiner Frage besteht, ist es jedoch nicht. Warum willst du immer hin- und herwechseln? Was haben dir deine doch gewiß mittlerweile absolvierten Tests mit mod_rewrite gezeigt?
Grüße aus Berlin
Christoph S.
Hallo,
DocumentRoot "/Users/user/WebSites/Projekt1", dazu <Directory "/Users/user/WebSites/Projekt1"> (wobei "user" durch den wahren Benutzernamen ersetzt ist), funktioniert es. Nicht wirklich gut, weil ich auch noch Projekt2 und Projekt3 habe. Ständig im Terminal DocumentRoot und die entsprechende Zeile <Directory ...> umzustellen, macht nicht wirklich Spaß.
Wenn ich Dich recht verstehe, plagt Dich, dass Du unter dem bei Mac OS X mitgelieferten Apachen in den User-Directories (/~user/) keine SSI Untersttzung hast. Wenn ja, dann hast Du wohl mehrere Möglichkeiten:
Erste Möglichkeit: Du änderst den ganzen DocumentRoot. Damit hast Du ja schon angefangen, wobei Du das auf Dein fiktives „Projekt1“ begrenzt hast. Niemand hindert Dich das auf so ungefähr so etwas umzustellen:
DocumentRoot "/Users/username/WebSites"
<Directory "/Users/username/WebSites">
Options Includes
# Und viele weitere Einstellungen ....
</Directory>
Dann zeigt bei Dir http://localhost/ auf Dein Verzeichnis ~/WebSites in Deinem Home-Verzeichnis anstatt auf einen relativ obskuren Ort sonstwo im Dateisystem. Dein einziges Problem war, dass Du die Directory-Direktive auf ein Projekt begrenzt hast.
(Ich gehe davon aus, dass Dein „WebSites“ ein eigener, selbst erstellter Ordner ist im Gegensatz zu den von Mac OS X schon hingepflanzten Order ~/Sites)
Zweite Möglichkeit: Du nutzt die User-Directories von Apache, also das Verzeichnis auf das http://localhost/~username/ zeigt. In meiner Konfigurationsdatei des von Mac OS X mitgelieferten Apachen gibt es dazu zwei relevante Einträge:
<IfModule mod_userdir.c>
UserDir Sites
</IfModule>
Das sagt: Wenn das Modul „mod_userdir“ geladen ist (und das wird es), dann dient der Ordner ~/Sites im Heimverzeichnis der jeweiligen User als Quelle für die gezeigten Inhalte. Im Mac OS X Dateisystem liegt aber nun /Users/username/Sites ganz woanders als /Library/WebServer/Documents – für das Du in der <Directory>-Direktive die Angabe gemacht hast, SSI zu aktivieren (das „+Includes“). Die User-Directories haben in der Mac-Apachen-Konfiguration einen eigenen Container mit eigenen Einstellungen, so dass Deine woanders für ein anderes Verzeichnis gemachten Einstellungen nicht zum wirken kommen. So sieht es zumindest bei mir aus:
<Directory /Users/*/Sites>
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
# weitere Einstellungen
</Directory>
... und ich kann mich nicht erinnern jemals Änderungen daran gemacht zu haben, ausser das vielleicht auszukommentieren. Vielleicht ist es das auch bei Dir. Dir fällt da eine relevante Direktive auf, das Options IncludesNoExec, das besagt, dass Includes (SSI) ausgeführt werden, allerdings nicht das Exec-Kommando. Eventuell bist Du darüber gestolpert?
Um volle SSI-Möglichkeiten für die User-Directories zu aktivieren, solltest Du auf jeden Fall obige Directory-Direktive nicht kommentiert (soll heissen: aktiv) haben und in dieser die Direktive „Options Includes“ nutzen.
Dritte Möglichkeit: Du könntest SSI einfach für alle Verzeichnis, d.h. global für den Apachen aktivieren. Dazu musst Du die Direktive „Options Includes“ einfach ausserhalb jeglicher Directory- oder sonstiger Container-Direktiven notieren – und darauf achten, dass es für die gewünschten Verzeichnisse diese Direktive nicht überschreiben. Das heisst aber schon, Du solltest Dich etwas mit Apache-Konfiguration auskennen. Deine anscheinende Unkenntnis über Directory-Direktiven lässt darauf schließen, dass Dir das eher ein wildes Terrain ist. Ignoriert man all die Feineinstellungen für Apache-Interna (Abschnitt 1) ist das aber halb so schlimm. Du solltest auf jeden Fall in die Anleitung reinschauen, die wird mitgeliefert und liegt bei Dir unter http://localhost/manual/ – soweit nichts verändert wurde. Eventuell hilft Dir auch Christophs Artikel über die httpd.conf weiter.
Vierte Möglichkeit: Dass Du explizit Dein „Projekt1“ zum DocumentRoot gemacht hast, sagt mir, dass Du es gerne hättest, wenn Deine verschiedenen in der Entwicklung befindlichen Projekte als Root, d.h. direkt unter http://adresse/ erscheinend hättest. Langfristig praktischer zur Entwicklung ist es da, sich eigene, nur lokal geltende Adressen zu basteln, http://projekt1.localhost/ oder http://projekt42.dev/. Dazu muss man mit Virtual Hosts agieren. Für Apache- und Mac-Frischlinge gibt es da ein nettes Tutorial, wie man das relativ bequem unter OS X einrichten kann. Das Tutorial ist zwar schon etwas älter, aber immer noch aktuell.
Du musst natürlich wieder SSI für die hier neuen Virtual Hosts Container Direktiven frei schalten. Du siehst: Um etwas Verständnis der Apache-Konfiguration kommst Du nicht herum; lass Dich noch mal auf obige Quellen hinweisen.
Tim
hallo Tim,
Eventuell hilft Dir auch Christophs Artikel über die httpd.conf weiter.
Ich fürchte, das tut er in diesem Fall nicht (ich kenne den Artikel schließlich einigermaßen), aber ich will natürlich beileibe niemanden davon abhalten, ihn zu konsultieren. Für die geplante Neufassung wäre mir allerdings Feedback sehr willkommen - zum Beispiel in der Form: "da muß noch was zu SSL genauer erklärt werden, und das bißchen Krempel für SSI reicht doch wirklich nicht" (man darf das auch höflicher und in stärker differenzierter Form artikulieren).
Wenn es um SSI geht, so könnte vielleicht die zugehörige Seite in SELFHTML hilfreich sein (für deren aktuell veröffentlichte Fassung ich ja auch zuständig bin).
Grüße aus Berlin
Christoph S.
Hallo,
danke, Tim, Deine Hinweise waren sehr hilfreich. Ich habe, nachdem ich die Möglichkeiten eins bis drei erfolglos ausprobiert habe, nun Möglichkeit vier genommen. Das passte ganz gut, weil die Virtual Hosts bei mir sowieso sinnvoll sind und ich sie später auch einrichten wollte.
Vierte Möglichkeit: Dass Du explizit Dein „Projekt1“ zum DocumentRoot gemacht hast, sagt mir, dass Du es gerne hättest, wenn Deine verschiedenen in der Entwicklung befindlichen Projekte als Root, d.h. direkt unter http://adresse/ erscheinend hättest. Langfristig praktischer zur Entwicklung ist es da, sich eigene, nur lokal geltende Adressen zu basteln, http://projekt1.localhost/ oder http://projekt42.dev/. Dazu muss man mit Virtual Hosts agieren. Für Apache- und Mac-Frischlinge gibt es da ein nettes Tutorial, wie man das relativ bequem unter OS X einrichten kann. Das Tutorial ist zwar schon etwas älter, aber immer noch aktuell.
Meine config sieht nun so aus (auskommentierte Zeilen weitgehend gelöscht):
NameVirtualHost localhost:80
<VirtualHost 127.0.0.1>
DocumentRoot /Library/WebServer/Documents
ServerName localhost
<Directory /Users/*/Sites>
Options MultiViews Indexes SymLinksIfOwnerMatch Includes ExecCGI
</Directory>
</VirtualHost>
<VirtualHost 127.0.0.1>
DocumentRoot /Library/WebServer/Documents
ServerName 127.0.0.1
<Directory /Users/*/Sites>
Options MultiViews Indexes SymLinksIfOwnerMatch Includes ExecCGI
</Directory>
</VirtualHost>
<VirtualHost 127.0.0.1>
DocumentRoot /Users/pdl/Sites/projekt1
ServerName www.projekt1.dev
<Directory /Users/*/Sites>
Options MultiViews Indexes SymLinksIfOwnerMatch Includes ExecCGI
</Directory>
</VirtualHost>
<VirtualHost 127.0.0.1>
DocumentRoot /Users/pdl/Sites/projekt2
ServerName www.projekt2.dev
<Directory /Users/*/Sites>
Options MultiViews Indexes SymLinksIfOwnerMatch Includes ExecCGI
</Directory>
</VirtualHost>
cgi-Scripts laufen so auch, jetzt fehlt nur noch die Auswertung von .htaccess-Dateien. Die klemmt noch irgendwo, .htaccess wird ignoriert.
Gruß,
Peter