So aktualisieren Sie Apache 2.2 auf 2.4 in Mac OS X Mavericks

Mein ISP hat den Server von 2.2.xx auf Apache 2.4.9 aktualisiert. Es hat ein paar Dinge in meinem Setup kaputt gemacht und ich möchte meine lokale Kopie von Apache 2.2.26 auf 2.4.9 bringen, damit ich lokal testen kann.

Ich habe versucht, einige Informationen online zu finden, aber ich kann anscheinend keine schrittweisen Anweisungen dazu finden, wie es geht, und meistens finde ich Empfehlungen, es NICHT zu tun. Stattdessen finde ich Leute, die Homebrew, MacPorts oder Fink vorschlagen.

Angesichts der Tatsache, dass ich eine Reihe von Websites habe, die mit local.xxxx.com arbeiten und alles gut funktioniert (lokal bearbeiten, testen, indem Sie die entsprechende URL mit dem Präfix local. besuchen) und alles ziemlich bequem und nett ist, möchte ich fortfahren das Gleiche tun, aber mit Apache 2.4.9. Jeder Rat, wie dies am besten zu tun ist, oder ein Hinweis auf Anweisungen wäre sehr willkommen.

Die aktuelle Version von ampps.com enthält Apache 2.4.7

Antworten (2)

Wenn Sie erfolgreich sind, werden Sie einen Teil des Systems brechen

Das willst du nicht. Apache2 ist Teil des Betriebssystems. Wenn Sie irgendwie das erreichen, wonach Sie suchen, werden Sie jede Möglichkeit zum Upgrade von Apache2 oder Sicherheitsupdates von Apple-Rollen verlieren, die über den integrierten Mac App Store oder Softwareupdate von Apple angewendet werden. Sie sollten es sein lassen und einen anderen Apache2 installieren. Auf diese Weise können Sie auch sicher sein, dass nachfolgende Apple-Updates Ihre aktualisierte Version von Apache2 nicht beschädigen, was genauso wahrscheinlich (wenn nicht unvermeidlich) ist.


MacPorts

MacPorts ist eine robuste, stabile, ausgereifte und benutzerfreundliche Paketverwaltungslösung für OS X. Sie ist dem Ports - System von FreeBSD nachempfunden, das als Grundlage von NetBSDs pkgsrc übernommen wurde . Ich kann MacPorts wärmstens empfehlen .

Installieren Sie Xcode 5.1.1

MacPorts erfordert eine geeignete Version von xcode; xcode_5.1.1.dmg ist die neueste Version für Mavericks (nachdem Sie sich für ein kostenloses Entwicklerkonto registriert und sich bei developer.apple.com angemeldet haben, beginnt dieser Link mit dem Herunterladen von xcode). Sobald der Download abgeschlossen ist:

 hdiutil attach -quiet -noverify -nobrowse -noautoopen ~/Downloads/xcode_5.1.1.dmg
 cp -npR /Volumes/Xcode/Xcode.app /Applications/
 hdiutil detach -quiet /Volumes/Xcode
 open -g /Applications/Xcode.app
 sleep 8
 killall Xcode.app

Installieren Sie MacPorts

Lernen Sie MacPorts kennen

 curl -Ok https://distfiles.macports.org/MacPorts/MacPorts-2.2.1.tar.bz2
 tar xf MacPorts-2.2.1.tar.bz2
 cd MacPorts-2.2.1
 ./configure
 make
 sudo make install     # *not war!*
 cd ..
 rm -rf Macports-*
 sudo /opt/local/bin/port -v selfupdate
 diskutil quiet repairPermissions /

fügen Sie MacPorts zu Ihrem $PATH hinzu:

 export PATH=/opt/local/bin:/opt/local/sbin:$PATH
 export MANPATH=/opt/local/share/man:$MANPATH

