


Hay tres principales sistemas para crear un servidor web, IIS, Nginx y Apache. En este post vamos a explicar cómo realizar la instalación de Apache y configurar el servidor web para que funcione bajo HTTP/2 en OS X.
Instalación de Apache
Hay varias formas de instalar Apache, se puede realizar desde la terminal o a través de algún software específico, como puede ser el caso de MAMP que está disponible tanto para OS X como para Windows.
En este caso, vamos a utilizar el Apache que viene instalado por defecto en OS X. Para conocer su versión introducimos el siguiente comando en la terminal.
apachectl -V

Para comprobar el correcto funcionamiento ya podemos acceder a http://localhost.
Creación de la aplicación web
Ahora vamos a crear un nuevo proyecto para acceder a través de localhost en el navegador web. Para ello nos dirigimos a la carpeta /Library/WebServer/Documents y creamos una carpeta con nombre http2dev.
mkdir /Library/WebServer/Documents/http2dev touch /Library/WebServer/Documents/http2dev/index.html echo "<h1>HTTP/2 Dev</h1>" > /Library/WebServer/Documents/http2dev/index.html
En este punto ya se puede acceder a http://localhost/http2dev y ver la página web creada anteriormente:
Ya tenemos nuestra aplicación web en un servidor Apache, pero lo ideal sería tener un dominio local, y de esta forma poder configurar de forma independiente cada uno de los nuevos sitios. Esta configuración permite al administrador utilizar un servidor para alojar otros dominios. Cada dominio tendrá su propia configuración y directorio dónde se alojarán todos los ficheros de la aplicación web. Una vez creada la estructura web, el siguiente paso sería configurar un VirtualHost, para ello se debe modificar el fichero /etc/apache2/httpd2.conf descomentando estas dos líneas:
#LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so #Include /private/etc/apache2/extra/httpd-vhosts.conf
Quedando así:
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so Include /private/etc/apache2/extra/httpd-vhosts.conf
Ahora ya se ha habilitado el uso de VirtualHost en Apache, a continuación se configura:
<VirtualHost *:80> ServerAdmin exam[email protected] DocumentRoot "/Library/WebServer/Documents" ServerName localhost ServerAlias localhost ErrorLog "/private/var/log/apache2/localhost-error_log" CustomLog "/private/var/log/apache2/localhost-access_log" common </VirtualHost> <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/Library/WebServer/Documents/http2dev" ServerName http2dev.local ServerAlias http2dev.local ErrorLog "/private/var/log/apache2/http2dev.local-error_log" CustomLog "/private/var/log/apache2/http2dev.local-access_log" common </VirtualHost>
También se debe modificar el fichero hosts del sistema que se encuentra en /etc/hosts y añadir la siguiente línea:
127.0.0.1 http2dev.local
Quedando de la siguiente forma:
## # Host Database # # localhost is used to configure the loopback interface # when the system is booting. Do not change this entry. ## 127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost fe80::1%lo0 localhost 127.0.0.1 http2dev.local
De esta forma, se ha referenciado el nuevo dominio para que apunte al servidor local de Apache. Para comprobar el funcionamiento, iniciamos de nuevo Apache con el siguiente comando:
sudo apachectl -k restart
y entramos en http://http2dev.local
Para ello, desde la terminal vamos a lanzar el comando cURL.
curl -I http2dev.local

Se puede observar como efectivamente está funcionando bajo HTTP/1.1, es obvio, aún no se ha configurado HTTP/2.Configuración de HTTP/2 en Apache
Por defecto, Apache no trae el módulo HTTP/2 instalado, por lo que tenemos que instalarlo de forma manual, para ello se deben seguir los pasos que se detallan a continuación:
sudo apachectl stop
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null
brew install httpd24 --with-privileged-ports --with-http2
sudo cp -v /usr/local/Cellar/httpd24/2.4.23_2/homebrew.mxcl.httpd24.plist /Library/LaunchDaemons
sudo chown -v root:wheel /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
sudo chmod -v 644 /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
Una vez ejecutados estos comandos iniciamos Apache de nuevo, para ello se ejecuta:
sudo apachectl start
Apache se controla mediante el comando apachectl.
LoadModule http2_module libexec/mod_http2.so
En el fichero que se ha configurado el VirtualHost se debe añadir el uso del protocolo para HTTP/2 de la siguiente forma:
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/Library/WebServer/Documents/http2dev" ServerName http2dev.local Protocols h2 h2c http/1.1 ServerAlias http2dev.local ErrorLog "/private/var/log/apache2/http2dev.local-error_log" CustomLog "/private/var/log/apache2/http2dev.local-access_log" common </VirtualHost>
Probando HTTP/2
En este punto el servidor Apache ya está configurado para funcionar con HTTP/2. Para ejecutar cURL hay que indicarle que utilice HTTP/2 de la siguiente forma:curl --http2 -I http2dev.local
Se puede observar como efectivamente, ahora se está utilizando HTTP/2.
HTTP/2 no soportado por cURL
Puede ocurrir que la versión de cURL que está instalada en el sistema no reconozca el comando compatible con HTTP/2.
En este caso, hay que reinstalar cURL para que acepte –http2 de la siguiente forma
Primero, se instala cURL con soporte nghttp2.
brew install curl --with-nghttp2A continuación, se sustituye el enlace simbólico de cURL en el sistema.
brew link curl --force
De esta forma, cURL ya acepta HTTP/2.Otros artículos destacados
¡Recibido!
Gracias por rellenar el formulario. Se han enviado los datos correctamente.
