Este passo-a-passo tem como objetivo a configuração do Debian Linux com as versões mais atuais dos programas necessários para rodar um servidor Apache 2.4 com o uso de HTTP/2 e HTTPS.
Sistema Operacional utilizado:
- Debian 8 (Jessie) 64bits, minimal install - versão mínima do Debian, sem recursos gráficos ou desnecessários, somente o que realmente será utilizado.
1) Passos Iniciais
Atualização do sistema e instalação de pacotes necessários
Se a versão especificada no wget der erro 404 verifique a versão atual disponível em https://httpd.apache.org/download.cgi
Crie o arquivo /etc/systemd/system/apache.service com o conteúdo abaixo:
Antes de tudo faça um backup do arquivo de configuração original
Procure pela linha ServerRoot "/usr/local/apache/" e adicione logo abaixo as seguintes linhas:
Ex:
Faça backup do arquivo httpd-ssl.conf:
Renomeie o arquivo httpd-vhosts.conf:
Crie a pasta onde serão salvos os logs do localhost
Reinicie o Apache
Caso esteja utilizando o Chrome, precisará ativar o https para redes locais. Para isso, basta abrir o Chrome e colar na barra de endereços a seguinte instrução: chrome://flags/#allow-insecure-localhost
Selecionar Enabled e reiniciar o navegador.
Para testar o uso do HTTP/2 você pode utilizar a extensão HTTP/2 and SPDY indicator no Chrome.
Pronto! Você esta rodando um servidor Apache 2.4 com HTTPS e HTTP/2:
Veja aqui como Criar Virtual Host no Apache Instalado Via Compilação.
Sistema Operacional utilizado:
- Debian 8 (Jessie) 64bits, minimal install - versão mínima do Debian, sem recursos gráficos ou desnecessários, somente o que realmente será utilizado.
1) Passos Iniciais
Atualização do sistema e instalação de pacotes necessários
sudo apt-get update && sudo apt-get upgrade sudo apt-get install autoconf automake gcc libzip-dev bison autoconf build-essential pkg-config git-core libltdl-dev libbz2-dev libxml2-dev libxslt1-dev libssl-dev libicu-dev libpspell-dev libenchant-dev libmcrypt-dev libpng-dev libfreetype6-dev libmysqlclient-dev libreadline-dev libcurl4-openssl-dev libjpeg62-turbo-dev libtool-bin libexpat1-dev2) Compilar e Instalar OpenSSL 1.1.x
wget http://www.openssl.org/source/openssl-1.1.0h.tar.gz --no-check-certificate tar -zxvf openssl-1.1.0h.tar.gz cd openssl-1.1.0h ./config shared zlib --prefix=/usr/local/openssl --openssldir=/usr/local/openssl -Wl,--enable-new-dtags,-rpath,'$(LIBRPATH)' make make test sudo make install sudo ldconfig /usr/local/openssl/lib/ cd ..3) Compilar e Instalar APR (pacote necessário para ativar o HTTP/2)
wget http://www-us.apache.org/dist//apr/apr-1.6.3.tar.gz tar -zxvf apr-1.6.3.tar.gz cd apr-1.6.3 ./configure --prefix=/usr/local/apr/ make sudo make install cd ..4) Compilar e Instalar APR-UTILS (pacote necessário para ativar o HTTP/2)
wget http://www-eu.apache.org/dist//apr/apr-util-1.6.1.tar.gz tar -zxvf apr-util-1.6.1.tar.gz cd apr-util-1.6.1 ./configure --prefix=/usr/local/apr-util/ --with-apr=/usr/local/apr/ make sudo make install cd..5) Compilar e Instalar NGHTTP2 - HTTP/2 C Library https://github.com/nghttp2/nghttp2
wget https://github.com/nghttp2/nghttp2/releases/download/v1.32.0/nghttp2-1.32.0.tar.gz --no-check-certificate tar -zxvf nghttp2-1.32.0.tar.gz cd nghttp2-1.32.0 export OPENSSL_CFLAGS="-I/usr/local/openssl/include" export OPENSSL_LIBS="-L/usr/local/openssl/lib -lssl -lcrypto" ./configure --prefix=/usr/local/nghttp2/ make sudo make install cd ..6) Compilar e Instalar Apache 2.4
Se a versão especificada no wget der erro 404 verifique a versão atual disponível em https://httpd.apache.org/download.cgi
wget http://www-us.apache.org/dist//httpd/httpd-2.4.34.tar.gz tar -zxvf httpd-2.4.34.tar.gz cd httpd-2.4.34 ./configure --prefix=/usr/local/apache/ --enable-ssl=shared --enable-so --enable-http2 --enable-rewrite --enable-imagemap --enable-vhost-alias --with-mpm=event --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --with-nghttp2=/usr/local/nghttp2/ --with-ssl=/usr/local/openssl/ make sudo make install cd ..7) Adicionar entrada de controle do Apache ao comando systemctl
Crie o arquivo /etc/systemd/system/apache.service com o conteúdo abaixo:
#### INICIO [Unit] Description=The Apache HTTP Server After=network.target [Service] Type=forking ExecStart=/usr/local/apache/bin/apachectl -k start ExecReload=/usr/local/apache/bin/apachectl -k graceful ExecStop=/usr/local/apache/bin/apachectl -k graceful-stop PIDFile=/usr/local/apache/logs/httpd.pid PrivateTmp=true [Install] WantedBy=multi-user.target ### FIMExecute os seguintes comandos para ativar a configuração e testar se está tudo funcionando:
sudo systemctl daemon-reload sudo systemctl enable apache sudo systemctl start apache8) Criar Usuário e Grupo para o Apache
sudo groupadd www sudo useradd apache -g www --no-create-home --shell /sbin/nologin9) Configuração do Apache
Antes de tudo faça um backup do arquivo de configuração original
sudo cp /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf.originalAbra o arquivo /usr/local/apache/conf/httpd.conf e faça todas as instruções que seguem.
Procure pela linha ServerRoot "/usr/local/apache/" e adicione logo abaixo as seguintes linhas:
Protocols h2 h2c http/1.1 User apache Group wwwDescomente as seguintes linhas de módulos:
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so LoadModule deflate_module modules/mod_deflate.so LoadModule expires_module modules/mod_expires.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so LoadModule ssl_module modules/mod_ssl.so LoadModule http2_module modules/mod_http2.so LoadModule rewrite_module modules/mod_rewrite.soAltere o bloco que inicia com <ifmodule unixd_module> alterando para o usuário e grupo criados anteriormente:
User apache Group wwwDescomente e altere a linha ServerName para o nome que deseja para o servidor
Ex:
ServerName MeuWebSiteProcure o bloco que inicia com <ifmodule dir_module> e substitua todo o bloco por:
<IfModule php7_module> AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps <IfModule dir_module> DirectoryIndex index.php index.html </IfModule> </IfModule>Procure e descomente as linhas deixando de acordo com o que segue:
# Server-pool management (MPM specific) Include conf/extra/httpd-mpm.conf # Secure (SSL/TLS) connections Include conf/extra/httpd-ssl.confAdicione no final do arquivo a seguinte linha:
Include conf/extra/httpd-vhosts.conf10) Configurar o uso de SSL no Apache
Faça backup do arquivo httpd-ssl.conf:
sudo cp /usr/local/apache/conf/extra/httpd-ssl.conf /usr/local/apache/conf/extra/httpd-ssl.conf.originalAbra o arquivo /usr/local/apache/conf/extra/httpd-ssl.conf e remova todo o bloco que inicia com <VirtualHost _default_:443> até o fim
## ## SSL Virtual Host Context ## daqui em diante apague todo o bloco...Salve o arquivo e feche o editor.
Renomeie o arquivo httpd-vhosts.conf:
sudo mv /usr/local/apache/conf/extra/httpd-vhosts.conf /usr/local/apache/conf/extra/httpd-vhosts.conf.originalCrie um novo arquivo httpd-vhosts.conf vazio e insira o seguinte conteúdo:
<IfModule mod_ssl.c> <VirtualHost *:443> ServerName 192.168.46.150 DocumentRoot "/usr/local/apache/htdocs/" <Directory /usr/local/apache/htdocs/> Options Indexes FollowSymLinks MultiViews AllowOverride None Require all granted </Directory> SSLEngine on SSLCipherSuite EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SH SSLProtocol TLSv1 TLSv1.1 TLSv1.2 SSLCertificateFile /usr/local/apache/conf/ssl/server.crt SSLCertificateKeyFile /usr/local/apache/conf/ssl/server.key ErrorLog "/usr/local/apache/htdocs/logs/error_log" CustomLog "/usr/local/apache/htdocs/logs/access_log" common </VirtualHost> </IfModule>Altere a linha ServerName para o ip utilizado, salve e feche o arquivo
Crie a pasta onde serão salvos os logs do localhost
mkdir /usr/local/apache/htdocs/logs/Crie a pasta /usr/local/apache/conf/ssl/ e vá para ela
sudo mkdir /usr/local/apache/conf/ssl/ cd /usr/local/apache/conf/ssl/logo após execute os seguintes comandos para gerar a chave privada e o certificado a serem utilizados:
sudo openssl genrsa -out server.key 2048 sudo openssl req -new -key server.key -out server.csr sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt11) Testando as configurações
Reinicie o Apache
sudo systemctl restart apacheSe não houve nenhum erro ao executar o comando acima, então você já pode tentar abrir o ip no navegador com https.
Caso esteja utilizando o Chrome, precisará ativar o https para redes locais. Para isso, basta abrir o Chrome e colar na barra de endereços a seguinte instrução: chrome://flags/#allow-insecure-localhost
Selecionar Enabled e reiniciar o navegador.
Para testar o uso do HTTP/2 você pode utilizar a extensão HTTP/2 and SPDY indicator no Chrome.
Pronto! Você esta rodando um servidor Apache 2.4 com HTTPS e HTTP/2:
Veja aqui como Criar Virtual Host no Apache Instalado Via Compilação.
Comentários
Postar um comentário