Installieren Sie Apache 2.4.9

 Jose@stack:~$
 Jose@stack:~$
 Jose@stack:~$ port info apache24-devel
  apache24-devel @2.4.9 (www)
  Variants:       eventmpm, openldap, [+]preforkmpm, universal, workermpm

  Description:    Apache is an HTTP server designed as a plug-in replacement for the NCSA server version 1.3
                  (or 1.4). It fixes numerous bugs in the NCSA server and includes many frequently requested
                  new features, and has an API which allows it to be extended to meet users' needs more
                  easily.
  Homepage:       http://httpd.apache.org/

  Library Dependencies: apr, apr-util, expat, openssl, pcre, perl5, zlib
  Platforms:            darwin, freebsd, openbsd
  License:              Apache-2
  Maintainers:          ryandesign@macports.org, macintosh@mathiesen.info, pixilla@macports.org,
                        openmaintainer@macports.org
 Jose@stack:~$
 Jose@stack:~$
 Jose@stack:~$ sudo port -vsc install apache24-devel

Das ist wirklich alles, was dazu gehört. Wenn Sie httpd.conf konfigurieren können, können Sie dies auch tun. Und Sie können es einfach bis zum Rand des Nasenblutens aktualisieren mit:

 sudo port -vsc selfupdate
 sudo port -vsc upgrade installed

MacPorts beeinträchtigt weder die Verwendung des internen Apache2-Servers von OS X noch andere Software. Es speichert alles, was es installiert, in seinem /opt-Verzeichnis.

Wenn Sie aus irgendeinem Grund unzufrieden sind und/oder MacPorts entfernen müssen:

um MacPorts vollständig zu deinstallieren

 sudo port -dfp uninstall --follow-dependencies installed
 sudo port -dfp uninstall all
 sudo rm -rf /opt/local  
 sudo rm -rf /Library/Tcl/macports*
