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.
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).
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 Includes
im Options
Abschnitt. 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:
Entkommentierte die Zeile für module_include
:
LoadModule include_module libexec/apache2/mod_include.so
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
Diese Zeilen gefunden und auskommentiert:
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
Das bedeutet, dass .shtml
Dateien 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!
mmmmmm
Fahrrad