O HTTP/2 torna nossas aplicações web mais rápidas, simples e robustas. O http2 abre uma série de novas oportunidades para otimizar nossas aplicações e melhorar o desempenho.
O principal objetivo do http/2 é reduzir a latência permitindo a multiplexação total de solicitações e respostas, minimizando a sobrecarga de protocolos por meio de compactação eficiente do http header, além de adicionar suporte para a priorização de solicitações e envio de dados aos servidores. Existem ainda um grande suporte de outros aprimoramentos de protocolo, como novos mecanismos de controle de fluxo, tratamento de erros e atualização, mas os recursos descritos acima são os mais importantes .
Mãos a obra
Notas – Antes de começar:
Certifique-se que você tenha instalado em seu domínio um certificado ssl válido. http/2 somente funciona com HTTPS
Este passo a passo foi escrito utilizando um servidor com Painel CWP Pro (CentOS Web Panel) e CentOS 6, porém, já foi testado no CentOS 7, com ou sem Painel de controle (foram necessárias apenas algumas adaptações lógicas).
-Acesse o SSH de seu servidor como root
Atualizando os packs do OS para a última versão
yum clean all
yum -y update
Atualizando Autoconf:
cd /usr/local/src
rm -rf autoconf-*
wget https://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz
tar zxvf autoconf-latest.tar.gz
cd autoconf-*
./configure --prefix=/usr
make && make install
Atualizando Openssl:
cd /usr/local/src
rm -rf openssl-*
wget https://www.openssl.org/source/openssl-1.0.2q.tar.gz
tar zxvf openssl-1.0.2q.tar.gz
cd openssl-*
./config --prefix=/usr --openssldir=/usr/lib64 shared
make && make install
Instalando Nghttp2:
cd /usr/local/src rm -rf nghttp2-*
yum install libtool -y
wget https://github.com/nghttp2/nghttp2/releases/download/v1.35.1/nghttp2-1.35.1.tar.gz
tar zxvf nghttp2-1.35.1.tar.gz
cd nghttp2-*
./configure --prefix=/usr
make && make install
Acesse o diretório de configuração do nginx
cd /etc/nginx/conf.d/vhosts/
Edite o arquivo “seudodominio_ssl.conf”
nano seudodominio_ssl.conf
Localize:
server {
listen xxx.xx.xxx.xx:443;
xxx é apenas um exemplo. não altere o ip
Adicione após “:443” ssl http2
server {
listen xxx.xx.xxx.xx:443 ssl http2;
Salve e saia do editor nano ( “ctrl+x “ e “y” )
Reiniciei o nginx
service nginx restart
Agora, vamos verificar se está tudo certo, acesse https://tools.keycdn.com/http2-test digite a url de seu site para verificar se o HTTP/2 está ativo
LEMP é um grupo de Software Livre. A sigla LEMP significa Linux, Nginx (pronuncia-se Engine x), MySQL e PHP .
Nginx é um software de servidor Web de código aberto robusto, pequeno, de alto desempenho, servidor proxy reverso e também servidor proxy de E-mail. Os dados do site serão armazenados em um banco de dados MySQL (usando MariaDB) e o conteúdo dinâmico será processado pelo PHP 7.4.
O Pré Requisito para continuar com esse tutorial é que você já tenha o Linux CentOS 7 instalado.
Primeiro passo – Instalar o Nginx
No CentOS o Nginx não está disponível no repositório padrão. Vamos adicionar o repositório EPEL para que possamos instalar o Nginx através do yum.
yum install epel-release
Com o repositório EPEL instalado no servidor, vamos instalar o nginx
yum install nginx
Vamos iniciar o nginx
systemctl start nginx
Nós já podemos acessar utilizando o IP de seu servidor, a página “default” do nginx e certificar que tudo está ok. Caso não saiba ou tenha certeza de qual é o IP utilize:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
ou
curl http://icanhazip.com
Se está utilizando o CentOS 7, provavelmente precisará de uma nova regra ao Firewall padrão (firewalld), para permitir tráfego na porta 80.
Você verá a página Default do NGINX, que é exibida para fins de informação e teste.
Página Default do NGINX
Segundo Passo – Instalar MySQL(MariaDB)
Agora que temos o servidor web NGINX instalado e configurado, vamos instalar o MariaDB, que irá armazenar e gerenciar os dados do site. O MariaDB é mantido pela comunidade de desenvolvedores originais do antigo e conhecido MySQL.
O MariaDB vem com repositórios padrão do CentOS, bastaria utilizar o yum para instala-lo rapidamente. Porém nós desejamos instalar o MariaDB 10.4, que não é a versão disponível como padrão . Após atualizar o servidor com yum , vamos adicionar o repositório do MariaDB e definir a versão ‘0.4
yum update -y;
Crie o arquivo abaixo e insira:
nano /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
Atualize o cache do yum
yum makecache fast
Instale o MariaDB
yum -y install MariaDB-server MariaDB-client
Vamos dar um start no MariaDB e habilita-lo para iniciar após o reboot.
systemctl start mariadb
systemctl enable mariadb
Com o MariaDB (MySQL) iniciado, precisamos executar um script de segurança que irá remover algumas configurações default e deixará nossa instalação mais segura.
mysql_secure_installation
A primeira opção irá perguntar qual é a senha do root para o MariaDB. Como acabamos de instalar o MariaDB, você deverá deixar esta opção em branco e pressionar enter para continuar. Na próxima questão será solicitado que digite uma senha para o root do MariaDB e confirme.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
New password: password
Re-enter new password: password
Password updated successfully!
Reloading privilege tables..
... Success!
Para as outras questões digite Y.
Remove anonymous users? [Y/n] Y
...
Disallow root login remotely? [Y/n] Y
...
Remove test database and access to it? [Y/n] Y
...
Reload privilege tables now? [Y/n] Y
Teceiro Passo – Instalar o PHP 7.4
O PHP é o responsável em processar o código para exibir conteúdo dinâmico. Ele poderá executar scripts, conectar-se ao bancos de dados MySQL para obter informações e entregar o conteúdo processado ao seu servidor da Web para exibição.
O primeiro passo será instalar o repositório do CentOS que contém os pacotes de instalação do PHP 7.4
Nós já temos agora, o php 7.4 e componentes instalados no servidor mas precisamos fazer algumas modificações para manter o servidor mais seguro.
Edite o arquivo principal de configuração do php:
nano /etc/php.ini
Vamos configurar o PHP para aceitar apenas URLs de arquivos que realmente existem no servidor. Isso atenua uma vulnerabilidade de segurança em que o interpretador PHP pode ser induzido a permitir a execução de código arbitrário se o arquivo .php solicitado não estiver presente no sistema de arquivos.
Localize cgi.fix_pathinfo altere para 0 , isso irá desabilitar essa função.Lembre-se de Remover o “;” antes do nome para descomentar essa função.
cgi.fix_pathinfo=0
Salve e saia do editor nano. ( ctrl+x , y)
Abra e edite o arquivo de configuração do php-fpm www.conf:
nano /etc/php-fpm.d/www.conf
Procure a linha “listen =” e modifique conforme abaixo:
listen = /var/run/php-fpm/php-fpm.sock
Localize listen.owner e listen.group . Descomente removendo o “;” antes das funções e altere para :
listen.owner = nginx
listen.group = nginx
Localize user e group. Altere os valores de apache para nginx
user = nginx
group = nginx
Salve e saia do editor nano. ( ctrl+x , y)
Agora, precisamos apenas iniciar nosso processador de PHP e habilitar para iniciar após o boot.
systemctl start php-fpm
systemctl enable php-fpm
Quarto Passo – Configurar Nginx para processar páginas PHP 7.2
Agora vamos criar um novo arquivo de configuração para o Nginx . Substitua em server_name “nome_dominio_ou_IP_do_Seu_Servidor” para o IP de seu servidor :
nano /etc/nginx/conf.d/default.conf
Insira o código abaixo:
server {
listen 80;
server_name nome_dominio_ou_IP_do_Seu_Servidor;
# note that these lines are originally from the "location /" block
root /usr/share/nginx/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Salve e saia do editor nano. ( ctrl+x , y)
Reinicie o nginx para que as modificações sejam carregadas.
systemctl restart nginx
Para Finalizar, vamos criar um arquivo de teste em php que trará informações sobre nosso servidor e php .
nano /usr/share/nginx/html/info.php
Insira o código:
Salve e saia do editor nano. ( ctrl+x , y) .
Agora acesse :
http://ip_do_seu_servidor/info.php
.
Será exibido uma página semelhante a :
Agora você tem o LEMP instalado e configurado em seu servidor da melhor forma possível. Com estas configurações você poderá hospedar em seu servidor os mais diversos sistemas, como por exemplo WordPress, Joomla, etc…