Dies scheint mir die vollständigste Reihe von Schritten zu sein. Ich habe mit dem Link "know MacPorts" begonnen und zuerst xcode-select --install ausgeführt (wodurch Befehlszeilenprogramme installiert wurden, nachdem ich XCode installiert hatte). Als nächstes habe ich die .pkg gemäß den Anweisungen auf der MacPorts-Site heruntergeladen und mit dem sudo /opt/local/bin/port -v selfupdate gefolgt von den diskutil quiet repairPermissions / Ich habe dann das Hinzufügen zum PATH übersprungen (es scheint die Installation hat das für mich getan). Der gesamte Vorgang dauerte eine Weile, bis ein Dialogfeld auftauchte, in dem nach „javac“ gefragt wurde, das Java SE 6 benötigte, was ich ablehnte.
Möglicherweise müssen die MacPorts-Dokumente aktualisiert werden. Es ist kein riesiges Team von Betreuern, was einer der Gründe ist, warum ich es mir zur Aufgabe gemacht habe, darüber zu evangelisieren: Je mehr Adoptierende, desto besser wird es. Ich benutze es seit fast 8 Jahren und bin kein Programmierer/Entwickler. Sobald ich mit der Syntax vertraut bin (die ich ein bisschen von der Verwendung von NetBSD und pkgsrc entfernt hatte), wird es allmählich nützlich. Die Migration ist ein Kinderspiel, „Portliste angefordert“ zeigt Ihnen alle Ports an, nach denen Sie gefragt haben, und Sie können diese Liste einfach auf einem neuen System skripten. Ich liebe es, meine eigene Software überall hin mitzunehmen. Besuchen Sie #macports @freenode irc für Echtzeitunterstützung.:D
Jetzt scheint dies zu funktionieren, aber der Browser scheint immer noch auf die Version 2.2.26 von Apache zu gehen. In der Befehlszeile scheint das Ausführen von "Apachectl" jedoch an der richtigen Stelle zu suchen. Im Moment gibt mir ein Fehler [Syntax error on line 53 of /opt/local/etc/apache2/extra/httpd-vhosts.conf: Ungültiger Befehl 'php_value', möglicherweise falsch geschrieben oder von einem Modul definiert, das nicht im Server enthalten ist Konfiguration], aber das liegt daran, dass ich das Modul für PHP nicht geladen habe, was ich als nächstes versuchen werde. Wie schalte ich also 2.2.26 aus und stelle sicher, dass eine local.xxxx.com-Anfrage 2.4.9 verwendet?
Herausgefunden, wie man es ausschaltet: sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist.
@Jose Die Macports-Version wird ähnlich gesteuert. schwer zu lesen , aber gute Sachen darin, einschließlich des Befehls launchctl zum Starten / Stoppen von Apache2, und ich denke, Sie können auch apachectl verwenden, müssen aber möglicherweise auch für die Macport-Version dieses cmd konfigurieren. Alles sollte in /opt wie /opt/local/apache2/conf/httpd.conf sein
Danke. Nun, bei der Installation stimmt etwas nicht ganz. Das apachectl scheint /opt/local/etc/apache2/httpd.conf zu lesen, aber apxs scheint in /opt/local/apache2/conf/httpd.conf nach der Konfigurationsdatei zu suchen. Es war möglicherweise keine gute Idee, die .pkg-Version zu installieren. Ich habe jetzt deinstalliert und alles wie vorgeschlagen manuell durchgeführt. [Hinweis: Beim Hinzufügen von MacPorts zu Ihrem $PATH: gibt es ein unnötiges Leerzeichen in "...cal/share/man:$MANPATH"] Nun, da ich weiß, dass ich mit all dem php5 möchte, sollte die Installation "sudo port -vsc apache24-devel +php5 installieren"?
Ich habe ein paar Dinge bezüglich PHP 5 mit Apache24-devel gefunden und es sieht nicht gut aus ( trac.macports.org/ticket/41478 ) und ( trac.macports.org/ticket/35824 ). Ich habe auch irgendwo gefunden, kann es aber anscheinend nicht wiederfinden, wie man lokale Ports verwendet, um PHP 5 zu installieren, aber nachdem ich es ohne Erfolg versucht habe, versuche ich etwas anderes.
@Jose danke für den Hinweis zum Platz! Macht Sachen kaputt. Fest. Die Syntax, die Sie in diesem cmd verwenden, ist für Varianten, und ich sehe keine Variante php5 für diesen Port. Der Befehl wäre dann sudo port -vsc install apache24-devel php5und das wäre erledigt. Wenn Sie in Zukunft mehr als einen Port installieren möchten, listen Sie sie einfach ohne Satzzeichen sudo port -vsc install apache2 mod_perl2 apachetop mysql5-server php5und so weiter auf. Um php5 selbst zu installieren, finden Sie in der Dokumentationsudo port -vsc install php5 -seek Antworten . Um durchzuhalten, nicht so schnell aufgeben!!
Danke! Ich habe nicht aufgegeben. Nun, dieser von Ihnen erwähnte Befehl schien zu funktionieren. Außerdem wird das Starten von Apache mit 2.4.9 (apachectl -v) angezeigt. Ich habe immer noch ein Problem beim Versuch, Apache zu starten, mit diesem Fehler: httpd: Syntax error on line 290 of /opt/local/etc/apache2/httpd.conf: Cannot load apache2/modules/libphp5.so into server: dlopen(/opt/local/apache2/modules/libphp5.so, 10): Symbol nicht gefunden: _unixd_config\n Referenziert von: /opt/local/apache2/modules/libphp5.so\n Erwartet in: /opt/local/ sbin/httpd\n in /opt/local/apache2/modules/libphp5.so
Nachdem ich Zeile 290 von „LoadModule php5_module apache2/modules/libphp5.so“ zu „LoadModule php5_module lib/apache2/modules/libphp5.so“ geändert habe, um zu entsprechen, wie alle anderen Module geladen werden, erhalte ich jetzt einen etwas anderen Fehler : httpd: Syntaxfehler in Zeile 290 von /opt/local/etc/apache2/httpd.conf: Kann lib/apache2/modules/libphp5.so nicht in den Server laden: dlopen(/opt/local/lib/apache2/modules/libphp5 .so, 10): Bild nicht gefunden. Ich habe auch festgestellt, dass Apache läuft, aber es ist die ältere Version. Habe das wieder ausgeschaltet (überprüft, indem ich zu localhost gegangen bin), aber immer noch der gleiche Fehler.
Anscheinend befindet sich libphp5.so in /opt/local/apache2/modules, aber nicht in /opt/local/lib/apache2/modules. Alle anderen Module befinden sich an beiden Orten. Ich habe es jetzt rüberkopiert. Das Starten von Apache meldet jetzt: httpd: Syntax error on line 290 of /opt/local/etc/apache2/httpd.conf: Cannot load lib/apache2/modules/libphp5.so into server: dlopen(/opt/local/lib/apache2 /modules/libphp5.so, 10): Symbol nicht gefunden: _unixd_config\n Referenziert von: /opt/local/lib/apache2/modules/libphp5.so\n Erwartet in: /opt/local/sbin/httpd\n in /opt/local/lib/apache2/modules/libphp5.so. Ich scheine mich im Kreis zu drehen.
Ich habe die Zeile zum Laden des PHP-Moduls auskommentiert, nur um alles andere zu testen, und es funktioniert alles. Ich kann die Seite sehen, die ich in /opt/local/www/apache2/html/index.html hatte. Ich habe auch <Location /server-info> SetHandler server-info </Location> zur Datei httpd.conf hinzugefügt und beim Besuch von localhost/server-info werden alle richtigen Informationen angezeigt. Servereinstellungen Serverversion: Apache/2.4.9 (Unix) OpenSSL/1.0.1g Server Erstellt: 20. Mai 2014 16:03:14 Servergeladene APR-Version: 1.5.1 Kompiliert mit APR-Version: 1.5.1 Servergeladene APU-Version: 1.5.3 Kompiliert mit APU-Version: 1.5.3

