No Nginx podemos realizar uma série de configurações, uma delas é o cache de conteúdo. Ao ativarmos o cache de conteúdo, nosso site WordPress vai ganhar muito poder de performance, pois irá reduzir drasticamente o tempo de resposta e como consequência irá melhorar a experiência do usuário.
Podemos dizer bem a grosso modo como isso funciona. Quando uma página ou o resultado de uma página entrar for processada pelo PHP e MySQL, o Nginx irá armazenar o resultado no cache do servidor, e quando um segundo acesso for feito, o nginx irá responder muito mais rápido com o conteúdo da página. Isso é válido se a página não sofrer nenhuma alteração. As vantagens são:
Diminuição do consumo de CPU e RAM
Potencialização no número de conexões simultâneas que o WordPress poderá atender
Para configurar o Cache Nginx siga os passos abaixo.
1. Crie um diretório para que o Nginx utilize para armazenamento de cache persistente e de as permissões para que o usuário consiga manipular arquivos dentro do diretório do cache.
4. Agora precisamos informar ao Nginx para que ele não coloque certas páginas em cache, como por exemplo a página de login ou telas do administrador.
Adicione o conteúdo antes da linha #### Locations
set $skip_cache 0;
# POST requests and urls with a query string should always go to PHP
if ($request_method = POST) {
set $skip_cache 1;
}
if ($query_string != "") {
set $skip_cache 1;
}
# Don’t cache uris containing the following segments
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
set $skip_cache 1;
}
# Don’t use the cache for logged in users or recent commenters
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
set $skip_cache 1;
}
5. A seguir, adicione as seguintes diretivas dentro do bloco do php:
Salve o arquivo usando CTRL + X seguido de Y e Enter, e reinicie o Nginx para validar todas as novas configurações.
sudo service nginx restart
Terceiro Benchmark: Nginx com Cache
Agora que já habilitamos o cache do Nginx, podemos fazer um terceiro teste de carga. Eu espero que agora o servidor utilize menos ou praticamente nada do PHP e MySQL, e apenas o Nginx que trabalhe fornecendo o conteúdo já armazenado em cache.
Ao analisar o gráfico do teste simulando novamente os 100 usuários, dessa vez os resultados foram surpreendentes. Conseguimos realizar 19.856 solicitações com sucesso, nenhum erro 400/400, nenhum timeout e nenhum erro de rede.
Como o conteúdo em cache estava sendo fornecido pelo Nginx, mesmo no pico máximo de 100 usuários o tempo de resposta ficou em média 151ms, muito abaixo dos primeiros testes que superavam
Observe que durante o teste o consumo de CPU ficou em média 11% 20% no máximo, o consumo de memória ficou em média 278M e 240M, e o Load Average praticamente zerado.
Nos processos do sistema vimos apenas o procsso do Nginx trabalhando rs.
Plugin de Cache Nginx para WordPress
Você precisa instalar um plugin no WordPress para que ele consiga limpar o cache do servidor sempre que uma atualização for feita. Felizmente existe um plugin gratuito que é o Nginx Cache, você pode instalar esse plugin e seguir para a configuração.
Uma vez que o plugin está instalado, você precisa ativa-lo e configura-lo. No WordPres clique em Ferramentas – Nginx Cache, e insira no Cache Zone Path o caminho do servidor onde o Nginx armazena o cache. Também habilite o Purge Cache para que ele limpe o cache sempre que algo for atualizado.
Por fim, salve e faça alguns testes mudando o título do WordPress ou alguma palavra em alguma página e veja se o conteúdo é atualizado corretamente.
Cache de Objetos com Redis
O cache de objetos armazena os resultados da consulta do banco de dados para que, ao invéz de executar uma mesma consulta em cada acesso do usuário, os resultados sejam servidos a partir do cache.
Isso também melhora consideravelmente o desempenho do WordPress, pois elimina a necessidade de consultas ao banco de forma desnecessária e consumindo recursos a toa.
O Redis é um software de código aberto e conhecido em todo o mundo, é o melhor software para essa finalidade. E é ele quem iremos instalar no nosso servidor WordPress.
Para instalar o Redis execute os comandos abaixo:
sudo apt install -y redis-server
sudo service php8.0-fpm restart
Você pode instalar o módulo Redis Nginx em seu servidor para executar um cache, mas para que o WordPress use o Redis como um cache de objeto, você precisa instalar um plug-in de cache de objeto Redis.
Após o plugin for instalado e ativo, você precisa ativar o cache de objetos, basta clicar em Ativar o cache de objeto.
Se tudo estiver ok, você verá uma tela como a imagem abaixo:
Agora que o cache de objetos está ativo, o servidor pode ter um leve aumento no consumo de memória RAM uma vez que o Redis armazena cache na memória RAM e não no disco. No entanto, várias consultas que outrora seriam enviados direto para o banco, não vão mais precisar incomoda-lo na maioria das vezes.
Conclusão
Nesse capítulo vimos como configurar o Cache Nginx no servidor e o cache de Objetos com o Redis. Esses dois tipos de cache vão melhorar e muito o desempenho dos nossos projetos WordPress e manter uma estabilidade no nosso servidor.
No próximo capítulo vamos revisar tarefas cron e implementação uma solução de envio de e-mails no nosso WordPress.
Nos últimos anos possuir um site otimizado se tornou praticamente crucial para o sucesso de um projeto. Para atingir este fim é necessário uma série de otimizações, seja a nível de código, seja a nível de servidor para que nossa hospedagem WordPress tenha performance.
Nesse capítulo você vai aprender a otimizar levemente o Nginx e o PHP do servidor. No entanto, as otimizações realizadas nesse capítulo não podem ser generalizadas a todo e qualquer projeto, muito menos a todo e qualquer servidor, para cada projeto e cada servidor, valores diferentes são utilizados.
Partimos do principio que estamos trabalhando com um site simples de pequeno porte e um servidor de 2GB e 1 núcleo de CPU.
Primeiro Benchmark: Teste de Carga e Análise de Performance
Antes de iniciarmos as otimizações no Nginx e PHP, vamos fazer alguns testes de performance e capacidade de carga do servidor, para termos um antes e depois e poder conferir as melhorias realizadas.
É muito difícil simular um tráfego real, não existe uma ferramenta que simule um acesso real de um cliente, mas podemos testar mesmo que robotizado esse processo.
Teste de Carga 100 pessoas simultâneas
Nosso teste de carga vai simular a entrada de 100 usuários simultâneos começando desde o primeiro usuário até o centésimo, tudo isso durante 1 minuto. Os “usuários” irão realizar requisições na pagina inicial do nosso site.
Mesmo sem otimizações o nosso servidor consumiu menos de 400MB de RAM, no entanto o único núcleo de CPU ficou em 100% de uso, apesar que eu já esperava pelo fato de termos apenas um único núcleo. O Load averange não cresceu praticamente nada.
Já analisando o relatório do teste pude perceber que não tive nenhum erro 400/500 e nenhum timeout. Todas as solicitações foram realizadas com sucesso, e na prática todos os 100 usuários conseguiram ficar online sem que o servidor caísse.
O único ponto negativo foi o tempo de resposta, tivemos um Average de 3323ms, ou seja, quando os 100 usuários estavam ao mesmo tempo no site, toda e qualquer página poderia estar muito lenta para uma boa navegação.
E se analisarem o gráfico, enquanto o número de clientes entravam no site aumentava o average aumentava proporcionalmente.
Análise de Performance
Sabemos que um template WordPress dos modelos default são bem otimizados e leves, e é justamente assim que os sites deveriam ser. Sempre priorizando o máximo de leveza para o usuário. O teste que realizamos não faz muito sentido eu realizar novamente, pois praticamente tiramos 100/100 em tudo.
Vale deixar claro que a localidade do servidor VPS e do servidor do Gtmetrix que realizou o teste pode influenciar na nota.
Tendo esses dados em mente, vamos partir para as otimizações e comparar no final do capítulo os resultados.
Otimizando o Nginx
O Nginx possui um arquivo de configuração principal que está localizado em: /etc/nginx/nginx.conf. Nesse arquivo podemos configurar e definir várias opções de otimizações que vão instruir como o Nginx vai trabalhar e processar as requisições.
Por padrão o Nginx já possui um arquivo default, mas vamos remover todo o conteúdo dele e recria-lo bem personalizado. Para isso, acesse o arquivo e apague todo o conteúdo do nginx.conf
nano /etc/nginx/nginx.conf
Uma vez que foi apagado todo o conteúdo, copie e cole o conteúdo abaixo no arquivo de configuração do nginx. Mas lembre de alterar o usuário em negrito pelo usuário que você criou anteriormente.
Salve o arquivo usando CTRL + X seguido de Y e Enter. E não esqueça de reiniciar o nginx:
sudo /etc/init.d/nginx restart
No vídeo onde gravamos a aula deste capítulo eu explico melhor sobre as diretivas que fazem parte desde arquivo de configuração e as otimizações que realizamos para garantir o máximo de performance.
Otimizando o PHP e PHP-FPM
Ajustes no PHP.INI
O PHP.INI é um arquivo de configurações do PHP, possui diretivas de como o PHP deve trabalhar e se comportar em relação ao uso de memória RAM, módulos e extensões instaladas, límites de usos e execuções, uploads e muito mais.
No geral, ele possui configurações que vão funcionar bem para projetos pequenos, mas pensando em projetos wordpress precisamos realizar minimamente algumas alterações visando otimizar nosso PHP.
Localize o arquivo php.ini e realize as seguintes alterações:
Procure linha por linha e altere os valores, caso uma linha não exista, insira no final do arquivo. Você pode pesquisar por uma determinada palavra digitando no terminal CTRL + W , nome da diretiva e Enter.
Explicação:
post_max_size: Configura o tamanho máximo dos dados postados. Esta configuração também afeta o upload de arquivos.
date.timezone: Configura o fuso horário padrão utilizado por todas as funções de data e hora em um script
max_execution_time: Isso configura o tempo máximo, em segundos, que um script é permitido executar antes de ser terminado.
max_input_vars: Configura quantas variáveis de entrada serão aceitas, com o limte aplicado a cada super global $_GET, $_POST e $_COOKIE separadamente).
memory_limit: Define a quantidade máxima de memória em bytes que um script pode alocar. Isto ajuda a prevenir que scripts mal escritos consumam toda a memória disponível no servidor.
max_input_time: Configura o tempo máximo, em segundos, que um script é permitido dispender interpretando dados de entrada, como GET e POST.
PHP-FPM
O PHP-FPM é um gerenciador de processos que gerencia e trabalha com o FastCGI SAPI (Server API) em PHP. Ele funciona como um serviço independente, e pode ser utilizado em qualquer servidor web que seja compatível com o FastCGI, ex: Nginx.
Em servidores de hospedagem WordPress, o PHP-FPM deve ser otimizado visando garantir um pouco mais de performance para que um site WordPress consiga operar sem muitos esforços, uma vez que o WordPress é um CMS que pode rapidamente ficar denso e pesado.
Para o PHP-FPM precisamos otimizar o pool do PHP, que está localizado em:
nano /etc/php/8.0/fpm/pool.d/www.conf
Servidor com 1GB de RAM: (O PHP pode consumir até 512M de RAM, e só será usado se precisar)
pm = ondemand
pm.max_children = 2
pm.process_idle_timeout = 5s
# Comente as linhas abaixo para não quebrar seu FPM
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
Servidor com 2GB de RAM: (O PHP pode consumir até 1G de RAM, e só se precisar)
pm = ondemand
pm.max_children = 5
pm.process_idle_timeout = 5s
# Comente as linhas abaixo para não quebrar seu FPM
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
Servidor com 4GB de RAM: (O PHP pode consumir até 2.5G de RAM, no entanto mesmo sem uso já consome recursos, modelo indicado para lojas e portais)
Salve o arquivo usando CTRL + X seguido de Y e Enter.
Otimização OPCACHE
O OPcache melhora o desempenho do PHP armazenando bytecode de script pré-compilado na memória compartilhada, eliminando assim a necessidade do PHP carregar e analisar scripts em cada solicitação.
Para configurarmos o desempenho do PHP utilizando o opcache realize os passos abaixo:
Salve o arquivo usando CTRL + X seguido de Y e Enter. E reinicie o PHP:
/etc/init.d/php8.0-fpm restart
Segundo Benchmark: Teste de Carga
Agora que já otimizamos o nosso Nginx e PHP, podemos partir para um segundo teste de carga no servidor.
Esse segundo teste o servidor consumiu levemente alguns megas de RAM a menos, e o consumo de CPU e Load Average praticamente iguais ao teste anterior.
Já o relatório de carga também foi bem parecido, a diferença é que dessa vez os 100 usuários tiveram uma leve diminuição no tempo de resposta e consequentemente conseguiram realizar mais solicitações na página.
Se eu mudasse a quantidade de usuários no teste para números como 300/500/1000 usuários, os dados poderiam ser bem diferentes. Mas estamos baseando em projetos pequenos que poderiam ter até 100 usuários.
Conclusão
Nesse capítulo realizamos uma série de otimizações no Nginx, PHP, FPM e Opcache.
No próximo capítulo vamos continuar nossas otimizações, mas agora ativando o cache e você vai ficar impressionado com os resultados de um bom cache configurado no servidor.
No capítulo 1 do nosso guia, apresentei etapas iniciais para configuração e segurança de um servidor na Vultr com Ubuntu 20:04 para hospedagem WordPress. Neste capítulo, vou te guiar pelo processo de configuração do LEMP (Linux, Nginx, MySQL e PHP), como também instalarmos o SSL com Let’s Encrypt em nosso domínio.
Antes de prosseguir, já realize a conexão SSH no seu servidor utilizando o usuário criado no capítulo 1, caso não esteja com o terminal aberto.
Instalando o Nginx no Ubuntu
O Nginx é disparado um dos web servers mais rápidos que temos, e seu poder de processar milhares de requisições e conexões é surpreendente. Quando pensamos em uma hospedagem WordPress logo pensamos no Nginx, uma vez que performance e velocidade se tornou cada vez mais um fator determinante em projetos web.
Para instalarmos o Nginx vamos utilizar o repositório de pacotes mantido por Ondřej Surýque inclui os pacotes estáveis mais recentes do Nginx.
Para instalar o Nginx, primeiramente adicione o repositório e atualize as listas de pacotes:
Você pode verificar a versão do Nginx executando o comando:
nginx -v
Agora o Nginx está instalado em nosso servidor. E pelo menos nesse capítulo não vamos realizar nenhuma configuração avançada, isso será feito nos próximos capítulos onde iremos otimizar e realizar alguns ajustes para ter uma maior performance no nosso WordPress.
Instalação do PHP 8
Para instalarmos o PHP 8 em nosso servidor WordPress vamos utilizar novamente o repositório mantido por Ondřej Surý.
Adicione o repositório e atualize as listas de pacotes:
Note que estamos instalando também o php-fpm. FastCGI Process Manager (FPM) é uma implementação alternativa do PHP FastCGI com alguns recursos adicionais que funcionam muito bem com o Nginx. É o gerenciador de processos recomendado para usar ao instalar o PHP com Nginx.
Configurando o PHP 8 e PHP-FPM
Agora que temos instalado o Nginx e o PHP 8 precisamos configurar o usuário e o grupo sob o qual o serviço será executado. Para essa tarefa, precisamos alterar o arquivo de configuração de pool padrão do PHP.
sudo nano /etc/php/8.0/fpm/pool.d/www.conf
Altere todas as linhas que contém o usuário www-data, para o nome de usuário que você criou no capítulo 1.
user = www-data
group = www-data
listen.owner = www-data
listen.group = www-data
user = alex
group = alex
listen.owner = alex
listen.group = alex
Agora salve o arquivo para finalizar. Pressione CTRL + X seguido de Y e Enter.
Podemos agora reiniciar o nosso PHP 8 com o comando abaixo:
sudo service php8.0-fpm restart
Testando o Nginx e PHP
Nesse momento já podemos realizar um teste rápido para verificar se o Nginx está se comunicando corretamente com o PHP. Para isso, vamos editar o arquivo de configuração do nginx e habilitar os scripts PHP.
sudo nano /etc/nginx/sites-available/default
Encontre a seção onde os scripts PHP são configurados:
# pass PHP scripts to FastCGI server
#
#location ~ \.php$ {
# include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
# fastcgi_pass unix:/run/php/php8.0-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
#}
Podemos alterar deixando assim:
# pass PHP scripts to FastCGI server
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
}
Salve o arquivo usando CTRL + X seguido de Y e Enter.
Agora altere o usuário que o nginx irá utilizar, pois isso vai tornar o gerenciamento de permissões muito mais tranquilo no futuro.
sudo nano /etc/nginx/nginx.conf
E troque o nome do usuário configurado no arquivo pelo usuário que você configurou:
user alex;
worker_processes auto;
pid /run/nginx.pid;
Salve o arquivo usando CTRL + X seguido de Y e Enter.
Reiniciamos o Nginx:
sudo service nginx restart
Vamos criar um arquivo de PHP simples na raiz da nossa hospedagem WordPress:
sudo nano /var/www/html/info.php
E inserimos o conteúdo abaixo para que quando acessemos pelo IP no navegador, possamos verificar todas as diretivas e informações do PHP. A execução desse arquivo corretamente significará que o PHP está em execução e em comunicação com o Nginx.
<?php
phpinfo();
?>
Salve o arquivo usando CTRL + X seguido de Y e Enter.
Agora abra o navegador e insira o IP ou o nome do host configurado para visualizar o conteúdo:
ip_server/info.php
ou
wpserver.seudominio.com/info.php
Depois de testar e ver que está funcionando bem, você pode excluir esse arquivo, por motivos de segurança, pois ele expõe informações sobre o servidor.
rm -r /var/www/html/info.php
Emitindo SSL com Let’s Encrypt
Para emitir certificados SSL com o Let’s Encrypt é necessário que você tenha configurado os apontamentos de DNS para o IP do seu servidor. Na CloudFlare eu configurei o apontamento de um subdomínio, pois irei instalar o WordPress em um subdomínio:
Se você vai instalar o WordPress no seu domínio principal, em Nome digite apenas “@”, ou edite a linha onde o seu domínio está apontado para um IP e insira o IP do seu servidor contratado. Lembre também de desativar a nuvem de Proxy, por default ela estará com a cor laranja.
Agora que você configurou o apontamento, podemos instalar o Let’s Encrypt no nosso servidor WordPress. Execute os comandos abaixo:
Após inserir seu endereço de e-mail e concordar com os termos e condições, o cliente Certbot gerará o certificado solicitado. Lembre de anotar onde o arquivo de certificado fullchain.pem e o arquivo de chave privkey.pem foram armazenados, pois você pode precisar deles em algum momento.
NOTAS IMPORTANTES:
- Parabéns! Seu certificado e cadeia foram salvos em:
/etc/letsencrypt/live/blog.alexjunio.com.br/fullchain.pem
Seu arquivo de chave foi salvo em:
/etc/letsencrypt/live/blog.alexjunio.com.br/privkey.pem
Nginx Bloco de Servidor p/ WordPress
Para que o nosso servidor hospede um site WordPress corretamente, precisamos criar um arquivo de configuração do Nginx com foco em WordPress. Para essa atividade, execute os passos abaixo:
Limpe todo o conteúdo que está inserido no arquivo de configuração default:
sudo nano /etc/nginx/sites-available/default
Agora insira todo o conteúdo abaixo e substitua tudo o que está em negrito, colocando o nome do seu domínio.
Salve o arquivo usando CTRL + X seguido de Y e Enter. Você pode validar se o Nginx está configurado corretamente executando: sudo nginx -t . Se visualizar uma mensagem como a imagem abaixo, significa que configurou corretamente.
Agora você já pode acessar o seu domínio pelo navegador, e inclusive verá o SSL instalado.
Por último, defina as permissões do diretório root do WordPress corretamente:
chown -R alex:alex /var/www/html/
Instalando o WP-CLI
O WP-CLI é uma ferramenta bem interessante, com ela podemos gerenciar o nosso site WordPress pela linha de comando. Podemos realizar tarefas como: atualização de plugins, atualizações do WordPress, desabilitar plugins, criar usuários e muito mais.
Agora digite no terminal o comando wp e veja se a ferramenta está executando corretamente.
Instalando o MariaDB
O MariaDB é um substituto imediato para o MySQL. Decidimos instalar o MariaDB no nosso servidor WordPress por oferecer mais recursos e melhorias de velocidade em relação ao MySQL.
Para instalar o MariaDB, adicione o repositório e atualize as listas de pacotes:
Execute o script abaixo para configurar corretamente uma senha para o administrador do MariaDB e realizar algumas configurações:
sudo mysql_secure_installation
Siga as instruções e responda às perguntas. Aqui estão minhas respostas:
alex@wpserver.alexjunio.com.br:~$ sudo mysql_secure_installation
Switch to unix_socket authentication [Y/n] Y
Enabled successfully!
Reloading privilege tables..
... Success!
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] Y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] Y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] Y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Agora precisamos criar um usuário, uma database e deixa-lo configurado com seus devidos privilégios.
Criando uma base de dados
Para criar a base de dados e um usuário para a base do WordPress você precisa logar no MySQL utilizando o usuário root e a senha configurada anteriormente. No terminal digite o comando abaixo para login:
mysql -uroot -p
Uma vez logado, execute os comandos baixo para criar a database, usuário e definir os privilégios. Lembre de trocar as informações em negrito.
# Criando a database
CREATE DATABASE dbwordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
# Criando um usuário
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'senha';
# Dando permissões para o usuário
GRANT ALL PRIVILEGES ON dbwordpress.* TO 'wpuser'@'localhost';
# Liberando os privilégios
FLUSH PRIVILEGES;
# Saindo do shell do MySQL
exit;
Muito bem! Já temos a nossa base de dados e um usuário para poder utilizar no processo de instalação do WordPress.
Conclusão
Neste capítulo configuramos o Nginx, PHP com PHP-FPM, MariaDB para nosso banco de dados, WP-CLI e habilitamos o SSL Let’s Encrypt para nosso domínio.
Este é um conjunto de artigos criado para ensinar, passo a passo, como configurar um VPS Ubuntu para hospedar WordPress na Vultr com segurança, otimização e alto desempenho. Acompanhe a sequência completa e configure seu servidor de forma profissional!
Para configurar sua Hospedagem WordPress em um servidor privado na Vultr você vai precisar apenas de:
Domínio válido com acesso a DNS
Cadastro na Vultr
Criando um Servidor Privado na Vultr para seu WordPress
Neste tutorial não vamos abordar o processo inicial de criação do VPS na Vultr, pois temos uma aula ensinando todo o passo a passo e você pode visualizar a aula para aprender o processo.
O tutorial em vídeo também aborda o primeiro acesso via SSH no VPS, e é de suma importância que você aprenda minimamente a acessar o servidor.
No entanto escolha um VPS com os seguintes requisitos
Ubuntu 20:04 LTS
Mínimo 1GB RAM
No nosso tutorial eu escolhi um VPS do estilo Cloud Compute por ser um modelo de custo benefício, e nossa máquina é a de 2GB e 1CPU.
hospedagem wordpress
Você deve também selecionar uma região mais próxima de você para minimizar o máximo a latência. A Vultr tem data center em América/São Paulo, se sua aplicação WordPress precisa de uma latência bem pequena você pode escolher essa localidade.
Configurações Iniciais
Creio que você já assistiu o vídeo e aprendeu a criar o VPS e também acessar o servidor via SSH. Então está pronto para começarmos as nossas primeiras configurações no nosso servidor VPS WordPress.
Configurando o nome do host
Uma das primeiras coisas que devemos configurar no nosso servidor é o nome do host com um domínio totalmente qualificado (FQDN). Esse nome é único, mas não tem relação com o site WordPress que iremos configurar.
Realizar essa configuração vai facilitar bastante futuras conexões no servidor, uma vez que você poderá acessar o servidor sem utilizar o IP da máquina, e sim, apenas com o nome do host definido.
Para configurar o nome do host execute os comandos abaixo, substituindo o domínio.
Para colocar em vigor o nome do host associado ao seu domínio é necessário configura-lo no DNS do seu domínio. Nesse tutorial utilizo o DNS da CloudFlare, mas no geral o processo de configuração do apontamento do registro é o mesmo.
Note que eu configurei um registro do tipo (A) onde o nome (wpserver) está apontado para um IP, que será o IP do nosso servidor. Também desabilitei a nuvem de Proxy para não interferir futuramente na emissão do SSL.
Após realizar a configuração acima no seu provedor de DNS a propagação pode demorar de alguns minutos até algumas horas. Uma vez propagado, você vai poder realizar conexão via SSH utilizando o nome de host configurado, veja um exemplo abaixo:
ssh root@wpserver.alexjunio.com.br
Configurando o horário do servidor
Ter o horário do nosso servidor configurado pode evitar vários problemas desde um agendamento de postagem no WordPress como até mesmo o horário do backup. Para realizar a configuração você precisa do pacote tzdata instalado no servidor, é através dele que definimos o timezone correto que é o America/Sao_Paulo.
Execute os comandos abaixo para instalar o tzdata e configurar o timezone do nosso servidor.
Agora veja se o horário do servidor está corretamente atualizado executando o comando abaixo:
date
Atualizando o Sistema
Por mais que você contrate um servidor novo, alguns softwares instalados podem estar desatualizados. Vamos atualizar o nosso sistema para que tenhamos as listas de pacotes atualizados.
Execute os comandos abaixo.
apt update
apt upgrade -y
Quando todas as atualizações forem executadas, você verá quais pacotes foram instalados e também quais pacotes não são mais necessários para o sistema.
Para remover os pacotes desatualizados execute o comando abaixo:
apt autoremove
Configurando Usuário
Utilizar o usuário root do servidor para acessos ssh e tarefas básicas não é algo recomendado, inclusive é algo que deve ser evitado ao máximo. Para resolver esse problema, vamos criar um usuário adicional que será responsável por gerenciar e configurar tudo o que envolve a nossa hospedagem wordpress.
Esse usuário poderá ser utilizado para;
Acesso SSH e SFTP
Tarefas administrativas no código do WordPress
Restart de serviços como MySQL, Nginx, PHP
Para que o usuário tenha todos os privilégios necessários para seu pleno funcionamento, vamos adiciona-lo ao grupo sudo. Desse modo, não terá problemas maiores na execução de comandos de administração.
Para criar o usuário execute os passos abaixo:
adduser alex
# obs: Insira um nome de usuário desejado na linha acima
Em seguida você precisará inserir informações sobre o usuário e também uma senha, lembre que a senha precisa ser minimamente complexa.
root@wpuser.alexjunio.com.br:~$ sudo adduser alex
Adicionando usuário `alex ...
Adicionando novo grupo `alex' (1002) ...
Adicionando novo usuário `alex' (1002) com o grupo `alex' ...
Criando o diretório inicial `/home/alex' ...
Copiando arquivos de `/etc/skel' ...
Nova Senha:
Redigite a nova senha:
passwd: senha atualizada com sucesso
Alterando as informações do usuário para alex
Insira o novo valor ou pressione ENTER para o valor padrão
Nome Completo []: alex Rich
Número do quarto []:
Telefone de Trabalho []:
Telefone residencial []:
Outro []:
As informações estão corretas? [S/n]
Após confirmar e criar o usuário, adicione ao grupo sudo:
usermod -a -G sudo alex
Agora realize uma nova conexão SSH no seu servidor, no entanto utilizando o usuário que você acabou de configurar.
ssh alex@wpuser.alexjunio.com.br
Se a conexão foi bem sucedida, significa que você configurou o usuário corretamente e está pronto para a próxima etapa.
Configurando o Firewall
O Firewall vai nos ajudar bastante pois oferece uma camada adicional de segurança em nosso servidor WordPress, ele vai bloquear tráfego de rede de entrada. No Ubuntu o UFW é instalado por padrão, caso o seu sistema por algum motivo não tenha, instale executando o comando abaixo:
O Fail2ban é uma ferramenta gratuita que funciona junto com o firewall. Ele monitora as tentativas de acesso ao nosso servidor e pode bloquear um determinado atacante por um período de tempo. Caso ele detecte algo malicioso, o IP do atacante é bloqueado. Servidores profissionais WordPress precisam de segurança avançada e o Fail2ban pode nos ajudar nessa tarefa.
Para instalar o Fail2ban execute os comandos abaixo:
sudo apt install -y fail2ban
sudo service fail2ban start
Por padrão o Fail2ban irá monitorar e bloquear um usuário/host por 10 minutos após 6 tentativas de ataque ao SSH. Existem muitas configurações avançadas e personalizadas para Fail2ban focado em WordPress, traremos mais conteúdos sobre isso.
Para manter o servidor minimamente seguro sempre execute as tarefas abaixo:
Atualizar o servidor
Manter plugins e templates atualizados
Evitar Nulled
Configurar senhas complexas e fortes *mínimo 30 dígitos
Configuração de Firewall
Utilizar CloudFlare se possível ou Sucuri Firewall na camada Web
Conclusão
Nesse capítulo realizamos todas as configurações mínimas e necessárias para começar a trabalhar no nosso servidor para hospedagem WordPress. No próximo capítulo vou te ensinar a configurar o LEMP e emitir certificados SSL com Let’s Encrypt.
Esse tutorial foi escrito de um modo bem prático , e dispensa qualquer comentário. No YouTube você vai acompanhar na íntegra todos os comandos e etapas que realizamos para implantar esse projeto.
Desafio: Hospedar um site WordPress em Múltiplos Servidores e Load Balancer na Vultr
Ao longo dos anos já trabalhei em projetos WordPress que tinham requisitos específicos para hospedagem WordPress. Alguns deles tinham um milhares de acessos simultâneos, outros eram sites críticos que não poderiam ter problemas de indisponibilidade. Geralmente os sites eram dos nichos:
WooCommerce / Lojas Virtuais
Portais de Notícias
Plataformas de Apostas / Rifas
Sites Governamentais
Plataformas de Streaming e Eventos Online
Conteúdo Adulto
Pensar e implementar uma hospedagem WordPress para alto tráfego e mais do que isso, ter alta disponibilidade não é algo fácil. Mas nesse artigo vou dar a base para vocês de como criar uma infraestrutura mínima para WordPress com Load Balancer na Vultr.
A Vultr é uma das maiores empresas de custo benefício em Cloud/VPS. Ao longo do tempo tem evoluído muito, e já possui uma gama de serviços interessantes para projetarmos uma hospedagem WordPress.
Pensando nas possibilidades que a Vultr nos traz, iremos realizar o projeto abaixo.
Essa infraestrutura é composta por:
1 Load Balancer gerenciado pela Vultr
3 VPS Web
1 VPS para MySQL
1 Object Storage para armazenamento de imagens
VPC Vultr – Rede Virtual Privada
SSL Comprado (ou Emitido pela CloudFlare)
DNS na CloudFlare
Configurações e instalações a serem realizadas:
Nginx
PHP 7.4 e FPM
Usuário SFTP
Composer e WP-CLI
GlusterFS para volume/disco compartilhado entre todos os servidores
MySQL via Ansible
Atenção: Esse laboratório irá servir para que você compreenda como o WordPress pode ser hospedado em uma infraestrutura composta por vários servidores em um Cluster e Load Balancer na Vultr. E é o ambiente mínimo para hospedagem WordPress, mas um ambiente de produção é muito mais trabalhoso configurar e precisa de ajustes e tarefas que não menciono neste artigo/vídeo.
Agora que você já deu uma lida básica sobre nossos objetivos e o cenário do projeto, vamos começar a colocar a mão na massa.
Playlist Implantando a Infraestrutura na Vultr para WordPress
Se você precisa de um profissional para implantar uma hospedagem WordPress profissional entre em contato conosco. Atendemos agências, profissionais web, empresas de tecnologia e e-commerce.
Com o fim da vida do CentOS 8 Stream em 2021, e o CentOS 7 chegando ao seu fim em junho de 2024, muitos de nós ficamos bastante preocupados com o futuro do cPanel WHM.
Diferente do Plesk que oferece suporte a vários sistemas operacionais, o cPanel sempre ofereceu suporte a um grupo muito pequeno de sistemas, o que fez nos últimos meses muitas empresas a migrarem para outros painéis, pois nem todos desejam licenciar um sistema operacional comercial como o Red Hat ou até mesmo o famoso CloudLinux.
A um tempo a equipe do cPanel tinha disponibilizado suporte parcial ao Ubuntu, para que a comunidade pudesse testar, mesmo que parcialmente pois ainda poderia ter muitos bugs e em produção poderíamos encontrar muitos problemas e não ter suporte para soluciona-los.
Suporte total ao Ubuntu 20:04 LTS
No mês de março de 2022, foi lançado oficialmente o suporte total do cPanel WHM ao Ubuntu 20:04 LTS, sendo assim, podemos implementar nossos servidores cPanel em ambiente Ubuntu.
A minha empresa HuubCorp já tem migrado alguns clientes para o Ubuntu e até agora gostamos muito do resultado. O Ubuntu também é um sistema muito estável para servidor web, possui uma comunidade gigante e uma equipe grande sempre trazendo novidades e atualizações.
cd /home && curl -o latest -L https://securedownloads.cpanel.net/latest && sh latest
Agora basta esperar a finalização pois o script automatiza todo o processo de setup do cPanel WHM.
Ao acessarem o WHM verão uma nova interface gráfica muito bonita ao meu ver. Ela se casou muito bem com o novo template do cPanel, o Jupter.
Conclusão
A equipe da cPanel trabalhou pesado e conseguiu entregar uma solução para os usuários e administradores de servidor cPanel. Oferecer suporte ao Ubuntu significa que podemos continuar com um sistema operacional open source, estável e com uma comunidade gigante.
Ao longo do tempo pude me aprofundar e conhecer sobre os mais diversos painéis de hospedagem de sites, e ter esse conhecimento prático, mesmo que básico, é de suma importância na escolha de um painel para hospedagem de sites.
O Plesk é um dos maiores e melhores painéis de hospedagem de sites, é utilizado mundialmente por empresas de pequeno e até grande porte, possui uma gama incrível de soluções e recursos para hospedagem de sistemas, sites, aplicações e muito mais.
O que é o Plesk ?
Plesk é um dos principais painéis de hospedagem de sites que temos no mercado, possui uma gama de funcionalidades que o fazem ser um painel completo, exclusivo e profissional. O Plesk está no mercado de hospedagem desde os anos 2001, e até hoje continua forte e sendo um dos TOP 3 painéis para hospedagem de sites, e em vários critérios chega a ser o TOP 1.
Desde o início o Plesk foi projetado para ser um painél de fácil gerenciamento, acesso fácil a ferramentas e informações para que nós, administradores, possamos executar nossas tarefas rapidamente sem perder muito tempo.
Hoje vejo o Plesk como um painel totalmente único, com recursos que atendem tanto a velha guarda da hospedagem, como também a nova geração, com containers e múltiplos serviços.
Principais recursos do Plesk
O Plesk de longe tem sido o painel que mais possui recursos e opções para que possamos hospedar nossos projetos. Mas afinal, o que ele possui para ser tão incrível e diferente dos demais ?
1. Multiplataforma
Atualmente o Plesk já oferece suporte a diversas plataformas e sistemas operacionais. Dentre todas as opções abaixo, destaco o Ubuntu 20:04, Debian 10, CloudLinux 7, Windows Server 2012 e Windows Server 2019.
O Plesk consegue atender usuários linux e usuários windows ao mesmo tempo. Claro que possui algumas limitações entre plataforma e outra, mas de modo geral, podemos implementar o Plesk em ambas as plataformas.
Operating system
SNI support
IPv6 support
Debian 9 64-bit **
Yes
Yes
Debian 10 64-bit **
Yes
Yes
Ubuntu 16.04 64-bit **
Yes
Yes
Ubuntu 18.04 64-bit **
Yes
Yes
Ubuntu 20.04 64-bit **
Yes
Yes
CentOS 7.x 64-bit
Yes
Yes
CentOS 8.x 64-bit ***
Yes
Yes
Red Hat Enterprise Linux 6.x 64-bit *
Yes
Yes
Red Hat Enterprise Linux 7.x 64-bit *
Yes
Yes
Red Hat Enterprise Linux 8.x 64-bit *
Yes
Yes
CloudLinux 7.1 and later 64-bit
Yes
Yes
Virtuozzo Linux 7 64-bit
Yes
Yes
Operating system
SNI support
IPv6 support
Windows Server 2012
Yes
Yes
Windows Server 2012 R2
Yes
Yes
Windows Server 2016
Yes
Yes
Windows Server 2019
Yes
Yes
2. Dashboard Clean
O Painel do administrador Plesk é muito clean, muito intuitivo e com um menu muito fácil de encontrar as principais ferramentas de administração do servidor. Basicamente, com poucos cliques você consegue realizar tarefas que demorariam muito tempo caso fossem manual, e isso agiliza a vida de quem é administrador de servidor.
Já o painel do cliente também é muito clean, o cliente dificilmente vai ter dificuldade pois realmente um painel intuitivo e direto ao ponto.
3. Segurança
O Plesk é incrível, atualmente o que temos de opções e recursos para aprimorar e deixar a segurança do nosso servidor é algo muito profissional.
O Plesk nos fornece um conjunto muito grande de configurações para segurança padrão, mas ainda assim podemos melhorar a segurança do nosso servidor. No Plesk podemos configurar o Fail2Ban, Firewall Plesk, ModSecurity, e ainda instalar ferramentas como:
Antivírus Kaspersky
Rkhunter
Fail2Ban
Sucuri Security Scan
Imunify
ModSecurity
Virus Total
CloudLinux
Incrível, não ?
4. Extensões e Customizações
No Plesk temos uma gama enorme de Extensões incríveis, que vão ajudar desde o administrador do servidor, o time de desenvolvimento e até mesmo os clientes que irão utilizar seu serviço.
É importante saber que algumas extensões são gratuitas, e outras são pagas mensalmente.
As extensões do Plesk incrementam nosso servidor Plesk com recursos interessantes, pois temos extensões para:
Sei que muitas agências e empresas de hosting e tecnologia trabalham com aplicações populares como WordPress, Magento, Prestashop, Moodle e outros CMS. No Plesk você pode ficar tranquilo que poderá trabalhar com todas elas.
Nós podemos também hospedar aplicações desenvolvidas em:
.NET
PHP
NodeJS
Angular
Laravel
Ruby
No entanto, dependendo do tipo de aplicação, você terá que escolher bem entre um ambiente Linux ou Windows. Por exemplo, aplicações .net muitas das vezes não roda bem ou nem roda em ambiente Linux.
6. Banco de Dados
No Plesk podemos trabalhar com alguns tipos de SGBD e atender vários projetos específicos. Imagine que você tem uma aplicação em PHP e que utiliza um banco de dados PostgreSQL, no Plesk é possível trabalharmos com esse cenário.
Mas se atente também ao sistema operacional que está utilizando, pois pode influenciar nas opções que você tem disponível ou não nativamente. O Plesk oferece suporte aos seguintes SGBD:
O Plesk é incrível, e nos oferece muitos recursos interessantes. Empresas de pequeno até grande porte utilizam aplicações financeiras, comerciais, ERP e intranets no Plesk.
O Plesk também é muito utilizado como serviço de e-mail corporativo por conta da sua estabilidade e extensões próprias para ambiente de hospedagem de e-mails profissional.
cPanel error NetworkManager is installed and running
Quando estamos instalando o cPanel WHM em alguns provedores como o GCP, AWS e alguns outros no mercado, temos um erro de rede logo no início da instalação do cPanel e muitas pessoas até desistem da instalação por não saber como resolver.
O comando de instalação é default, isso não é novidade. É todo o comando abaixo:
Assim que você executa esse comando, em poucos segundos a tela de erro é apresentado na tela. Se você observar bem, verá que ele imprime a mensagem na tela:
ErrocPanel2021-11-2917:35:01593 (ERROR): ********************* ERROR *********************2021-11-2917:35:01594 (ERROR): NetworkManager is installed and running, or 2021-11-2917:35:01595 (ERROR): configured to startup. 2021-11-2917:35:01596 (ERROR):2021-11-2917:35:01597 (ERROR): cPanel does not support NetworkManager enabled 2021-11-2917:35:01598 (ERROR): systems. The installation cannot proceed. 2021-11-2917:35:01599 (ERROR):2021-11-2917:35:01600 (ERROR): See https://go.cpanel.net/disablenm for more 2021-11-2917:35:01601 (ERROR): information on disabling Network Manager. 2021-11-2917:35:01602 (ERROR): ********************* ERROR *********************2021-11-2917:35:01603 (FATAL): Exiting…
Não se assuste e nem chute o balde! O erro é bem simples, geralmente ocorre em instalações CentOS 7 e na verdade nem é um erro propriamente dito. Essa mensagem apenas nos informa que o cPanel WHM não tem compatibilidade com o NetworkManager, e por isso a instalação não pode ser continuada.
O que é o NetworkManager ?
NetworkManager é um daemon que fica por cima do libudev e de outras interfaces do kernel do Linux. Ele fornece uma interface de alto nível para a configuração das interfaces de rede. Em outras palavras, é um gerenciador de rede automático.
Agora você pode reiniciar a instalação do seu servidor cPanel WHM que poderá continuar sem problemas.
Conclusão
Em algum momento podemos nos deparar com o erro de NetworkManager em instalações cPanel, por não suportar até então esse serviço. Hoje você viu as etapas que realizamos no suporte para ajudar nossos parceiros e clientes.
O Amazon Route 53 é um serviço da AWS que atua como um tradutor digital, convertendo nomes de sites, como www.exemplo.com, em endereços IP, que são os códigos usados pelos computadores para localizar servidores na internet. Basicamente, ele garante que, ao digitar o nome de um site, você seja direcionado ao local correto na web.
O que diferencia o Route 53 é sua confiabilidade e capacidade de gerenciar grandes volumes de tráfego. Por isso, ele é amplamente utilizado por empresas de todos os portes, desde pequenas startups até grandes corporações. É uma ferramenta robusta e segura, ideal para quem precisa gerenciar domínios de forma eficiente na nuvem.
Assim, tanto pequenas empresas conseguem usar esse serviço sem comprometer o orçamento, quanto grandes corporações podem aproveitar o Route 53 em suas operações. Confira algumas delas a seguir.
Algumas empresas conhecidas no mercado nacional e internacional
SubmarinoKabumAmericanas
Descubra as Principais Vantagens do DNS Route 53 para Sua Empresa
Sei que existem vários serviços no mercado para gerenciamento de DNS, mas antes de migrar seu DNS para a AWS, é importante que você entenda as vantagens do que estará obtendo com o investimento.
Alta Disponibilidade
Uma das piores situações que podem acontecer é uma falha no DNS, seja devido a uma queda ou instabilidade. Isso pode deixar sistemas inteiros inoperantes, mesmo que os servidores em produção estejam funcionando perfeitamente.
O Route 53 é um serviço de DNS extremamente resiliente e com Alta Disponibilidade. Isso significa que, mesmo que uma região específica da AWS enfrente problemas, o serviço de DNS continuará operando normalmente, e você sequer perceberá que houve alguma falha.
Segurança
Por ser um serviço corporativo, o Route 53 é extremamente seguro, e a AWS investe muito nisso. Grandes empresas multimilionárias confiam nesse serviço, e a segurança é um fator essencial para elas. Portanto, essa é uma preocupação que você não precisará ter.
A AWS também publicou alguns artigos interessantes sobre a segurança no Route 53, e recomendo que você os leia para aprofundar seus conhecimentos nesse aspecto.
Os custos para gerenciar nossos serviços de DNS no Route 53 costumam gerar dúvidas, pois não são fixos e variam de acordo com cada projeto. No entanto, isso não é algo negativo! Na verdade, você pagará conforme o uso, o que pode ser vantajoso para muitos cenários.
Basicamente, os custos relacionados ao Route 53 são baseados em:
Gerenciamento de zonas hospedadas: Você vai pagar um valor mensal por cada zona hospedada no Route53, cada domínio tem a sua respectiva zona de DNS.
Consultas de DNS: Cada consulta atendida pelo Route53 será cobrado, exceto para consultas com registros (A) apontadas para serviços como: ELB, CloudFront, Elastic Beanstalk, API Gateways, S3, VPC e outros serviços oferecidos gratuitamente.
Gerenciamento de domínios: Também pagará uma taxa anual por cada domínio registrado ou transferido para o route53.
Você vai pagar
0,50 USD por zona/mês para as primeiras 25 zonas
0,10 USD por zona/mês adicionais
Para mais detalhes de valores de consultas e limites recomendo a leitura abaixo
O Route 53 se integra com diversos produtos da AWS, o que simplifica muitas tarefas que, antes, teriam que ser feitas manualmente.
Serviços como o CloudFront, S3, ELB, entre outros, podem ser diretamente integrados ao Route 53, facilitando a criação e o gerenciamento de registros DNS de maneira mais eficiente.
Como configurar o DNS Route 53 na AWS ?
Eu publiquei um vídeo no meu canal no YouTube onde explico detalhadamente todos os passos que você deve seguir para configurar e trabalhar com o Route 53. Confira o vídeo para aprender como utilizar esse serviço de maneira eficiente e tirar o máximo proveito dele:
Conclusão: DNS AWS Route 53
Como podemos perceber, o Route 53 é um serviço de DNS extremamente robusto, adequado para empresas de todos os portes. Ele certamente atenderá às suas expectativas, com uma qualidade que é inquestionável.
A Amazon VPC é um serviço da AWS que nos permite configurar uma rede totalmente virtual definida e personalizada por você.
Essa rede virtual se assemelha a uma rede no modelo tradicional onde configuramos roteadores, definimos a topologia da rede, liberamos internet ou não, mas tudo na nuvem da AWS.
Principais Componentes de uma Rede VPC
Quando você for implementar um VPC personalizado vai notar que precisa entender de alguns conceitos e funcionalidades que envolvem um VPC na AWS. Realmente não é tão fácil, mas também não é tão difícil projetar uma rede privada.
Entender os principais componentes que envolvem um VPC e entender o que você precisa, vai ser tudo o que você precisa para começar a criar suas redes para projetos na AWS.
Gateways de Internet
O gateway de internet nada mais é do que um componente que pode fazer parte da VPC para que possa existir comunicação entre a rede e a internet. O gateway também é um elemento totalmente redundante e altamente disponível.
Dispositivos NAT para VPC
Podemos usar um dispositivo NAT para permitir que instâncias EC2 em alguma sub-rede que seja privada possa ter acesso a internet.
O dispositivo NAT trabalha substituindo o endereço IPV4 da instância EC2 pelo endereço IPV4 do dispositivo NAT. Ao enviar tráfego de resposta para as instâncias EC2, o dispositivo NAT converte os endereços de volta para os endereços IPv4 de origem original.
DHCP para VPC
O DHCP nos fornece um padrão para transmitir informações para configurações aos hosts em uma rede. O campo options de uma mensagem DHCP tem parâmetros de configuração como: nome de domínio, servidor de nomes de domínio e o netbios-node-type.
Quando criamos um VPC na AWS, é criado automaticamente um conjunto de opções DHCP e todas as configurações são associadas a VPC. Claro, também podemos criar tudo isso de forma personalizada na mão, caso precisemos de algo específico.
Listas de prefixos
As listas de prefixos são conjuntos de um ou mais de um blocos CIDR. Podemos usar listas de prefixos para nos ajudar na confguração e manutenção de grupos de segurança e tabelas de rotas.
Existem dois tipos de listas para prefixos:
Listas gerenciadas pelo cliente: Conjuntos de intervalos de IP que nós mesmos gerenciamos.
Listas gerenciadas pela AWS: Conjuntos de intervalos de IP para os serviços da AWS. Só não podemos personalizar, criar, modificar ou excluir essas listas.
Configurando VPC com uma única sub-rede pública
Nesse modelo de configuração inclui uma nuvem privada virtual VPC e uma sub-rede pública com um gateway de internet para que nossos serviços consigam se comunicar a internet.
Essa configuração é bem básica, mas se você for executar instâncias EC2 para aplicativos web com o objetivo de publicar para a web, como um blog ou um site simples, será bastante útil.
Diagrama do modelo da VPC.
Implementação.
No menu de pesquisas digite VPC e clique em VPC
Na página do VPC, clique em Launch VPC Wizard , para que utilizemos o assistente de configuração fácil.
Deixe selecionado a primeira opção, onde iremos criar uma rede simples pública com uma única sub-net , e clique em Select
Agora você pode personalizar a criação da sua VPC, com um CIDR personalizado, se quer habilitar o suporte IPv6, nome do VPC, CIDR para a sub-net, Zona de disponibilidade e nome da Subnet. Por conveniência eu vou apenas criar um nome para a VPC e clicar em Create VPC.
Após clicar em Create VPC, você verá uma mensagem informando que a VPC foi criada com sucesso.
Your VPC has been successfully created.
Sua VPC já vai ser listada na lista das VPC’s disponíveis na região que você configurou.
Quando for criar seu servidor EC2, poderá selecionar a rede da sua VPC.
Parabéns, você criou sua primeira rede VPC na AWS. Mas agora precisa aprender um básico de como criar e gerenciar grupos de segurança para nossos serviços na Amazon AWS.
O que é o Amazon Security Groups ?
Um Security Group trabalha exatamente como um firewall na nuvem e controla todo o tráfego de entrada e saída dos serviços que você implantar.
Quando configuramos um servidor EC2 associamos a uma VPC, e é possível atribuir até cinco grupos de segurança no servidor, uma vez que o grupo de segurança atua a nível de instância e não de sub-rede. Em outras palavras, podemos ter vários grupos de segurança personalizados para cada serviço ou servidor que tivermos.
Criando e Configurando um Security Group
Acesse novamente a pagina do VPC assim como ensinamos no início da configuração do VPC no tópico anterior, mas dessa vez clique em Security Groups.
Na próxima página clique em Create Security Group para criar seu primeiro grupo de segurança.
Na pagina de criação do grupo de segurança, defina um nome, uma descrição e selecione o VPC que você deseja trabalhar com esse grupo de segurança.
Em inboud rules e Outbound rules , você configura todas as regras de entrada e saída de tráfego, é nessas diretivas que você controla e cria políticas de acessos a determinadas portas por exemplo: HTTP, HTTPS.
Regras e políticas de tráfego de entrada liberados
SSH, HTTP e ICMP liberados para tráfego de entrada vindo da internet
MySQL/Aurora tráfego liberado para um endereço de IP em específico (o servidor da sua empresa por exemplo).
Regras e políticas de tráfego de saída liberados
All traffic , todo tráfego de saída dos servidores EC2 foram liberados
Você pode liberar acesso público ou permitir apenas para um determinado IP em específico mudando o campo Source
Você pode inserir uma porta de algum serviço personalizado clicando em Add rule e inserindo a porta no campo Port range
Você pode alterar o tipo de protocolo no campo Type
Também pode inserir uma descrição no campo Description
Para criar o Security Group, basta clicar no final da página em Create Security Group.
Quando estiver configurando seu servidor EC2, poderá selecionar o grupo de segurança na etapa 06 da criação, que é onde definimos isso. Mas lembre de selecionar a VPC que você criou no passo anterior, na etapa 03 da criação do EC2.
Bom, já temos nosso VPC e nosso primeiro grupo de segurança criados. Recomendo testar novas opções e continuar seus estudos para que domine o assunto.
Conclusão
Trabalhar com redes VPC e grupos de segurança é muito bacana, quando migramos aplicações da empresa e/ou preparamos todo o parque de infraestrutura na nuvem, é necessário que saibamos trabalhar com isso para ter todo o controle possível.