Recentemente publiquei um artigo que mostrava como instalar o Nginx com suporte a HTTP/2 habilitado. Agora é a vez do bom e velho Apache! A release estável 2.4.17 do Apache foi lançada em 13 de outubro de 2015 e vem com um novo módulo que vai deixar todo mundo animado: claro que falo do mod_http2, que dá suporte ao HTTP/2 no Apache. Para saber o que mais vem nessa release, leia a página de Announcement.
Assim como no Nginx, fizemos uma imagem Docker para o Apache com HTTP/2 que utiliza um Ubuntu 14.04. Veja nosso Dockerfile no Github clicando aqui.
Caso queira utilizar o Docker, baixe a imagem e execute-a utilizando os comandos abaixo. Troque /caminho/do/meu-site/ pelo caminho absoluto para a pasta do seu site.
$ docker pull devopsbluesoft/httpd-h2 $ docker run -d -p 8443:443 -v /caminho/do/meu-site/:/usr/local/httpd/htdocs/ devopsbluesoft/httpd-h2
Seu site estará disponível em https://localhost:8443. Troque localhost pelo IP da máquina onde o Docker foi executado.
Se você quiser fazer na mão, siga os passos a seguir.
Atualize seus pacotes e instale as dependências do Apache.
$ sudo apt-get -y update $ sudo apt-get -y upgrade $ sudo apt-get -y install gcc g++ wget libpcre3-dev make
Agora você vai baixar vários pacotes de que o Apache depende. É possível instalar os pacotes -dev dos repositórios do Ubuntu, mas preferi compilar as versões mais recentes.
Baixando o Apache APR.
$ mkdir -p $HOME/src/ $ wget -O $HOME/src/apr-1.5.2.tar.gz http://ftp.unicamp.br/pub/apache/apr/apr-1.5.2.tar.gz $ tar xzf $HOME/src/apr-1.5.2.tar.gz -C $HOME/src/
Baixando o Apache APR-Util.
$ wget -O $HOME/src/apr-util-1.5.4.tar.gz http://ftp.unicamp.br/pub/apache//apr/apr-util-1.5.4.tar.gz $ tar xzf $HOME/src/apr-util-1.5.4.tar.gz -C $HOME/src/
Baixando o nghttp2 (implementação do protocolo HTTP/2 utilizada pelo Apache).
$ wget -O $HOME/src/nghttp2-1.3.4.tar.gz https://github.com/tatsuhiro-t/nghttp2/releases/download/v1.3.4/nghttp2-1.3.4.tar.gz $ tar xzf $HOME/src/nghttp2-1.3.4.tar.gz -C $HOME/src/
Baixando o OpenSSL (é necessário usar a versão 1.0.2 ou superior).
$ wget -O $HOME/src/openssl-1.0.2d.tar.gz ftp://ftp.openssl.org/source/openssl-1.0.2d.tar.gz $ tar xzf $HOME/src/openssl-1.0.2d.tar.gz -C $HOME/src/
E, por último, o Apache 2.4.17.
$ wget -O $HOME/src/httpd-2.4.17.tar.gz http://ftp.unicamp.br/pub/apache//httpd/httpd-2.4.17.tar.gz $ tar xzf $HOME/src/httpd-2.4.17.tar.gz -C $HOME/src/
Agora vamos compilar todos os pacotes, começando pelo Apache APR.
$ cd $HOME/src/apr-1.5.2/ $ ./configure --prefix=/usr/local/apr/ $ make $ sudo make install
Compilando o Apache APR-Util.
$ cd $HOME/src/apr-util-1.5.4/ $ ./configure --prefix=/usr/local/apr-util/ --with-apr=/usr/local/apr/ $ make $ sudo make install
Compilando o nghttp2.
$ cd $HOME/src/nghttp2-1.3.4/ $ ./configure --prefix=/usr/local/nghttp2/ $ make $ sudo make install
Compilando o OpenSSL.
$ cd $HOME/src/openssl-1.0.2d/ $ ./config --prefix=/usr/local/openssl/ $ make $ sudo make install
E aí é só compilar o Apache.
$ cd $HOME/src/httpd-2.4.17/ $ ./configure --prefix=/usr/local/httpd/ --enable-http2 --enable-http --enable-ssl --enable-ssl-staticlib-deps --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --with-nghttp2=/usr/local/nghttp2/ --with-ssl=/usr/local/openssl/ --enable-mods-static=ssl $ make $ sudo make install
Crie a chave e o certificado SSL.
$ mkdir /usr/local/httpd/conf/ssl $ openssl genrsa -out /usr/local/httpd/conf/ssl/server.key 2048 $ openssl req -subj "/C=BR/ST=SP/L=São Paulo/O=Acme, Inc./OU=DevOps" -new -key /usr/local/httpd/conf/ssl/server.key -out /usr/local/httpd/conf/ssl/server.csr $ openssl x509 -req -days 365 -in /usr/local/httpd/conf/ssl/server.csr -signkey /usr/local/httpd/conf/ssl/server.key -out /usr/local/httpd/conf/ssl/server.crt
Copie os arquivos de configuração do Apache.
$ wget https://raw.githubusercontent.com/bluesoft/dockerfiles/master/httpd-h2/httpd.conf.docker $ wget https://raw.githubusercontent.com/bluesoft/dockerfiles/master/httpd-h2/httpd-vhost.conf.docker $ sudo mv httpd.conf.docker /usr/local/httpd/conf/httpd.conf $ sudo mv httpd-vhost.conf.docker /usr/local/httpd/conf/extra/httpd-vhosts.conf
Copie o seu site para /usr/local/httpd/htdocs/.
$ mkdir -p /usr/local/httpd/htdocs/ $ sudo cp -R meu-site/* /usr/local/httpd/htdocs/
Remova os arquivos baixados.
$ rm -r $HOME/src/*
Inicie o Apache.
$ /usr/local/httpd/bin/httpd -k start
Acesse seu site pelo link https://localhost. Troque localhost pelo IP da máquina onde o Apache foi instalado.
Veja se o site está negocionando o protocolo HTTP2 utilizando o SPDY indicator, para Firefox, ou o Chrome SPDY indicator, para o Chrome.
Agora você tem o HTTP/2 no Apache!
Gostou deste post? Deixe um comentário.
Até a próxima!