Sie können den mit Maverics gelieferten Apache aktualisieren, aber es besteht eine große Chance, dass der Apache jedes Mal, wenn Sie ein Systemupdate installieren, kaputt geht.

Es ist ziemlich einfach, Homebrew zu verwenden, aber es ist eine Befehlszeilensache. Mit Homebrew können Sie die Apache-Version lokalisieren.

Wenn Sie eine Lösung mit einer grafischen Oberfläche wünschen, verwenden Sie MAMP, es ist kostenlos. Sie müssen jedoch die von ihnen gelieferte Apache-Version (2.2.26) verwenden.

Ich werde mich von Macports fernhalten, Homebrew ist der neue König in der Stadt.

Um Homebrew zu installieren, geben Sie dies auf dem Terminal ein

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

Das Installieren einer bestimmten Version ist ein schwierigerer Trick. Sie können die Anweisungen in diesem Stack-Exchange-Beitrag sehen:

https://stackoverflow.com/questions/3987683/homebrew-install-specific-version-of-formula

Aber ich frage mich, was für ein Problem Sie bekommen, Apache-Versionsänderungen machen normalerweise nichts kaputt, sind Sie sicher, dass es sich um eine Apache-Sache handelt? Das Problem kann an einer anderen Technologie wie PHP, Ruby... liegen.

Würden Sie bitte die Fehler posten, die Sie erhalten.

Der Fehler, den ich beim Besuch von local.xxxxx.com erhalte, ist ein interner Serverfehler. Beim Einchecken in die Konsole sehe ich Folgendes: [Mon 12. Mai 13:38:18 2014] [Alarm] [Client 127.0.0.1] /Users/jose/Sites/local.xxxxx.com/html/.htaccess: RewriteRule: unknown Flag 'ENDE'. Anstatt das zu umgehen, würde ich es vorziehen, mein System einfach mit 2.4.9 laufen zu lassen, damit ich ein lokales Setup haben kann, das dem Setup des ISP so nahe wie möglich kommt
Ich bin vor ein paar Jahren von MAMP abgerückt, weil ihre Unterstützung für die neuesten (stabilen) Versionen einiger Pakete fehlte. Und ich habe gerade nachgesehen, und tatsächlich, mit ihrer neuesten Version sind sie immer noch auf Apache 2.2.26. Mal sehen, ob Homebrew eine einfache Installation von Apache 2.4.9 und PHP 5 abdeckt. Werde den bereitgestellten Link überprüfen.