Cómo actualizar Apache 2.2 a 2.4 en Mac OS X Mavericks

Mi ISP actualizó el servidor a Apache 2.4.9 desde 2.2.xx. Ha roto un par de cosas en mi configuración y quiero traer mi copia local de Apache 2.2.26 a 2.4.9 para poder probar localmente.

He estado tratando de encontrar información en línea, pero parece que no puedo encontrar instrucciones paso a paso sobre cómo hacerlo, y sobre todo encuentro recomendaciones de NO hacerlo. En cambio, encuentro personas que sugieren Homebrew, MacPorts o Fink.

Dado que tengo varios sitios que funcionan con local.xxxx.com y todo funciona bien (edítalo localmente, prueba visitando su URL correspondiente con el prefijo local.) y todo es bastante conveniente y agradable, me gustaría continuar haciendo lo mismo, pero con Apache 2.4.9. Cualquier consejo sobre cuál es la mejor manera de hacer esto, o un puntero a las instrucciones, sería muy apreciado.

La versión actual de ampps.com incluye Apache 2.4.7

Respuestas (2)

Si lo consigues, romperás parte del Sistema

No quieres hacer eso. Apache2 es parte del sistema operativo. Si de alguna manera logra lo que busca, perderá cualquier capacidad para actualizar Apache2 o tendrá alguna actualización de seguridad de los roles de Apple que se aplica utilizando la Mac App Store integrada o la actualización de software de Apple. Debería dejarlo así e instalar un Apache2 diferente. Además, de esa manera tendrá la seguridad de que las actualizaciones posteriores de Apple tampoco dañarán su versión actualizada de Apache2, lo cual es igual de probable (si no inevitable).


MacPorts

MacPorts es una solución de administración de paquetes robusta, estable, madura y fácil de usar para OS X. Se basa en el sistema de puertos de FreeBSD , que se ha adoptado como base de pkgsrc de NetBSD . Recomiendo encarecidamente MacPorts .

instalar Xcode 5.1.1

MacPorts requiere una versión adecuada de xcode; xcode_5.1.1.dmg es la versión más reciente de Mavericks (después de registrarse para obtener una cuenta de desarrollador gratuita e iniciar sesión en developer.apple.com, ese enlace comenzará su descarga de xcode). Una vez que se completa la descarga:

 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

Instalar MacPorts

Conozca MacPorts

 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 /

agregue MacPorts a su $PATH:

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

instalar 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

Eso es realmente todo lo que hay que hacer. Si puede configurar httpd.conf, también puede hacerlo. Y puede mantenerlo actualizado al borde de la hemorragia nasal simplemente con:

 sudo port -vsc selfupdate
 sudo port -vsc upgrade installed

MacPorts no interferirá con el uso del servidor Apache2 interno de OS X, ni con ningún otro software. Guarda todo lo que instala en su directorio /opt.

Si por alguna razón no está satisfecho y/o necesita eliminar MacPorts:

para desinstalar completamente MacPorts

 sudo port -dfp uninstall --follow-dependencies installed
 sudo port -dfp uninstall all
 sudo rm -rf /opt/local  
 sudo rm -rf /Library/Tcl/macports*
