Tim Tepaße: Apache, SSI-Konfiguration für OS X

Beitrag lesen

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