By using this site, you agree to the Privacy Policy and Terms of Use.
Accept
Alex Junio - Especialista em CloudAlex Junio - Especialista em CloudAlex Junio - Especialista em Cloud
  • Blog
  • Cursos
    • cPanel & WHM
    • Curso Vultr Cloud
    • Amazon Lightsail
    • Curso DigitalOcean
  • Hosting
    • cPanel
    • Plesk
    • CloudPanel
  • Cloud
    • AWS
    • DevOps
    • Arquitetura de Sistemas
  • Infraestrutura
    • Litespeed
    • Nginx
    • Docker
    • Linux
    • Alto Trafego
  • Nichos
    • Fintech
    • Magento
    • WordPress
Notification Show More
Font ResizerAa
Alex Junio - Especialista em CloudAlex Junio - Especialista em Cloud
Font ResizerAa
  • Home
  • Amazon AWS
  • WordPress
  • cPanel WHM
  • Magento
  • Blog
Search
Have an existing account? Sign In
Follow US
High Quality Design Resources for Free.
Início > Blog > WordPress > Configurando Nginx PHP MySQL e Let’s Encrypt Hospedagem WordPress
WordPress

Configurando Nginx PHP MySQL e Let’s Encrypt Hospedagem WordPress

Last updated: abril 25, 2022 12:59 pm
Alex Junio
Share
15 Min Read

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.

Contents
Instalando o Nginx no UbuntuInstalação do PHP 8Configurando o PHP 8 e PHP-FPMTestando o Nginx e PHPEmitindo SSL com Let’s EncryptNginx Bloco de Servidor p/ WordPressInstalando o WP-CLIInstalando o MariaDBCriando uma base de dadosConclusão

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-fpm. FastCGI Process Manager (FPM) é uma implementação alternativa do PHP FastCGI com alguns recursos adicionais que funcionam muito bem com o Nginx. É o gerenciador de processos recomendado para usar ao instalar o PHP com Nginx.

Configurando o PHP 8 e PHP-FPM

Agora que temos instalado o Nginx e o PHP 8 precisamos configurar o usuário e o grupo sob o qual o serviço será executado. Para essa tarefa, precisamos alterar o arquivo de configuração de pool padrão do PHP.

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

Altere todas as linhas que contém o usuário www-data, para o nome de usuário que você criou no capítulo 1.

user = www-data
group = www-data

listen.owner = www-data
listen.group = www-data
user = alex
group = alex

listen.owner = alex
listen.group = alex

Agora salve o arquivo para finalizar. Pressione CTRL + X seguido de Y e Enter.

Podemos agora reiniciar o nosso PHP 8 com o comando abaixo:

sudo service php8.0-fpm restart

Testando o Nginx e PHP

Nesse momento já podemos realizar um teste rápido para verificar se o Nginx está se comunicando corretamente com o PHP. Para isso, vamos editar o arquivo de configuração do nginx e habilitar os scripts PHP.

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

Encontre a seção onde os scripts PHP são configurados:

# pass PHP scripts to FastCGI server
#
#location ~ \.php$ {
#       include snippets/fastcgi-php.conf;
#
#       # With php-fpm (or other unix sockets):
#       fastcgi_pass unix:/run/php/php8.0-fpm.sock;
#       # With php-cgi (or other tcp sockets):
#       fastcgi_pass 127.0.0.1:9000;
#}

Podemos alterar deixando assim:

# pass PHP scripts to FastCGI server

location ~ \.php$ {
       include snippets/fastcgi-php.conf;

       # With php-fpm (or other unix sockets):
       fastcgi_pass unix:/run/php/php8.0-fpm.sock;
}

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

Agora altere o usuário que o nginx irá utilizar, pois isso vai tornar o gerenciamento de permissões muito mais tranquilo no futuro.

sudo nano /etc/nginx/nginx.conf

E troque o nome do usuário configurado no arquivo pelo usuário que você configurou:

user alex;
worker_processes auto;
pid /run/nginx.pid;

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

Reiniciamos o Nginx:

sudo service nginx restart

Vamos criar um arquivo de PHP simples na raiz da nossa hospedagem WordPress:

sudo nano /var/www/html/info.php

E inserimos o conteúdo abaixo para que quando acessemos pelo IP no navegador, possamos verificar todas as diretivas e informações do PHP. A execução desse arquivo corretamente significará que o PHP está em execução e em comunicação com o Nginx.

<?php
phpinfo();
?>

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

Agora abra o navegador e insira o IP ou o nome do host configurado para visualizar o conteúdo:

ip_server/info.php
ou
wpserver.seudominio.com/info.php

Depois de testar e ver que está funcionando bem, você pode excluir esse arquivo, por motivos de segurança, pois ele expõe informações sobre o servidor.

rm -r /var/www/html/info.php

Emitindo SSL com Let’s Encrypt

Para emitir certificados SSL com o Let’s Encrypt é necessário que você tenha configurado os apontamentos de DNS para o IP do seu servidor. Na CloudFlare eu configurei o apontamento de um subdomínio, pois irei instalar o WordPress em um subdomínio:

Se você vai instalar o WordPress no seu domínio principal, em Nome digite apenas “@”, ou edite a linha onde o seu domínio está apontado para um IP e insira o IP do seu servidor contratado. Lembre também de desativar a nuvem de Proxy, por default ela estará com a cor laranja.

Agora que você configurou o apontamento, podemos instalar o Let’s Encrypt no nosso servidor WordPress. Execute os comandos abaixo:

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:

[email protected]:~$ 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.

TAGGED:conteudo-wpwordpress
Share This Article
Facebook Whatsapp Whatsapp LinkedIn Telegram Email Print
Previous Article hospedagem wordpress configuracoes iniciais servidor ubuntu capitulo 01 Configurando VPS para Hospedagem WordPress na Vultr
Next Article hospedagem wordpress otimizacao nginx php fpm opcache Otimizando o Nginx e PHP no Servidor WordPress
Nenhum comentário Nenhum comentário

Deixe um comentário Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Conteúdos Relacionados

Servidor otimizado executando WordPress com scripts em cache e performance elevada

Como o OPcache Acelera o WordPress: Guia Completo de Otimização com Cache de Bytecode

abril 7, 2025
wordpress alto trafego alexjunio

WordPress não suporta alto tráfego ?

abril 2, 2025
vantagens desvantagens cloud wordpress

Vantagens e Desvantagens Hospedagem Cloud WordPress

março 14, 2025
o que e o litespeed guia litespeed litespeed

Litespeed Web Server – Servidor Web de Alta Performance

janeiro 16, 2025

Alex Junio - Especialista Cloud - 2026

Profissional com mais de 10 anos de experiência em gestão cloud e infraestrutura web.

All Rights Reserved.

Welcome Back!

Sign in to your account

Username or Email Address
Password

Lost your password?