Apache läuft nicht ;)

heinetz

Aktives Mitglied
Thread Starter
Dabei seit
07.09.2007
Beiträge
695
Reaktionspunkte
13
Hallo Forum,

ich versuche, seine einiger Zeit, mir eine neue Entwicklungsumgebung mit homebrew aufzusetzen. Leider lässt sich der Apache nicht starten und ich weiss nicht, wo ich nach dem Fehler suchen soll.
Ich gehe dabei nach dieser Anleitung vor und versuche das System auf einem fast jungfräulichen OS X 10.11.6 zu installieren. Wesentliche ist wohl der Schritt:

brew install -v homebrew/apache/httpd22 --with-brewed-openssl --with-mpm-event

Das erste, was mir eigenartig erscheint ist Folgendes:
Wenn ich den Webserver mit als homebrew-service starte, gibt es keine Fehlermeldung

$ brew services start httpd22
==> Successfully started `httpd22` (label: homebrew.mxcl.httpd22)


Wobei hingegen apachectl einen Syntaxterror zurückgibt:

$ apachectl start

httpd: Syntax error on line 97 of /usr/local/etc/apache2/2.2/httpd.conf: Can't locate API module structure `ssl_module' in file /usr/local/opt/httpd22/libexec/mod_ssl.so: dlsym(0x7fcf93407ca0, ssl_module): symbol not found


Nun war meine erste Interpretation gewesen, dass der Service httpd22 einen anderen Apachen startet als apachectl. Daraufhin habe ich die Zeile #97 in der https.conf (LoadModule ssl_module libexec/mod_ssl.so) aaskommentiert und der Server lässt sich starten. Sowohl als brew service als auch mit apachectl.


Kann mir jemand einen Tipp geben, wie und wo wo ich suchen soll?

danke und gruss,
heinetz
 
Welche Apache ist denn da welcher?

gib mal

which apachectl

ein um zu gucken wessen apachectl da gestartet wird (OS X oder homebrew) und welchen Apachen dann das apachectl-Skript startet stoppt. Im Übrigen wird von Dir der Apache mit ssl installiert und ihn fehlt hinterher offenbar die ssl lib, muß die vielleicht auch explizit installiert werden?
 
...also ich würde an deiner Stelle ja VirtualBox installieren, darin ein Linux und dort dann Apache etc. Man spart sich das Getue mit Homebrew, Konflikte mit doppelt belegten Ports, kann auf gute Linux-Doku (z.B. auf ubuntuusers.de) zugreifen etc...
 
Erstmal vielen Dank für Deine Reaktion! Ich will vorab sagen, dass ich mich nicht wirklich sicher auf Kommandozeilen-Ebene bewege, sondern eher der GUI-Typ bin. Genau das will ich aber ändern und mich endlich von Xampp oder Mamp verabschieden und bei dem Setup meines Development Stack soviel, wie möglich verstehen, was ich da mache ...

Welche Apache ist denn da welcher?

gib mal

which apachectl

ein um zu gucken wessen apachectl da gestartet wird (OS X oder homebrew) und welchen Apachen dann das apachectl-Skript startet stoppt.

$ which apachectl
/usr/local/bin/apachectl


Ich interpretiere das so:

1) Der Alias (oder Symlink?) apachectl verweist auf (/usr/local/Cellar/httpd22/2.2.31/bin/apachectl) und gehört zu homebrew.
OS X apachectl hingegen liegt in /usr/sbin.

2) In /usr/local/.../apachectl steht unter Anderem folgendes:
# the path to your httpd binary, including options if necessary
HTTPD='/usr/local/Cellar/httpd22/2.2.31/bin/httpd'


3) Dass hier die apachectl aus /usr/local/bin statt aus /usr/sbin angesprochen wird, begründet sich durch den Inhalt der /etc/paths

Soweit korrekt?


Im Übrigen wird von Dir der Apache mit ssl installiert und ihn fehlt hinterher offenbar die ssl lib, muß die vielleicht auch explizit installiert werden?

Da werde ich jetzt etwas unsicher ...

Der Apache wird von mir mit ssl installiert. Das geht aus der Option --with-brewed-openssl hervor. Meines Erachtens ist aber openssl installiert, denn ...

a) es gibt ein Verzeichnis /usr/local/Cellar/openssl.
b) openssl habe ich im Schritt vorher mit mysql installiert
(==> Installing dependencies for mysql: openssl)