Estos me parecen el conjunto de pasos más completo. Comencé con el enlace "conocer MacPorts" y primero ejecuté xcode-select --install (que instaló las utilidades de la línea de comandos, después de haber instalado XCode). A continuación, descargué el .pkg según las instrucciones en el sitio de MacPorts y continué con sudo /opt/local/bin/port -v selfupdate seguido de diskutil quiet repairPermissions / luego omití agregar a la RUTA (parece que la instalación hizo eso por mí). Todo el proceso tomó un tiempo y apareció un cuadro de diálogo que pedía "javac", que necesitaba Java SE 6, que rechacé.
Tal vez los documentos de MacPorts necesiten una actualización. No es un gran equipo de mantenedores, que es una de las razones por las que me he encargado de evangelizar al respecto: cuantos más adoptantes, mejor será. Lo he estado usando durante casi 8 años y no soy programador/desarrollador. Una vez familiarizado con la sintaxis (de la que estaba un poco usando NetBSD y pkgsrc) comienza a ser útil. La migración es muy sencilla, la "lista de puertos solicitada" le indica todos los puertos que solicitó, y puede crear una secuencia de comandos para esa lista fácilmente en un sistema nuevo. Me encanta llevar mi propio software donde quiera que vaya. Visite #macports @freenode irc para soporte en tiempo real.:D
Ahora, esto parece funcionar, pero el navegador parece ir a la versión 2.2.26 de Apache. Sin embargo, en la línea de comandos, ejecutar "apachectl" parece estar buscando en el lugar correcto. En este momento me está dando un error [Error de sintaxis en la línea 53 de /opt/local/etc/apache2/extra/httpd-vhosts.conf: Comando no válido 'php_value', quizás mal escrito o definido por un módulo no incluido en el servidor configuración] pero eso es porque no tengo cargado el módulo para php, que intentaré averiguar a continuación. Entonces, ¿cómo "apago" el 2.2.26 y me aseguro de que una solicitud local.xxxx.com use 2.4.9?
Descubrí cómo apagarlo: sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist.
@Jose, la versión de macports se controla de manera similar. difícil de leer , pero hay cosas buenas allí, incluido el comando launchctl para iniciar/detener apache2, y creo que también puede usar apachectl, pero es posible que también tenga que configurar para la versión macports de ese cmd. Todo debería estar en /opt como /opt/local/apache2/conf/httpd.conf
Gracias. Ahora, con la instalación, algo no está del todo bien. Apachectl parece estar leyendo /opt/local/etc/apache2/httpd.conf pero apxs parece estar buscando en /opt/local/apache2/conf/httpd.conf el archivo de configuración. Puede que no haya sido una buena idea instalar la versión .pkg. Ahora he desinstalado y hecho todo manualmente como se sugiere. [nota: al agregar MacPorts a su $PATH:, hay un espacio innecesario en "...cal/share/man:$MANPATH"] Ahora, sabiendo que quiero php5 con todo esto, si la instalación debe ser "sudo port -vsc instalar apache24-devel +php5"?
Encontré un par de cosas con respecto a PHP 5 con Apache24-devel y no se ve bien ( trac.macports.org/ticket/41478 ) y ( trac.macports.org/ticket/35824 ). También encontré en algún lugar, pero parece que no puedo encontrarlo de nuevo, cómo usar los puertos locales para instalar php 5, pero después de intentarlo sin éxito, estoy buscando probar otra cosa.
@Jose gracias por la nota sobre el espacio! Rompe cosas. fijado. La sintaxis que usa en ese cmd es para variantes, y no veo una variante php5 para ese puerto. El comando sería entonces sudo port -vsc install apache24-devel php5y eso lo haría. En el futuro, si desea instalar más de un puerto, simplemente enumérelos juntos sin ningún tipo de puntuación sudo port -vsc install apache2 mod_perl2 apachetop mysql5-server php5y así sucesivamente. Para instalar php5 por sí mismo, sudo port -vsc install php5busque las respuestas en la documentación . Para perseverar, no te rindas tan fácilmente!!
¡Gracias! no me he rendido Ahora, este comando que mencionas pareció funcionar. Además, el lanzamiento de Apache aparece con 2.4.9 (apachectl -v). Todavía tengo un problema al intentar iniciar Apache y aparece este error: httpd: error de sintaxis en la línea 290 de /opt/local/etc/apache2/httpd.conf: no se puede cargar apache2/modules/libphp5.so en el servidor: dlopen(/opt/local/apache2/modules/libphp5.so, 10): Símbolo no encontrado: _unixd_config\n Referenciado desde: /opt/local/apache2/modules/libphp5.so\n Esperado en: /opt/local/ sbin/httpd\n en /opt/local/apache2/modules/libphp5.so
Después de cambiar la línea 290 de leer "LoadModule php5_module apache2/modules/libphp5.so" a "LoadModule php5_module lib/apache2/modules/libphp5.so" para que coincida con la forma en que se cargan todos los demás módulos, ahora recibo un error ligeramente diferente : httpd: error de sintaxis en la línea 290 de /opt/local/etc/apache2/httpd.conf: no se puede cargar lib/apache2/modules/libphp5.so en el servidor: dlopen(/opt/local/lib/apache2/modules/libphp5 .so, 10): imagen no encontrada. También me di cuenta de que apache se está ejecutando, pero es la versión anterior. Apagué eso nuevamente (verificado yendo a localhost) pero sigue el mismo error.
Parece que libphp5.so está en /opt/local/apache2/modules pero no en /opt/local/lib/apache2/modules. Todos los demás módulos están en ambos lugares. Ahora lo copié al otro lado. El lanzamiento de apache ahora informa: httpd: error de sintaxis en la línea 290 de /opt/local/etc/apache2/httpd.conf: no se puede cargar lib/apache2/modules/libphp5.so en el servidor: dlopen(/opt/local/lib/apache2 /modules/libphp5.so, 10): Símbolo no encontrado: _unixd_config\n Referenciado desde: /opt/local/lib/apache2/modules/libphp5.so\n Esperado en: /opt/local/sbin/httpd\n en /opt/local/lib/apache2/modules/libphp5.so. Parece que voy en círculos.
Comenté la línea que carga el módulo php, solo para probar todo lo demás, y todo funciona. Puedo ver la página que tenía en /opt/local/www/apache2/html/index.html. También agregué <Location /server-info> SetHandler server-info </Location> al archivo httpd.conf y visitar localhost/server-info muestra toda la información correcta. Configuración del servidor Versión del servidor: Apache/2.4.9 (Unix) OpenSSL/1.0.1g Servidor creado: 20 de mayo de 2014 16:03:14 Versión APR cargada del servidor: 1.5.1 Compilado con la versión APR: 1.5.1 Versión APU cargada del servidor: 1.5.3 Compilado con APU Versión: 1.5.3

