Author: admin

  • Hospedagem WordPress / Cache Nginx e Cache de Objetos

    Hospedagem WordPress / Cache Nginx e Cache de Objetos

    Cache de Conteúdo Nginx

    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.

    sudo mkdir -p /etc/nginx/cache
    chown -R alex:alex /etc/nginx/cache

    2. Abra o arquivo do bloco de configuração nginx do nosso wordpress

    sudo nano /etc/nginx/sites-available/default

    3. Adicione a linha abaixo logo na primeira linha do arquivo

    fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=wordpress:100m inactive=60m;
    hospedagem wordpress

    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:

    fastcgi_cache_bypass $skip_cache;
    fastcgi_no_cache $skip_cache;
    fastcgi_cache wordpress;
    fastcgi_cache_valid 60m;

    Ficará assim:

    Salve o arquivo usando CTRL + X seguido de Y e Enter.

    Por fim, adicione as diretivas abaixo no seu nginx.conf , logo abaixo da linha de logs.

    sudo nano /etc/nginx/nginx.conf
    
    ##
    # Cache Settings
    ##
    
    fastcgi_cache_key "$scheme$request_method$host$request_uri";
    add_header Fastcgi-Cache $upstream_cache_status;
    

    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.

  • Otimizando o Nginx e PHP no Servidor WordPress

    Otimizando o Nginx e PHP no Servidor 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.

    user alex;
    worker_processes auto;
    pid /run/nginx.pid;
    error_log /var/log/nginx/error.log crit;
    include /etc/nginx/modules-enabled/*.conf;
    
    events {
            worker_connections 2000;   
            use epoll;   
            multi_accept on;
    }
    
    http {
    
            ##
            # Basic Settings
            ##
    
            keepalive_timeout 65;
            types_hash_max_size 2048;        
            server_tokens off;
            access_log off;
            sendfile on;   
            tcp_nopush on;
            tcp_nodelay on;
            server_names_hash_bucket_size 64;
            server_name_in_redirect off;
            reset_timedout_connection on;  
            client_body_timeout 15;   
            send_timeout 5;
            keepalive_requests 60;
            client_max_body_size   16M;
            
    
            include /etc/nginx/mime.types;
            default_type application/octet-stream;
    
            ##
            # SSL Settings
            ##
    
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
            ssl_prefer_server_ciphers on;
            
            ##
            # `gzip` Settings
            #
            #
            gzip on;
            gzip_disable "msie6";
    
            gzip_vary on;
            gzip_proxied any;
            gzip_comp_level 6;
            gzip_buffers 16 8k;
            gzip_http_version 1.1;
            gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
           
            ##
            # Logging Settings
            ##
    
            access_log /var/log/nginx/access.log;
            error_log /var/log/nginx/error.log;
    
    
            ##
            # Virtual Host Configs
            ##
    
            include /etc/nginx/conf.d/*.conf;
            include /etc/nginx/sites-enabled/*;
    }

    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:

    nano /etc/php/8.0/fpm/php.ini
    post_max_size = 80M
    upload_max_filesize = 80M
    date.timezone = America/Sao_Paulo
    max_execution_time = 600
    max_input_vars = 1000
    memory_limit = 256M
    max_input_time = 600

    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.
    • upload_max_filesize: Tamanho máximo de um arquivo suportado no upload.
    • 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)

    pm = dynamic
    pm.max_children = 10
    pm.start_servers = 5
    pm.min_spare_servers = 1
    pm.max_spare_servers = 5

    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:

    nano /etc/php/8.0/fpm/conf.d/10-opcache.ini

    Insira o conteúdo abaixo:

    zend_extension=opcache.so
    opcache.enable = 1
    opcache.enable_cli = 1
    opcache.memory_consumption = 128
    opcache.interned_strings_buffer = 4
    opcache.max_accelerated_files = 60000
    opcache.max_wasted_percentage = 5
    opcache.use_cwd = 1
    opcache.validate_timestamps = 0
    opcache.validate_root= 1
    opcache.file_update_protection = 2
    opcache.revalidate_path = 0
    opcache.save_comments = 1
    opcache.load_comments = 1
    opcache.fast_shutdown = 1
    opcache.enable_file_override = 0
    opcache.optimization_level = 0xffffffff
    opcache.inherited_hack = 1
    opcache.max_file_size = 0
    opcache.consistency_checks = 0
    opcache.force_restart_timeout = 60
    opcache.error_log = "/var/log/php-fpm/opcache.log"
    opcache.log_verbosity_level = 1
    opcache.preferred_memory_model = ""
    opcache.protect_memory = 0
    

    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.

  • Configurando Nginx PHP MySQL e Let’s Encrypt Hospedagem WordPress

    Configurando Nginx PHP MySQL e Let’s Encrypt Hospedagem WordPress

    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:

    sudo add-apt-repository ppa:ondrej/nginx -y
    sudo apt update
    sudo apt dist-upgrade -y
    
    

    Agora instale o Nginx:

    sudo apt install nginx -y
    sudo systemctl enable nginx
    sudo systemctl start nginx

    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:

    sudo add-apt-repository ppa:ondrej/php -y
    sudo apt update
    

    Agora instale o PHP 8 e todas as extensões do PHP que o WordPress precisa para executar corretamente.

    sudo apt install php8.0-fpm php8.0-common php8.0-mysql \
    php8.0-xml php8.0-xmlrpc php8.0-curl php8.0-gd \
    php8.0-imagick php8.0-cli php8.0-dev php8.0-imap \
    php8.0-mbstring php8.0-opcache php8.0-redis \
    php8.0-soap php8.0-zip php8.0-intl -y
    

    Note que estamos instalando também o php-fpmFastCGI 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:

    sudo apt install -y software-properties-common
    sudo add-apt-repository universe
    sudo apt update
    sudo apt install -y certbot python3-certbot-nginx 
    

    Para obter um certificado, agora você pode usar o plug-in Nginx Certbot, executando o seguinte comando. 

    sudo certbot --nginx certonly -d seusite.com -d www.seusite.com
    

    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.

    server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
    
        server_name blog.alexjunio.com.br www.blog.alexjunio.com.br;
        
        ####################################################################################
        # SSL
        ssl_certificate /etc/letsencrypt/live/blog.alexjunio.com.br/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/blog.alexjunio.com.br/privkey.pem;
        ####################################################################################    
        #### Logs
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
        ####################################################################################    
        root /var/www/html;
        index index.php;
        ####################################################################################
        #### Locations
        location / {
            try_files $uri $uri/ /index.php?q=$uri&$args;
        }
    
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            #fastcgi_pass unix:/var/run/php7.4-fpm.sock;
            fastcgi_pass unix:/run/php/php8.0-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    
        location = /favicon.ico {
            access_log off;
            log_not_found off;
            expires max;
        }
        location = /robots.txt {
                access_log off;
                log_not_found off;
        }
        ####################################################################################
        # Cache Static Files For As Long As Possible
        location ~*
        \.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$
        {
                access_log off;
                log_not_found off;
                expires max;
        }
        # Security Settings For Better Privacy Deny Hidden Files
        location ~ /\. {
                deny all;
                access_log off;
                log_not_found off;
        }
        # Return 403 Forbidden For readme.(txt|html) or license.(txt|html)
        if ($request_uri ~* "^.+(readme|license)\.(txt|html)$") {
            return 403;
        }
        # Disallow PHP In Upload Folder
        location /wp-content/uploads/ {
                location ~ \.php$ {
                        deny all;
                }
        }
    
        
    
    }
    
    ####################################################################################
    ##### Redirect http to https
    server {
        listen 80;
        listen [::]:80;
        server_name blog.alexjunio.com.br www.blog.alexjunio.com.br;
        return 301 https://blog.alexjunio.com.br$request_uri;
    }
    ####################################################################################

    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.

    Siga os passos abaixo para instalar o WP-CLI:

    cd ~/
    curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
    chmod +x wp-cli.phar
    sudo mv wp-cli.phar /usr/local/bin/wp

    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:

    sudo apt-get install software-properties-common
    sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
    sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirrors.up.pt/pub/mariadb/repo/10.4/ubuntu focal main'
    

    Agora instale o MariaDB Server:

    sudo apt install mariadb-server -y
    

    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.

  • Configurando VPS para Hospedagem WordPress na Vultr

    Configurando VPS para Hospedagem WordPress na Vultr

    Introdução a VPS Vultr para WordPress

    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!

    📌 Confira os artigos na ordem recomendada:

    🔹 Parte 01 – Introdução: VPS WordPress na Vultr

    🔹 Parte 02 – Configurando VPS Ubuntu Vultr com Nginx, PHP e MySQL

    🔹 Parte 03 – Instalando o WordPress no Ubuntu Vultr

    🔹 Parte 04 – Como otimizar o Nginx e PHP no VPS Ubuntu Vultr

    🔹 Parte 05 – Configurando Cache no Nginx e Redis

    🔹 Parte 06 – Configurações de Cron no VPS Ubuntu Vultr

    🔹 Parte 07 – Configurando Backups Automáticos no Servidor

    🔹 Parte 08 – Segurança no Nginx: Protegendo seu WordPress

    🔹 Parte 09 – Monitoramento do VPS Ubuntu: Ferramentas Essenciais

    Requisitos

    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.

    echo "wpserver.alexjunio.com.br" > /etc/hostname
    hostname -F /etc/hostname
    

    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.

    export DEBIAN_FRONTEND=noninteractive
    ln -fs /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
    apt-get install -y tzdata
    dpkg-reconfigure --frontend noninteractive tzdata

    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:

    sudo apt install -y ufw 
    sudo ufw enable
    sudo systemctl start ufw 

    Agora podemos liberar as portas que nossos serviços irão trabalhar, que respectivamente são as portas para protocolos http, https e ssh.

    sudo ufw allow ssh
    sudo ufw allow http
    sudo ufw allow https

    Configurando o Fail2ban

    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.

  • Hospedagem WordPress em Cluster de Alta Disponibilidade e Load Balancer

    Hospedagem WordPress em Cluster de Alta Disponibilidade e Load Balancer

    Hospedagem WordPress Vultr

    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

    https://www.youtube.com/watch?v=kp8vBKRwMxo&list=PLVKPmJRbmf2QqHoEBS759kmAAdGKW-bQH

    Consultoria e Suporte

    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.

    Materiais / Projetos / Serviços

  • cPanel WHM oferece suporte total Ubuntu 20:04 LTS

    cPanel WHM oferece suporte total Ubuntu 20:04 LTS

    Novidades no cPanel & WHM

    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.

    Você pode ler mais sobre a matéria em: https://blog.cpanel.com/full-cpanel-support-for-ubuntu-lts/

    Como instalar o cPanel WHM no Ubuntu 20:04 LTS

    Siga os passos abaixo para iniciar a instalação do cPanel no Ubuntu.

    Instale o Perl

    apt update && apt upgrade && apt install perl perl-base && systemctl stop ufw 

    Execute o script de instalação

    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.

    Se você precisa de um suporte técnico, oferecemos suporte em configuração e migração de servidores cPanel para o Ubuntu. Conheça nossos planos e serviços no link abaixo: https://wp.alexjunio.com.br/gerenciamento-servidor-cpanel-whm/

  • O que é Plesk ? Hospedagem de Sites Plesk

    O que é Plesk ? Hospedagem de Sites Plesk

    Você conhece o Plesk ?

    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 systemSNI supportIPv6 support
    Debian 9 64-bit **YesYes
    Debian 10 64-bit **YesYes
    Ubuntu 16.04 64-bit **YesYes
    Ubuntu 18.04 64-bit **YesYes
    Ubuntu 20.04 64-bit **YesYes
    CentOS 7.x 64-bitYesYes
    CentOS 8.x 64-bit ***YesYes
    Red Hat Enterprise Linux 6.x 64-bit *YesYes
    Red Hat Enterprise Linux 7.x 64-bit *YesYes
    Red Hat Enterprise Linux 8.x 64-bit *YesYes
    CloudLinux 7.1 and later 64-bitYesYes
    Virtuozzo Linux 7 64-bitYesYes
    Operating systemSNI supportIPv6 support
    Windows Server 2012 YesYes
    Windows Server 2012 R2 YesYes
    Windows Server 2016 YesYes
    Windows Server 2019 YesYes

    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:

    • Aparência
    • Segurança
    • Ferramentas do servidor
    • SEO
    • Desenvolvimento Web
    • Banco de dados
    • Segurança
    • DNS
    • E-Mail
    • Usuários
    • Etc

    Confira todas extensões em: https://www.plesk.com/extensions/

    5. Hospedagem de Aplicações e Sites

    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:

    • MySQL
    • MySQL Server Express 2008/2012
    • PostgreSQL

    Saiba mais em: https://docs.plesk.com/en-US/onyx/administrator-guide/database-servers.59427/

    Conclusão

    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.

    Conheça os nossos serviços em suporte e consultoria Plesk no link abaixo: https://wp.alexjunio.com.br/suporte-e-gerenciamento-plesk/

  • How to Disable Network Manager – Como resolver ?

    How to Disable Network Manager – Como resolver ?

    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:

    cd /home && curl -o latest -L https://securedownloads.cpanel.net/latest && sh latest

    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:

    Erro cPanel
    
    2021-11-29 17:35:01  593 (ERROR): ********************* ERROR *********************
    
    2021-11-29 17:35:01  594 (ERROR): NetworkManager is installed and running, or      
    
    2021-11-29 17:35:01  595 (ERROR): configured to startup.                          
    
    2021-11-29 17:35:01  596 (ERROR):
    
    2021-11-29 17:35:01  597 (ERROR): cPanel does not support NetworkManager enabled  
    
    2021-11-29 17:35:01  598 (ERROR): systems.  The installation cannot proceed.      
    
    2021-11-29 17:35:01  599 (ERROR):
    
    2021-11-29 17:35:01  600 (ERROR): See https://go.cpanel.net/disablenm for more    
    
    2021-11-29 17:35:01  601 (ERROR): information on disabling Network Manager.        
    
    2021-11-29 17:35:01  602 (ERROR): ********************* ERROR *********************
    
    2021-11-29 17:35:01  603 (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.

    Leia mais em: https://wiki.debian.org/pt_BR/NetworkManager

    Como Resolver o problema do NetWorkManager no cPanel ?

    Para resolver é bem simples, você precisa parar o serviço de NetworkManager com os comandos abaixo.

    systemctl stop NetworkManager.service
    systemctl disable NetworkManager.service

    Em seguida, alteramos os parâmetros “NM_CONTROLLED = no” em cada arquivo de configuração de rede. Ele está no diretório /etc/sysconfig/network-scripts

    Por fim, usamos os comandos abaixo para iniciar o network.service para que possamos conseguir rodar a instalação do cPanel.

    systemctl enable network.service
    systemctl start network.service

    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.

  • AWS Route 53: O Que É e Como Pode Beneficiar Seu Negócio na Nuvem?

    AWS Route 53: O Que É e Como Pode Beneficiar Seu Negócio na Nuvem?

    O que é o Amazon Route 53 ?

    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

    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.

    Baixo Custo

    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

    https://aws.amazon.com/pt/route53/pricing/

    Integração com produtos AWS

    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.

    Mais informações sobre o Route 53:

    https://aws.amazon.com/pt/route53/

     

  • Configuração VPC e Security Group Amazon ( AWS )

    Configuração VPC e Security Group Amazon ( AWS )

    O que é o Amazon VPC ?

    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
    1. Você pode liberar acesso público ou permitir apenas para um determinado IP em específico mudando o campo Source
    2. Você pode inserir uma porta de algum serviço personalizado clicando em Add rule e inserindo a porta no campo Port range
    3. Você pode alterar o tipo de protocolo no campo Type
    4. 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.