Author: admin

  • Instalação WordPress na Amazon AWS 2025

    Instalação WordPress na Amazon AWS 2025

    Execute e hospede sites WordPress no Amazon AWS

    A Amazon AWS é reconhecida como um dos provedores mais confiáveis para hospedagem de sites WordPress. No entanto, a instalação do WordPress na AWS pode representar um desafio significativo, especialmente para usuários iniciantes que não estão familiarizados com a AWS e servidores Linux.

    Esse artigo é indicado para o público leigo que precisa implementar um servidor EC2 para wospedagem wordpress na Amazon AWS de modo fácil e rápido.

    Como hospedar site WordPress no EC2 AWS ?

    Na AWS, há uma vasta gama de opções e cenários para hospedagem de sites WordPress. Essa diversidade de opções na AWS pode ser desconcertante para muitas pessoas, pois pode ser desafiador compreender o que fazer e como implementar seus projetos de hospedagem.

    1. Imagem AWS WordPress Bitnami

    A imagem Bitnami para WordPress na AWS é tipo uma caixinha pronta pra usar o WordPress na nuvem. É fácil e rápida de começar, já vem pré-pronta, e faz toda a mágica de deixar seu site WordPress funcionando sem complicação. É indicada para pequenos sites e blogs.

    2. Imagem AWS WordPress OpenLiteSpeed

    A imagem do OpenLiteSpeed na AWS oferece um desempenho superior em comparação à imagem do Bitnami, proporcionando maior poder de performance. No entanto, a configuração pode ser um pouco desafiadora para usuários menos familiarizados com o ambiente. Em resumo, é como ter um veículo mais potente, mas é necessário um pouco mais de conhecimento para operá-lo.

    3. Imagem AWS cPanel & WHM

    A imagem do cPanel & WHM na AWS apresenta configurações padrão, o que é adequado para hospedar sites WordPress mais simples.

    4. Cluster EC2 WordPress

    Hospedar o WordPress em um cluster na AWS pode ser desafiador, pois envolve uma configuração mais complexa. No entanto, essa abordagem é comumente adotada por grandes portais de notícias e plataformas de conteúdo para garantir escalabilidade e alta disponibilidade.

    5. AWS WordPress AutoScaling

    Essa modalidade é essencialmente semelhante ao modelo de cluster, mas com a adição do Scaling Automático habilitado. Isso permite lidar de maneira mais eficaz com picos de acesso e demanda no WordPress, garantindo uma escalabilidade dinâmica para otimizar o desempenho em momentos de alta demanda.

    Leia o nosso mais novo artigo: WordPress com AutoScaling na AWS

    6. Imagens Docker com Fargate ou Amazon EKS para WordPress

    Hospedar WordPress em tecnologia docker com o AWS Fargate e EKS é uma opção visando grandes ambientes escaláveis.  

    E muitos outros….

    Se você busca um serviço profissional de hospedagem WordPress na Amazon AWS, ficaremos gratos em atendê-lo. Implementamos uma variedade de cenários na AWS, incluindo AutoScaling, Cluster, entre outros. Entre em contato conosco para discutir suas necessidades específicas e oferecer soluções personalizadas para garantir a melhor performance e confiabilidade para sua hospedagem WordPress.

    Neste artigo, vamos instalar o WordPress na AWS usando a imagem da Bitnami, que é o ponto de partida para a maioria dos projetos de pequeno porte. Antes de prosseguir, você já possui conhecimento sobre como criar um servidor EC2 na AWS? Caso não tenha familiaridade, recomendo assistir a este vídeo, onde faço uma breve introdução sobre a configuração de servidores EC2. 

    ASSISTA A AULA SOBRE AMAZON EC2

    Nosso servidor WordPress na AWS contará com as seguintes especificações:

    • Família: t3.micro
    • CPU: 2
    • RAM: 1 GB
    • Disco: 8 GB
    • Rede: 1 IPv4
    • AMI: WordPress with NGINX and SSL
    • Custo: Aproximadamente $15 mensal

    1. Criação AWS EC2 com Imagem Bitnami WordPress

    Vamos iniciar a configuração do nosso servidor. Faça login na plataforma da AWS e, na barra de pesquisa, digite “EC2”. Em seguida, clique na opção listada para ser direcionado à tela de serviços do EC2.

    Em seguida, clique em “Executar Instância” e, posteriormente, em “Executar Instância” novamente.

    Na próxima tela, faremos a seleção de serviços e ajustaremos as configurações adequadas para nosso servidor EC2. Na segunda seção da tela, você definirá a AMI do servidor, que é essencialmente a imagem do sistema operacional a ser escolhida.

    Muitas AMIs já vêm com configurações predefinidas, simplificando bastante nosso trabalho. Na barra de pesquisa, digite “WordPress” e pressione Enter.

    Você verá várias imagens de servidores com WordPress listadas. Escolha a “WordPress com Nginx” da Bitnami. Clique em “Select” para selecionar a imagem desejada e, em seguida, clique em “Continue” para prosseguir.

    Confirme as alterações

    Observe que você retornou para a página de configuração do EC2, e a AMI já está selecionada. Agora, avancemos para a próxima etapa, que é escolher o tipo de instância.

    Por padrão, foi selecionada a instância t3a.small, mas optaremos pela t3.micro por ser mais econômica. Clique na caixa de seleção, pesquise por “t3.micro” e faça a seleção.

    Na etapa seguinte, selecione a sua chave SSH já configurada na AWS, ou, se necessário, crie uma nova chave SSH. Essa chave é fundamental para acessar o servidor por meio do SSH.

    Agora, você pode manter as configurações abaixo inalteradas, a menos que opte por aumentar o tamanho do disco ou realizar configurações específicas de rede. Eu optei por manter as configurações padrão e criei meu servidor clicando em “Executar Instância”.

    Agora, retorne à tela inicial da console do EC2 e observe a instância sendo iniciada.

    Perfeito! Seu servidor está sendo iniciado, e podemos avançar para o próximo tópico.

    2. Configurando apontamentos de DNS

    Ao iniciar nosso servidor, já podemos direcionar o domínio do nosso site WordPress para o servidor e, em seguida, instalar o SSL no domínio com o Let’s Encrypt.

    Acesse o provedor onde você gerencia o DNS do seu domínio (CloudFlare, registro.br, Godaddy, Hostgator, Route53) e crie ou atualize os registros (A) e/ou (CNAME) para apontar seu domínio para o IP do novo servidor.

    No meu caso, o domínio aws.dev.br está vinculado a um IP, e é esse IP que vou atualizar com o endereço do meu novo servidor. Quanto ao registro www.aws.dev.br, vou mantê-lo como está, pois ele redireciona para o domínio aws.dev.br.

    Após realizar essa alteração, aguarde algum tempo para a propagação. Esse processo pode levar minutos ou até horas. Assim que concluído, você poderá acessar o WordPress pelo navegador, uma vez que ele já vem pré-instalado.

    Entendido! Agora, vamos acessar o servidor para obter as credenciais de acesso ao WordPress. Vamos lá!

    3. Descobrindo dados de login do WordPress

    Perfeito! Vamos acessar o servidor via SSH utilizando o usuário padrão “bitnami”. 

    Prossiga com esses passos para acessar o servidor e recuperar as informações necessárias.

    # Acesso SSH
    ssh -i suachave.pem bitnami@ip_server
    # Exibindo credenciais
    cat bitnami_credentials

    Ao acessar o servidor via SSH, as credenciais para o administrador do WordPress serão exibidas para você. Agora, você pode usar essas informações para entrar no painel de administração do WordPress.

    4. Emitindo SSL Let’s Encrypt para o domínio

    Agora, vamos instalar o SSL no nosso site WordPress com o Let’s Encrypt, pois até o momento não está ativo! No servidor, execute todos os comandos abaixo:

    sudo su root
    cd /tmp
    curl -Ls https://api.github.com/repos/xenolf/lego/releases/latest | grep browser_download_url | grep linux_amd64 | cut -d '"' -f 4 | wget -i -
    tar -xvzf lego_v4.8.0_linux_amd64.tar.gz
    sudo mkdir -p /opt/bitnami/letsencrypt
    sudo mv lego /opt/bitnami/letsencrypt/lego
    sudo /opt/bitnami/ctlscript.sh stop

    Agora sim, executamos o comando de instalação do SSL. Execute o comando inserindo o seu e-mail e o domínio do seu site.

    sudo /opt/bitnami/letsencrypt/lego --tls --email="email@aws.dev.br" --domains="aws.dev.br" --domains="www.aws.dev.br" --path="/opt/bitnami/letsencrypt" run

    Nosso certificado SSL foi emitido, mas ainda precisamos configurar alguns arquivos para que o Nginx reconheça o certificado corretamente. Execute todos os comandos abaixo e substitua os valores de DOMAIN pelo nome do seu certificado.

    sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.crt /opt/bitnami/nginx/conf/bitnami/certs/server.crt.old
    sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.key /opt/bitnami/nginx/conf/bitnami/certs/server.key.old
    sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.csr /opt/bitnami/nginx/conf/bitnami/certs/server.csr.old
    sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.key /opt/bitnami/nginx/conf/bitnami/certs/server.key
    sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.crt /opt/bitnami/nginx/conf/bitnami/certs/server.crt
    sudo chown root:root /opt/bitnami/nginx/conf/bitnami/certs/server*
    sudo chmod 600 /opt/bitnami/nginx/conf/bitnami/certs/server*
    sudo /opt/bitnami/ctlscript.sh start

    Se tudo o que fizemos até o momento ocorreu conforme o esperado, visite sua página acessando o site https://seusite e confira o resultado.

    Sucesso! WordPress pronto para uso!

    Conclusão: WordPress AWS

    Agora possuímos um servidor EC2 na AWS com WordPress e SSL instalados. A partir de agora, você pode dar continuidade ao seu projeto. Vale ressaltar que esse modelo é mais adequado para projetos menores, onde não são necessárias muitas customizações ou infraestrutura avançada.

    Aqui no blog, já compartilhei diversos conteúdos sobre a AWS. Recomendo a leitura de alguns para que você se familiarize o máximo possível.

      🚀 Precisa de ajuda profissional para hospedar seu WordPress na AWS?

      Se você quer performance, segurança e escalabilidade de verdade, eu posso te ajudar.
      Hospedo, configuro e otimizo ambientes WordPress completos na AWS — sob medida para sua demanda.

      ✅ Infraestrutura profissional com EC2, RDS, CloudFront, Auto Scaling
      ✅ Configuração personalizada para sites, blogs, lojas ou portais de conteúdo
      ✅ Mais de 10 anos de experiência com servidores Linux e cloud

      👉 Fale comigo e leve seu WordPress para outro nível:
      🔗 Suporte e Gerenciamento Hospedagem WordPress AWS

    • DKIM e SPF em Hospedagem cPanel WHM

      DKIM e SPF em Hospedagem cPanel WHM


      O que é DKIM (DomainKeys Identified Mail) e como ele funciona?

      O DKIM (DomainKeys Identified Mail) é uma técnica de autenticação de e-mails que garante a autenticidade das mensagens enviadas por um domínio. Ele utiliza chaves criptográficas para adicionar uma assinatura digital aos e-mails, permitindo que o servidor do destinatário verifique se a mensagem foi realmente enviada pelo remetente e se não foi adulterada.

      Como funciona o DKIM de maneira simples:

      Quando um e-mail é enviado, o servidor do remetente gera uma assinatura digital única usando uma chave privada. Essa assinatura é inserida no cabeçalho da mensagem. Por outro lado, o servidor do destinatário utiliza a chave pública disponível no DNS do remetente para verificar a assinatura, garantindo que o e-mail é autêntico e não foi modificado.

      O que é SPF (Sender Policy Framework) e qual é o seu propósito?

      O SPF (Sender Policy Framework) é outra técnica de autenticação que previne a falsificação de e-mails, conhecida como spoofing. Ele permite que os administradores do domínio especifiquem quais servidores têm permissão para enviar e-mails em nome do domínio, protegendo contra práticas de phishing e spam.

      Entendendo o propósito do SPF

      Ao configurar o SPF, o domínio lista os servidores autorizados no DNS. Assim, quando um servidor de e-mail recebe uma mensagem, ele verifica se o remetente está autorizado. Dessa forma, o SPF reduz o risco de entrega de mensagens fraudulentas e melhora a reputação do domínio.

      Como DKIM e SPF trabalham juntos para proteger seus e-mails

      Embora o DKIM foque na autenticidade da mensagem e o SPF na verificação do servidor de envio, ambos são complementares. Por exemplo, ao usar os dois em conjunto, você fortalece a segurança contra e-mails falsificados, reduzindo a chance de mensagens maliciosas alcançarem a caixa de entrada do destinatário. Além disso, essa combinação melhora a entrega de e-mails legítimos, evitando que sejam marcados como spam.

      Como habilitar o DKIM e SPF no WHM e cPanel

      Para contas individuais no cPanel:

      Acesse a interface Entregabilidade de E-mail, localizada no painel principal do cPanel. Lá, você pode configurar o DKIM e o SPF com apenas um clique, instalando os registros DNS sugeridos automaticamente.

      Para todos os domínios no servidor pelo WHM:

      Se o servidor hospeda muitas contas, configurar manualmente pode ser demorado. Nesse caso, acesse o WHM em “DNS Functions > Enable DKIM/SPF Globally”. Com essa opção, o DKIM e o SPF são habilitados para todos os domínios no servidor de forma automática.

      Dica: Sempre verifique os registros DNS após a configuração para garantir que estão corretos. Caso encontre problemas, consulte a documentação oficial do cPanel.

      Com a implementação do DKIM e SPF, você melhora significativamente a segurança dos e-mails enviados pelo seu domínio. Por fim, essas técnicas não só protegem contra ataques como também aumentam a confiabilidade do seu serviço de e-mail.

      https://docs.cpanel.net/whm/dns-functions/enable-dkim-spf-globally/?_ga=2.150147062.116526122.1725117565-401244019.1724966140

      Precisa de ajuda ?

      Se você está em busca de uma empresa especializada em suporte e gerenciamento de cPanel & WHM, conte conosco! Com nossa expertise, asseguramos que seu ambiente esteja sempre otimizado e pronto para atender às demandas do seu negócio. Entre em contato conosco e descubra como podemos elevar a gestão do seu servidor ao próximo nível.

    • Configuração Inicial Ubuntu 20:04 Hospedagem Magento 2.4

      Configuração Inicial Ubuntu 20:04 Hospedagem Magento 2.4

      Nesse capítulo vamos iniciar o setup de um servidor Ubuntu 20:04 para hospedagem de lojas magento 2.4.5 com foco em desenvolvimento. No capítulo anterior te introduzi sobre tudo o que faremos, e espero que tenha lido.

      Primeiros passos Ubuntu Magento 2

      Sugiro que siga exatamente cada passo que eu realizar para que ao final de todo o processo você possa ter os mesmos resultados que obtive.

      A primeira coisa que você fará no seu servidor é atualizar o sistema operacional e todos os repositórios que nele estão. Para fazer isso, acesse seu servidor com usuário root ou com privilégios sudo, e execute os comandos abaixo.

      • Update do sistema e repositórios
      sudo apt-get update
      sudo apt-get -y upgrade
      • Instalação do git e algumas ferramentas úteis no dia a dia
      # htop  ferramenta para analise de consumo e processos do sistema
      # unzip ferramenta para compactação/descompactação arquivos .zip 
      # git   ferramenta para trabalhar com repositórios git
      
      sudo apt install -y htop unzip git 
      • Configuração do hostname e arquivo hosts

      É importante definir o hostname para que você dê um nome para seu servidor, é muito útil no dia a dia quando você gerencia diversas máquinas, e até evita alguma confusão.

      Altere o hostname (seguindo o modelo FQDN) e lembre de trocar por um domínio ou nome do seu interesse.

      sudo hostnamectl set-hostname magento-dev.loja.shop

      Agora execute os comandos abaixo para iniciar uma nova sessão e com isso verificar se o hostname está conforme configurou.

      bash 
      hostname -f

      Agora o nosso servidor está pronto para que possamos seguir para a próxima etapa! Vamos instalar a pilha LEMP e emitir o SSL no domínio da nossa loja.

    • Considerações Finais

      Chegamos ao final da nossa jornada na implementação de um servidor para hospedagem de site WordPress. Desde o primeiro capítulo até o anterior, você aprendeu a configurar: Nginx, PHP, MySQL, SSL, Segurança e Backups.

      O que fazer agora ?

      Bom, a nossa hospedagem wordpress está pronta para uso! Você poderá utilizar em projetos de pequeno porte, sites institucionais, pequenos blogs e projetos que estão em fase inicial.

      Se você vai trabalhar com lojas woocommerce, portais de notícias e projetos wordpress que tem muito tráfego, a história muda pois o nível de configuração também será diferente. Logo, não replique isso em projetos de grande porte.

      No entanto, o seu servidor atual já entrega mais performance e qualidade do que 90% dos provedores tradicionais de hospedagem de sites. Digo isso com absoluta certeza, pois trabalho com vários diariamente em projetos de migração.

      Espero que tenham gostado dessa jornada, te encontro na próxima!

      Abraços.

    • PowerDNS ou Bind/named – Qual escolher ?

      PowerDNS ou Bind/named – Qual escolher ?

      Ao implementar um servidor cPanel & WHM, é essencial decidir qual tipo de servidor de nomes utilizar. Atualmente, as opções disponíveis são BIND/named e PowerDNS.

      Percebo que essa escolha frequentemente gera confusão e indecisão entre iniciantes, e o objetivo deste artigo é ajudar você a fazer a escolha certa.

      DNS BIND/named cPanel

      O BIND é um servidor de nomes (DNS) amplamente reconhecido por sua estabilidade e por ser um dos mais utilizados em toda a internet. Ele é conhecido por suportar todos os tipos de registros DNS e oferece uma grande flexibilidade na configuração, o que é especialmente útil em ambientes de hospedagem web.

      Atualmente, o BIND é o único servidor de nomes que suporta IPv6.

      No entanto, é importante considerar algumas desvantagens, especialmente se você estiver trabalhando com recursos de hardware limitados. O BIND/named tende a consumir mais memória em comparação com outros servidores de nomes. Além disso, ele pode ser um pouco mais lento, já que precisa recarregar todas as zonas de DNS da hospedagem sempre que um registro é alterado ou quando o servidor é reiniciado.

      PowerDNS cPanel

      O PowerDNS é outro servidor de nomes conhecido por sua rapidez e baixo consumo de memória. Atualmente, é o único servidor de nomes que permite trabalhar com DNSSEC diretamente dentro do WHM.

      O PowerDNS se destaca pelo seu desempenho, combinando velocidade com eficiência no uso de recursos. Ele lê os dados de DNS dos arquivos do BIND e os armazena em um banco de dados SQLite, garantindo compatibilidade total com o sistema de DNS do cPanel & WHM.

      Bind/named ou PowerDNS no WHM ?

      Minha opinião não é uma regra de mercado ou uma verdade absoluta, mas é baseada na experiência de trabalhar com uma ampla variedade de ambientes de hospedagem. Atendo a clientes que, por sua vez, gerenciam centenas de outros clientes, e por isso, sempre opto por soluções e ferramentas que sejam otimizadas, estáveis e que não causem problemas de desempenho no servidor.

      Na minha perspectiva, o PowerDNS é a melhor escolha de servidor de nomes para ambientes de hospedagem cPanel & WHM. Ele oferece um baixo consumo de memória RAM e, ao mesmo tempo, proporciona um servidor DNS rápido, garantindo máxima performance para consultas e registros.

    • Monitoramento da Hospedagem WordPress

      Monitoramento da Hospedagem WordPress

      Observando, analisando e cuidando do servidor.

      Observabilidade é a palavra chave quando pensamos em manter um servidor wordpress sempre saudável e estável. É observando e analisando logs e dados em realtime que podemos entender e descobrir o que pode ser mudado, ou até mesmo o que está causando lentidões e gargalos.

      O que podemos monitorar e analisar ?

      Existe uma centena de ferramentas pagas e opensource no mercado com foco em monitoramento de infraestrutura e serviços e não vou julgar qual é a melhor, pois cada uma pode atender um projeto em um determinado momento da empresa.

      Para monitoramento do Nginx, PHP, MySQL e Hardware, podemos utilizar ferramentas como:

      • Nginx Amplify
      • Zabbix
      • Prometheus e Grafana
      • Site24x7
      • NewRelic
      • Dynatrace
      • Datadog
      • Etc

      Nesse capítulo vamos utilizar o Nginx Amplify para o LEMP , mas seria interessante você também utilizar o Site24x7 por exemplo, para monitoramento de Rede,Disco,RAM,CPU e Validade do SSL.

      Se você possui um e-commerce, ou qualquer projeto que realmente precise de cuidados 24×7, recomendo pesquisar mais sobre NewRelic, Prometheus com Grafana e Datadog. Por possuírem mais recursos e opções para nossa observabilidade de infraestrutura.

      Monitoramento com Nginx Amplify

      O Nginx Amplify é uma ferramenta totalmente gratuita e bem intuitiva na verdade. Para começarmos a configura-lo precisamos realizar o cadastro no site oficial pois é por lá que vamos acompanhar nossos dashboards.

      Primeiro passo: Cadastro

      Acessem o site oficial e realizem o cadastro através do link: https://amplify.nginx.com/login

      Segundo passo: Instalação do Agente

      Assim que você realiza o cadastro, você vai cair em uma tela onde será solicitado que você instale o agente do Nginx Amplify no servidor. É através desse agente que o Enginx Amplify consegue coletar dados e estatísticas dos nossos serviços.

      Você vai acessar o servidor via SSH e executar as etapas 2, 3 e após concluir a etapa 3, clicar em Continue no navegador.

      Em seguida o Ngin Amplify vai aguardar pelos dados recebidos do agente, sugiro aguardar os minutos que é apresentado na tela.

      Após alguns minutos, você vai ser redirecionado para uma segunda página, e é apresentado o passo a passo do que fazer para configurar o Nginx para enviar os dados para o Amplify. E é isso que faremos agora!

      Integrando o Amplify no Nginx

      Siga os passos indicados na imagem, exatamente na mesma ordem e clica em continuar após executar as etapas. Nesse momento o Nginx Amplify irá aguardar os dados enviados pelo agente a respeito do serviço Nginx no servidor.

      Após alguns minutos, conforme o seu site vá recebendo requisições, você notará que os dados começarão aparecer na tela. O básico do que aparecerá são:

      • Requests no nginx
      • Conexões correntes
      • Erros 400
      • Erros 500
      • Memória consumida pelo Nginx
      • CPU consumido pelo Nginx

      E se clicar no menu em Overview verá também um resumo bem legal sobre as estatísticas de uptime, requests, erros 5xx,

      Integrando o Amplify no PHP-FPM

      Agora vamos configurar o Nginx Amplify para coletar dados e estatísticas de consumo do PHP-FPM. No painel não temos o passo a passo facilitado, mas felizmente vou comentar todos os passos aqui para você.

      Acesse o servidor via SSH, e abra o arquivo do pool fpm default, com o comando abaixo:

      nano /etc/php/8.0/fpm/pool.d/www.conf

      Procure a linha pm.status_path e descomente-a.

      Salve o arquivo e reinicie o PHP.

      /etc/init.d/php8.0-fpm restart

      No Nginx Amplify, clique em Graph e em seguida php-fpm, depois de um tempo começará ver os dados chegando, como: conexões queue, conexões, processos, requests lentas, etc.

      Integrando o Amplify no MySQL

      O agente do Nginx Amplify também consegue coletar métricas e processos de bancos de dados MySQL, mas para isso precisamos realizar alguns passos para que possamos deixar isso funcionando.

      1. Acesse o MySQL pelo terminal de comando com o usuário root

      mysql -uroot -p

      2. Crie um usuário para o agente

      # defina uma senha em xxxxxx
      CREATE USER 'amplify-agent'@'localhost' IDENTIFIED BY 'xxxxxx';
      exit;

      3. Logue agora com o usuário amplify-agent e veja se está tudo ok

      mysql -u amplify-agent -p
      
      show global status;
      
      exit;

      4. Agora precisamos adicionar um conteúdo ao arquivo de configuração para que o agente consiga se conectar ao banco e coletar as métricas. Abra o arquivo de configurações do agente com o comando abaixo:

      nano /etc/amplify-agent/agent.conf

      Agora adicione o conteúdo na última linha, e lembre de colocar a senha do usuário do agente que criamos nos passos anteriores em password.

      [extensions]
      ..
      mysql = True
      
      [mysql]
      #host =
      #port =
      unix_socket = /run/mysqld/mysqld.sock
      user = amplify-agent
      password = xxxxxx

      5. Por fim, restarte o serviço do Nginx Amplify

      service amplify-agent restart

      Agora o Nginx Amplify começará a enviar dados e estatísticas do banco de dados para o painel, uma nova aba irá abrir no dashboard ao lado de PHP-FPM.

      Dependendo do tipo de banco de dados, pode ser que os dados não serão enviados, recomendo a leitura do blog post abaixo:

      Conclusão

      É importante entendermos o que está acontecendo dentro do nosso servidor, principalmente visualizar as métricas a respeito dos serviços que estão sendo executados. Nesse capítulo utilizamos uma ferramenta gratuita, possui suas limitações, mas que pode ser de grande serventia.

      No entanto, para uma observabilidade mais refinada e profissional, softwares como Dynatrace, Prometheus com Grafana, Site24x7 e outros, podem ser uma ótima solução para seus negócios.

    • Configurações de Segurança no Nginx

      Configurações de Segurança no Nginx

      Se você está acompanhando desde o primeiro capítulo o nosso projeto de implantação de um servidor ubuntu para hospedagem wordpress, já viu que temos o nosso ambiente pronto.

      Nesse capítulo vamos implementar algumas mudanças no nginx com foco em segurança, no entanto, isso não quer dizer que você está livre de toda e qualquer ameaça de ataques, mas as configurações aqui apresentadas podem minimizar os impactos.

      SSL

      Proteção no SSL

      Nosso site wordpress nesse momento já possui o certificado SSL instalado, isso foi feito no segundo capítulo. No entanto, alguns usuários podem ainda tentar se conectar no nosso site pelo protocolo HTTP, quando nós adicionamos a diretiva Strict-Transport-Security aos cabeçalhos de resposta do servidor, garantirá que todas as futuras conexões sejam feitas sempre com o protocolo HTTPS.

      Para realizar o procedimento, edite o nginx.conf com o comando abaixo:

      sudo nano /etc/nginx/nginx.conf
      

      E adicione o conteúdo abaixo dentro do bloco http assim como a imagem abaixo

      add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";

      Salve o arquivo e de um reload nas configurações do Nginx com o comando:

      service nginx reload

      Agora acesse o site do Qualys SSL Test e realize um teste de qualidade do nosso SSL.

      Performance do SSL

      Normalmente uma conexão HTTPS consome e demanda bastante recurso do servidor em comparação a uma conexão simples HTTP. Isso ocorre por conta do procedimento de handshake adicional necessário ao estabelecer uma conexão.

      Mas podemos adicionar em cache os parâmetros da sessão SSL, o que evitará um handshake para cada conexão HTTPS do usuário. Logo, podemos melhorar levemente um pouco mais a performance do servidor.

      Abra o arquivo de configuração do nginx novamente

      sudo nano /etc/nginx/nginx.conf
      

      Na diretiva abaixo de SSL Settings, adicione o conteúdo abaixo:

      ssl_session_cache shared:SSL:10m;
      ssl_session_timeout 10m;
      

      Agora faça um reload do Nginx para que as configurações entrem em vigor:

      sudo service nginx reload

      Tipos de Ataques e Segurança com Nginx

      Cross-Site Scripting (XSS)

      Uma das formas que você desenvolvedor pode lidar com o XSS é garantir a validação e limpeza correta de todas as entradas do usuário no seu código, principalmente as áreas de administração do WordPress. Mas sabemos que tudo vira um caos quando existem vários plugins e templates de terceiros, é complicado você manter isso seguro.

      Uma das formas que temos para poder diminuir os riscos de ataques XSS é configurando o Nginx para fornecer cabeçalhos de resposta adicionais. Mas como assim?

      Imagine que um atacante conseguiu incorporar um arquivo JS malicioso no código-fonte do seu blog/site, seja por meio de um form de comentários ou algo do gênero. Por padrão, o navegador acaba permitindo que esse arquivo externo seja executado no momento do acesso, e poderá infectar o visitante ou até mesmo minerar criptomoedas torrando a CPU do seu usuário.

      Quando inserimos uma política de segurança de conteúdo, o que permite definirmos uma lista de permissões de fontes totalmente aprovadas por nós para carregar ativos (JS,CSS,HTML,etc), a coisa muda de cenário. Se o script não estiver na lista de aprovados, ele não poderá ser carregado no browser do seu usuário. Legal, não?

      Criar uma política de segurança é bem complicado para falar a verdade, hora ou outra acabamos bloqueando algum recurso de um template ou plugin e desconfigurando nosso site, então fica em um cenário de tentativa e erro.

      Clickjacking

      Clickjacking é um tipo de ataque que engana o seu usuário para que ele realize uma ação sem que ele perceba (induz o usuário a clicar), e é realizado através de iframes em uma página.
      Não sou especialista em segurança, mas você pode ler um artigo que explica como funciona detalhadamente esse tipo de ataque do Clickjacking.

      No Nginx podemos mitigar um pouco esse tipo de ataque, desabilitando completamente a incorporação de iframes de terceiros adicionando o cabeçalho X-Xss-Protection no nginx.conf.

      Fortalecendo a segurança do WordPress com Nginx

      Abra o seu nginx.conf e adicione os cabeçalhos para que os tipos de ataques acima sejam mitigados. Também inclui alguns outros cabeçalhos, que vão nos ajudar a evitar uma série de outros ataques web.

      add_header Content-Security-Policy "default-src 'self' https: data: 'unsafe-inline' 'unsafe-eval';" always;
      add_header X-Xss-Protection "1; mode=block" always;
      add_header X-Frame-Options "SAMEORIGIN" always;
      add_header X-Content-Type-Options "nosniff" always;
      add_header Referrer-Policy "origin-when-cross-origin" always;
      add_header Permissions-Policy interest-cohort=();
      
      
      

      A medida que atualizarmos esse capítulo com novos tipos de ataques iremos atualizar também as configurações do Nginx.

      Conclusão

      Antes de configurarmos as diretivas de segurança no Nginx com foco no nosso site WordPress, o resultado de um teste e análise dos cabeçalhos resultava a seguinte nota de segurança:

      Após configurarmos os cabeçalhos, os resultados obtidos são maravilhosos:

      Desse modo constatamos que configuramos os cabeçalhos e que ao menos alguns ataques vão ser bem difíceis de serem feitos no nosso servidor wordpress. Se você quer analisar o seu site, acesse o site: https://securityheaders.com/

    • Configurando Backups Automáticos

      Configurando Backups Automáticos

      A importância dos Backups

      Ao longo do tempo vivenciei diversos projetos e vi na prática a importância que um backup tem para solucionar um problema. Já vi de perto vários projetos terem de recomeçar do zero pelo falta de backups.

      Problemas técnicos acontecem, hora ou outra uma invasão ou infestação de malwares podem ocorrer, principalmente em projetos WordPress que são muito visados por atacantes e nessas horas se você não tem um backup limpo, irá chorar.

      Nesse capítulo vamos configurar rotinas de backups no nosso servidor WordPress para termos cópias de segurança do nosso site.

      Configurando Backup WordPress

      A nossa configuração de backups será executada 1x por dia durante 7 dias, e após os 7 dias o último backup mais antigo será removido, desse modo você sempre terá salvo no seu servidor wordpress os últimos 7 dias de backups.

      Se seu WordPress é muito pesado e o armazenamento do servidor ficar lotado, diminua a retenção dos backups de modo que o seu servidor consiga armazenar os backups sem travamentos.

      No nosso servidor, vamos criar um diretório personalizado para que os backups sejam armazenados dentro dele.

      mkdir -p /var/www/backups

      Agora vamos criar um script shell básico para que o backup seja executado de modo que os arquivos do nosso WordPress e o banco de dados sejam salvos.

      nano /var/www/backup.sh

      Insira todo o conteúdo abaixo dentro do script e salve-o.

      #!/bin/bash
      
      DIA=$(date +%Y%m%d%H%M%S)
      DB_BACKUP=${DIA}_database.sql
      ARQUI_BACKUP=${DIA}_wp.tar.gz
      
      DB_NAME=$(sed -n "s/define( *'DB_NAME', *'\([^']*\)'.*/\1/p" /var/www/html/wp-config.php)
      DB_USER=$(sed -n "s/define( *'DB_USER', *'\([^']*\)'.*/\1/p" /var/www/html/wp-config.php)
      DB_PASSWORD=$(sed -n "s/define( *'DB_PASSWORD', *'\([^']*\)'.*/\1/p" /var/www/html/wp-config.php)
      DB_HOST=$(sed -n "s/define( *'DB_HOST', *'\([^']*\)'.*/\1/p" /var/www/html/wp-config.php)
      
      # Backup do banco de dados
      mysqldump --add-drop-table -u$DB_USERNAME -p$DB_PASSWORD -h$DB_HOST $DB_NAME > /var/www/backups/$DB_BACKUP 2>&1
      
      # Comprimindo backup da DB
      gzip /var/www/backups/$DB_BACKUP
      
      # Backup do diretorio do WordPress
      tar -zcf /var/www/backups/$ARQUI_BACKUP /var/www/html
      

      Para que você não fique “boiando” sobre como esse script trabalha, ele tem as seguintes particularidades:

      • É executado como um script bash
      • Configura uma variável DIA com a data atual para os backups
      • Recupera automaticamente as credenciais do banco de dados, para que automação consiga se conectar no banco
      • Utiliza o gzip para comprimir o backup da database e com isso ocupar menos espaço

      Agora dê permissão de execução

      chmod u+x /var/www/backup.sh

      Agora vamos colocar esse script no crontab para que ele seja executado todos os dias de madrugada, para que ele seja executado exatamente no horário que queremos temos que ajustar o horário do nosso servidor.

      No entanto, configuramos o horário do servidor no primeiro capítulo desde guia. Mas verifique se a hora está correta:

      date

      Se tudo estiver correto, abra o crontab com o comando abaixo

      crontab -e

      Agora adicione o conteúdo abaixo

      0 5 * * * cd /var/www/; /var/www/backup.sh  >/dev/null 2>&1

      Esse cronjob irá acessar o diretório onde o script está armazenado e será executado as 05h da manhã todos os dias da semana.

      Sempre que desejar verificar os backups salvos, basta executar o comando abaixo

      ls -l /var/www/backups

      Configurando Limpeza Automática

      Até aqui já configuramos nosso script e colocamos ele na crontab para que seja executado todos os dias. Mas ainda não configuramos uma maneira de limpar os backups antigos, caso contrário em pouco tempo nosso servidor irá travar por falta de espaço.

      Para isso vamos adicionar uma linha no nosso script bash, logo no final do arquivo

      nano /var/www/backups.sh

      Em seguida insira o conteúdo na última linha, feche e salve o arquivo

      rm -f /var/www/backups/$(date +%Y%m%d* --date='1 week ago')

      Agora nosso script sempre deixará salvo os últimos 7 dias de backups salvos no nosso servidor WordPress.

      Conclusão

      Backup de hospedagem WordPress é fundamental para a segurança e retenção dos dados, em um desastre você terá uma cópia dos arquivos e poderá utilizar sempre que precisar.

    • Configuração de tarefas cron e envio de e-mail WordPress

      Configuração de tarefas cron e envio de e-mail WordPress

      Tarefas Cron

      O WordPress tem suporte integrado para tarefas cron, o que permite que alguns processos sejam executados em segundo plano nos horários programados. Quando você instala o WordPress ele já vem com as seguintes tarefas agendadas:

      • Atualizações automáticas do WordPress
      • Verificações de versão do WordPress
      • Verificações de atualizações de plugins e templates
      • Publicação de postagens agendadas

      No entanto todo esse sistema é falho, se seu site não receber ao menos 1 visita durante um período de tempo, nenhuma dessas tarefas são executadas. Para resolver esses problemas utilizamos o cron do próprio sistema operacional Linux.

      Como o cron é executado como um daemon, ele será executado com base na hora do sistema do servidor e não exigirá mais que um usuário visite o site para que as tarefas agendadas sejam executadas no seu WordPress.

      Antes de configurar o cron, desabilite o WordPress de utilizar o cron interno dele. Adicione o conteúdo abaixo no arquivo wp-config do seu WordPress:

      define('DISABLE_WP_CRON', true);
      

      Abra o crontab do servidor e configure as tarefas cron que serão executadas pelo sistema:

      crontab -e

      Não vou entrar em detalhes sobre a sintaxe do crontab , mas adicione ao final do arquivo a cron do WordPress para que seja executada a cada 5 minutos:

      */5 * * * * cd /var/www/html; /usr/local/bin/wp cron event run --due-now >/dev/null 2>&1
      

      Agora salve o arquivo para finalizar. Pressione CTRL + X seguido de Y e Enter. Alguns artigos na internet sugerem o uso de wget ou curl para acionar o cron, mas o uso do WP-CLI é recomendado.

      Agora você configurou o cron do servidor para que execute as tarefas agendadas do WordPress.

      Configurando envios de e-mail com SMTP Relay Mailjet

      No nosso servidor de hospedagem wordpress não configuramos nenhum serviço referente a envio de e-mails. Se você precisa redefinir uma senha ou enviar newsletter, só será possível se configurarmos um SMTP Relay para que os emails sejam enviados.

      O Mailjet possui um serviço de SMTP Relay muito bom, inclusive o plano gratuito nos possibilita enviar até 6 mil envios mensal, para projetos pequenos isso é mais do que suficiente.

      Para configurar o Mailjet no seu WordPress siga os passos abaixo.

      1- Cadastro no Mailjet

      Acesse o site oficial e clique em Get Started e realize o seu cadastro. Após preencher todas as etapas, acesse seu e-mail para confirmar seu cadastro.

      https://www.mailjet.com/

      Após confirmar o seu cadastro, você verá uma tela como a imagem abaixo. Clique em Get started na imagem Developer.

      Em seguida escolha a opção SMTP Relay e prossiga para a próxima etapa

      Nessa tela você pode clicar em continuar, mais adiante configuramos as credenciais do nosso SMTP.

      2. Configurando SMTP

      Agora que a nossa conta já está criada e pré-pronta, precisamos configurar nosso domínio no Mailjet e configurar nossas credenciais.

      Na mesma janela que você está, desça a página até encontrar a opção 3 e clique em Add and validade domain.

      Na nova janela que foi aberta clique no botão Add domain, insira o seu domínio e clique em Continue.

      Na próxima etapa você vai ter duas opções para poder validar que você é o proprietário do seu domínio. Você pode subir um arquivo de texto para a raiz do WordPress ou criar um registro TXT no DNS.

      Para ser mais objetivo e rápido, vou criar o arquivo de texto na raiz do meu WordPress, exatamente com o nome do arquivo que destaquei em vermelho na imagem acima.

      No diretório home do meu WordPress eu criei o arquivo com o comando abaixo

      touch nome_arquivo

      Agora clico em Check now para validar o domínio.

      Se o domínio foi validado, você verá uma mensagem como a imagem abaixo:

      Mas ainda não acabou nossas configurações, precisamos realizar as autenticações para o domínio com registros SPF e DKIM caso contrário nossos e-mails podem cair sempre na caixa de spam ou até mesmo ser recusados pelo servidor de destino.

      Clique em Authenticate this domain, e agora sim temos as duas configurações a serem feitas no nosso DNS. O SPF e o DKIM!

      Antes de mais nada clique no botão amarelo para que o registro SPF seja gerado, e em seguida você verá o conteúdo a ser adicionado no DNS.

      Após adicionar os registros, aguarde alguns minutos ou até mesmo horas para a propagação do DNS, assim que tudo estiver propagado você verá uma tela igual a imagem abaixo e isso significa que nosso domínio está autenticado e pronto para utilizar o Mailjet.

      E para finalizar, vamos criar as chaves de API do nosso SMTP para que possamos conectar o WordPress ao SMTP. Clique no menu inicial para voltar a página inicial:

      Em seguida clique em Setup my SMTP

      Agora clique em Retrieve your API credentials

      Agora sim, clicamos em Generate Secret Key para gerar nosso par de chaves

      Guarde os dados de API Key e Secret Key, sugiro copiar e guardar em um local seguro, e será com essas credenciais que vamos configurar no WordPress agora.

      Configurando SMTP no WordPress

      Para configurar o Mailjet no WordPress vamos utilizar um plugin bem conhecido, o WP Mail SMTP by WPForms. No menu de pesquisa de plugins apenas coloque o nome do plugin e realize a sua ativação.

      Assim que ativado, precisamos configura-lo. Clique em Vamos começar, para dar início.

      Esse plugin é bem interessante pois ele oferece compatibilidade com diversos provedores de SMTP Relay como Google, Sendgrid, AWS SES, Mailgun e Outlook.

      No entanto, vamos escolher a opção Outro SMTP e clicar em Salvar e continuar.

      Agora colocamos as informações do nosso SMTP Mailjet, como nome do host usuário e senha que são as credenciais de API que geramos. Basta preencher os dados corretamente como as imagens abaixo:

      Host: in-v3.mailjet.com

      Para finalizar, clique em Salvar e continuar, nas três telas seguintes. Na quarta tela clique em Pular esta etapa, e na última tela clique em Concluir configuração.

      Agora podemos testar se o nosso WordPress está enviando e-mails corretamente através do Mailjet. Para isso, podemos realizar um envio de e-mail de testes utilizando o plugin que acabamos de instalar. Clique no menu superior em E-mail de teste

      Insira o nome do e-mail para quem deseja enviar um e-mail de teste e clique em Enviar e-mail

      Rapidamente recebi o e-mail na caixa de entrada

      Podemos constatar e verificar que o nosso WordPress está enviando e-mails corretamente. Qualquer atividade que envolva notificações, envios de redefinições de senhas, ou o que for, o WordPress utilizará o SMTP configurado para envios.

      Conclusão

      Quando configuramos um servidor para hospedagem wordpress também temos que pensar nos envios de e-mail, caso contrário toda e qualquer notificação o WordPress não irá conseguir enviar.

      O Mailjet é uma opção gratuita e que é bem interessante para projetos pequenos, para projetos maiores como lojas e grandes portais o AWS SES pode ser a melhor opção para envios de e-mail e newsletter.

    • Instalando o WordPress no Ubuntu

      Instalando o WordPress no Ubuntu

      Nossa hospedagem WordPress já está configurada com todos os serviços que o WordPress precisa para executar. Você inclusive pode escolher o que fazer agora:

      1. Instalar um WordPress Default
      2. Migrar um WordPress para o servidor

      A primeira opção você pode realizar de diversas formas, mas como temos o WP-CLI instalado no nosso servidor, podemos utiliza-lo para instalar o WordPress. A segunda opção é bem simples, basta você ter o conteúdo físico do WordPress + Banco de dados e enviar para o servidor.

      Instalando o WordPress

      Para instalar o WordPress via WP-CLI no terminal, esteja logado com o usuário que você criou no primeiro capítulo deste guia. E siga os passos abaixo:

      cd /var/www/html
      rm -rf *

      O comando abaixo irá realizar o download dos arquivos core do WordPress

      wp core download

      O próximo comando irá criar o arquivo wp-config com os dados do banco de dados que configuramos. Lembre de trocar as palavras em negrito pelos respectivos nomes e senha que você configurou.

      wp core config --dbname=dbwordpress --dbuser=wpuser --dbpass=senha

      Agora acesse seu site e prossiga com a instalação:

      Após realizar os passos básicos de instalação você já vai ter seu WordPress funcional na sua hospedagem WordPress.

      Conclusão

      Nesse capítulo realizamos a instalação de um WordPress em nosso servidor.

      No próximo capítulo vamos começar a otimizar o nosso servidor, e com isso ganhar bastante performance no nosso WordPress.