Puede actualizar Apache que viene con Maverics, pero existe una gran posibilidad de que cada vez que instale una actualización del sistema, Apache se rompa.

Es bastante fácil usar homebrew, pero es una cuestión de línea de comandos. Con homebrew puedes señalar la versión de Apache.

Si quieres una solución con interfaz gráfica usa MAMP, es gratis. Pero deberá usar la versión de Apache que envían (2.2.26).

Me mantendré alejado de macports, homebrew es el nuevo rey de la ciudad.

Para instalar homebrew escribe esto en la terminal

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

Instalar una versión específica es más complicado, puede ver las instrucciones en esta publicación de intercambio de pila:

https://stackoverflow.com/questions/3987683/homebrew-install-version-específica-de-formula

Pero me pregunto qué tipo de problema está teniendo, los cambios de versión de Apache normalmente no rompen nada, ¿está seguro de que es algo de Apache? El problema puede ser por otra tecnología, como PHP, Ruby...

¿Podría publicar los errores que está recibiendo?

El error que recibo al visitar local.xxxxx.com es un error interno del servidor. Al revisar en la consola, veo esto: [Lunes 12 de mayo 13:38:18 2014] [alerta] [cliente 127.0.0.1] /Users/jose/Sites/local.xxxxx.com/html/.htaccess: RewriteRule: unknown marcar 'FIN'. En lugar de evitar eso, preferiría simplemente tener mi sistema funcionando con 2.4.9 para poder tener una configuración local lo más cercana posible a la configuración del ISP.
Me alejé de MAMP hace unos años porque faltaba su soporte para las últimas versiones (estables) de algunos paquetes. Y acabo de comprobar, y efectivamente, con su última versión, todavía están en Apache 2.2.26. Voy a ver si Homebrew cubre una instalación fácil de Apache 2.4.9 y PHP 5. Verificaré el enlace proporcionado.