Serverseitige Includes auf einem iMac

Ich habe ein Jahr lang keine Möglichkeit gefunden, SSI (Server Side Includes) auf meinem iMac mit dem in server.app enthaltenen Apache-Webserver auszuführen.

Ich frage mich, ob die Server-App serverseitige Einbindungen in eine Website zulässt, die von Apache auf High Sierra gehostet wird.

Antworten (2)

Nein. Tatsächlich entfernt Apple die Webserver-Funktionalität in naher Zukunft vollständig aus der Server-App und dokumentiert, wie Sie Ihre Daten zu Apache migrieren würden, um Webseiten bereitzustellen.

Das obige PDF enthält die Seiten 22 bis 32, die der Migration von Daten auf einen Open-Source-Webserver gewidmet sind. Wenn Sie Apache mögen, ist das Homebrew-Tool möglicherweise gut geeignet, um den Installations-, Patch- und Dienststatus zu verwalten (den Webserver auf Befehl oder beim Booten stoppen / starten / neu starten).

Von dort aus sind Sie auf sich allein gestellt (oder müssen eine geflogene Frage stellen - möglicherweise auf einer anderen Website darüber, wie Sie das gewünschte SSI auf der von Ihnen gewählten Version des Webservers aktivieren können).

Ist Homebrew hier das Beste, da Apache besser als eigener Benutzer ausgeführt werden würde, nicht als Installer
Das ist ein sehr guter Punkt, @Mark, den ich qualifiziert habe, könnte gut für die Installation, das Patchen und die Dienstkontrolle sein. Hätte ich Anfängergebrauch sagen sollen? Ich kenne niemanden, der sehr technisch versiert ist und eine Server-App verwendet hat, also habe ich mich auf die ersten paar Male eingestellt, die jemand so eingerichtet hat.

Ich habe das erst heute zum Laufen gebracht. Ich habe die macOS Server-App nicht verwendet. Allerdings hatte mein System bereits Apache 2.4 drauf. Ich verwende macOS 10.13.5 (17G65) alias High Sierra.

Ich musste zuerst den Anweisungen hier folgen , um den Server zum Laufen zu bringen. Beachten Sie, dass ich mich nicht um den PHP-Abschnitt gekümmert habe, weil ich diese Funktionalität nicht benötige, und ich habe mich auch nicht darum gekümmert, mehrere Sites einzurichten. Es ging also im Wesentlichen darum, eine index.html-Datei in mein Verzeichnis ~/Sites zu legen, das bereits existierte.

Als nächstes konfigurierte ich Apache wie in Abschnitt 3 des obigen Dokuments beschrieben. Ich habe die /etc/apache2/users/myusername.conf erstellt und Folgendes hinzugefügt:

<Directory "/Users/username/Sites/">
  AllowOverride All
  Options Includes Indexes MultiViews FollowSymLinks
  Require all granted
</Directory>

Beachten Sie das Extra Includesim OptionsAbschnitt. Das ist die erste Voraussetzung, um serverseitige Includes zum Laufen zu bringen. Beachten Sie auch, dass, wenn Sie wie in den Apache-Dokumenten vorgeschlagen schreiben +Includes, es stillschweigend fehlschlägt. Das ist mir passiert. Entweder müssen alle Optionen das Symbol haben +oder keine darf es haben.

Als nächstes habe ich /etc/apache2/httpd.conf auf folgende Weise bearbeitet:

  1. Entkommentierte die Zeile für module_include:

    LoadModule include_module libexec/apache2/mod_include.so

  2. Kommentieren Sie die anderen in den obigen Dokumenten vorgeschlagenen Module nicht aus:

    LoadModule authz_host_module libexec/apache2/mod_authz_host.so

    LoadModule authz_core_module libexec/apache2/mod_authz_core.so

    LoadModule userdir_module libexec/apache2/mod_userdir.so

    LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so

    Include /private/etc/apache2/extra/httpd-userdir.conf

    Include /private/etc/apache2/extra/httpd-vhosts.conf

  3. Diese Zeilen gefunden und auskommentiert:

    AddType text/html .shtml

    AddOutputFilter INCLUDES .shtml

Das bedeutet, dass .shtmlDateien für Server-Side-Includes verarbeitet werden

Ich glaube, das ist alles, was ich getan habe. Beachten Sie, dass Sie in Console.app unter dem Abschnitt nachsehen können /var/log. Wenn Sie das öffnen, befindet sich darin ein weiterer Ordner mit dem Namen apache2. Wenn Sie darauf klicken, gibt es mehrere Apache-Protokolle. Wie oben erwähnt, sind sie spärlich und teilen Ihnen nicht jeden aufgetretenen Fehler mit, aber einige. Ich habe das Problem schließlich entdeckt, indem ich Folgendes getan habe:

apachectl -M

und zu sehen, dass es Fehler in der Ausgabe dieses Befehls gab, die zu genau der Zeile in den Konfigurationsdateien führten, die fehlerhaft war. Das war viel hilfreicher!