(Ich habe den Installationsprozess in einem Terminalfenster durchgeführt. Die gesamte Ein- und Ausgabe)


gruss,
heinetz
 
Zuletzt bearbeitet:
Also bei mir hat die Formal gar kein --with-brewed-openssl sondern openssl als hartes requirement.
 
openssl braucht es ja nicht nur für den Webserver! Kann sein, dass das extra installiert sein muß.
 
aber es ist (war *) doch installiert ...

ich habe nun versucht, hombrew komplett zu deinstallieren und sämtliche Änderungen, die durch homebrew vorgenommen worden sind, rückgängig zu machen. Jetzt fange ich von vorne an ...

gruss,
heinetz
 
openssl braucht es ja nicht nur für den Webserver! Kann sein, dass das extra installiert sein muß.
Ja ich meine nur, wenn die Formel bei ihm das hat scheint irgendwas nicht zu stimmen. Im besten Fall nur zu alte Formeln, aber brew auto-updated sich inzwischen eigentlich selbst...
 
Ich hatte das Ganze ja nach einer Anleitung gemacht und mir nicht selbst ausgedacht, denn das könnte ich garnicht. Diese Anleitung gibt es so im Netz mehrfach und aus den Kommentaren geht hervor, dass die Lösung bei vielen Usern problemlos funktioniert. Sie ist zwar mal für OS X 10.10 geschrieben worden, aber auch bei OS X 10.11 - Usern läuft sie laut den Kommentaren.

Nachdem ich nun homebrew und alle Pakete komplett deinstalliert hatte, habe ich ich homebrew frisch aufgesetzt und als erstes den Apache installiert:

$ brew tap homebrew/dupes
==> Tapping homebrew/dupes
...
$ brew install -v homebrew/apache/httpd22 --with-brewed-openssl --with-mom-event
==> Tapping homebrew/apache
...
==> Installing httpd22 from homebrew/apache
==> Installing dependencies for homebrew/apache/httpd22: apr, openssl, apr-util, homebrew/dupes/zlib
...
$ brew install -v homebrew/apache/mod_fastcgi --with-brewed-httpd22

Und jetzt lässt sich der Apache sowohl mit:
$ brew services start httpd22
... als auch mit:
$ apachectl start
... starten und localhost ist per http und per https im Browser erreichbar.

Jetzt werde ich die nächsten Komponenten aus der Anleitung installieren. Mal sehen, wo es hakt ...

gruss,
heinetz
 
So, nun habe ich php56 installiert und auch das läuft. Als nächstes wollte ich dann dnsmasq installieren, was immer problemlos lief. Das tat es dann aber leider nicht und ich habe mich auf die Suche gemacht, konnte aber nichts finden. Also dnsmasq wieder gestoppt und folgende beiden files gelöscht:

/usr/local/etc/dnsmasq.conf
/etc/resolver/dev

Was zuerst nicht funktioniert, funktioniert plötzlich ... scheinbar! Die Eingabe von http://test.dev im Browser wird vom lokalen Apachen beantwortet. Sprich DocumentRoot für test.dev ist das Verzeichnis ~/Sites/test, was eigentlich nicht sein kann, weil dnsmasq nicht läuft.

Wenn ich im Terminal ping test.dev eingebe, wird die Domain nach 127.0.53.53 aufgelöst.

Was ist da los?


gruss,
heinetz
 
Was zuerst nicht funktioniert, funktioniert plötzlich ... scheinbar! Die Eingabe von http://test.dev im Browser wird vom lokalen Apachen beantwortet. Sprich DocumentRoot für test.dev ist das Verzeichnis ~/Sites/test, was eigentlich nicht sein kann, weil dnsmasq nicht läuft.

Wenn ich im Terminal ping test.dev eingebe, wird die Domain nach 127.0.53.53 aufgelöst.

Nachdem ich auch dnsmasq nochmal vollständig neu aufgesetzt habe, läuft es nun. Warum es beim ersten Anlauf nicht funktioniert hatte, werden wir wohl nie erfahren. Interessant bleibt die 127.0.53.53. Darüber habe ich mittlerweile ein bisschen was gelesen ....

gruss,
heinetz
 
Kann man sicher genauso gut machen und meine Entscheidung war eher aus dem Bauch aber mir gefiel, dass meine gesamte Entwicklungsumgebung in einem Verzeichnis /usr/local/.
 
Zurück
Oben Unten