A instalação WordPress é normalmente feita usando o Apache, mas existe uma alternativa muito boa a ele. O Nginx é um servidor web de código aberto, lançado em 2004, é um servidor web robusto, leve e muito poderoso! Existem diversos benefícios de usar ele no lugar do Apache, vamos falar um pouco dos lados positivos e negativos dessa configuração. Neste tutorial você vai aprender a instalar, configurar e otimizar o WordPress usando o Nginx como servidor web, PHP 7.4 e iremos também gerar o certificado SSL usando o letsencrypt para habilitar o protocolo HTTPS.

Porque usar o Nginx?

Existem diversos motivos para usar o Nginx, no meu caso decidi utilizar porque já tinha uma instalação para uma outra aplicação web com Nginx, para economizar recursos de máquinas decidi testar essa configuração de Wordpres + Nginx e fiquei muito feliz com o resultado. Outros motivos para utilizar: Ele suporta proxy reverso, cache embarcado muito eficiente (FastCGI), streaming de mídia, balanceamento de carga e muito mais. Ele foi desenhado para ter um baixo consumo de memória, muitas conexões simultâneas e otimizado para entregar arquivos estáticos como imagens e vídeos.

Pré-requisitos

  • Servidor Ubuntu 18.04/20.04 com acesso Root e um IP público
  • Um domínio para configurar o acesso e emitir o certificado SSL

Como instalar o WordPress com Nginx

Vamos para a parte técnica, acesse por ssh a máquina que você vai configurar e siga as próximas etapas:

1. Atualizando o Sistema

Primeiro atualize as referências dos pacotes do sistema.

$ sudo apt update

Agora atualize os programas para a última versão (Esse passo é opcional mas recomendado).

$ sudo apt upgrade

2. Instalando o Nginx

Vamos instalar o Nginx direto do repositório do Ubuntu.

$ sudo apt install nginx

Esse passo pode demorar um pouco, ele irá instalar e configurar o Nginx na sua máquina, ao finalizar verifique se o serviço está rodando.

$ sudo systemctl status nginx

3. Configurando o Firewall

Se você estiver em alguma máquina que esteja com o UFW habilitado, rode o seguinte comando para adicionar o Nginx como confiável.

$ sudo ufw allow 'Nginx Full'

4. Instalando e Configurando o Banco de Dados MySQL

Nossa instalação WordPress vai precisar de um banco de dados, ele pode ser tanto o MariaDB como o MySQL, neste tutorial utilizaremos a última opção.

$ sudo apt install mysql-server

Verifique se a instalação foi bem sucedida.

$ sudo systemctl status mysql

Agora precisamos entrar por linha de comando no MySQL para criar o banco de dados e usuário para o WordPress.

$ mysql -u root -p

Com o comando abaixo vamos criar um banco de dados chamado wordpress com o charset utf8.

mysql> CREATE DATABASE wordpress CHARACTER SET utf8 COLLATE utf8_general_ci;

Agora precisamos criar um usuário e dar permissão a ele para acessar o nosso recém criado banco de dados. Altere SeuUsuario para o nome de usuário desejado e a SuaSenha também, lembre-se de usar uma senha bem forte.

mysql> GRANT ALL ON wordpress.* TO SeuUsuario @'localhost' IDENTIFIED BY 'SuaSenha';

Renove os privilégios do MySQL e saia da sua linha de comando.

mysql> FLUSH PRIVILEGES;
mysql> EXIT;

Agora vamos executar uma verificação de segurança do MySQL, esse passo é opcional mas extremamente recomendado.

$ sudo mysql_secure_installation

5. Instalando o PHP 7.4

Primeiro execute os comandos abaixo para atualizar o sistema e adicionar e configurar o ppa do PHP em seu servidor.

$ sudo apt install software-properties-common
 
$ sudo add-apt-repository ppa:ondrej/php
 
$ sudo apt update

Agora vamos instalar o PHP 7.4 e todos os plugins necessários para o WordPress.

$ sudo apt install php7.4-fpm php7.4-common php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-curl php7.4-gd php7.4-imagick php7.4-cli php7.4-dev php7.4-imap php7.4-mbstring php7.4-opcache php7.4-soap php7.4-zip php7.4-intl unzip -y

Verifique se a instalação foi feita com sucesso.

$ php-fpm7.4 -v

Você pode alterar algumas configurações importantes, como tamanho máximo de upload e tempo de execução do PHP.

sudo nano /etc/php/7.4/fpm/php.ini

file_uploads = On
allow_url_fopen = On
upload_max_filesize = 100M 
post_max_size = 64M 
memory_limit = 256M 
max_execution_time = 360 
max_input_vars = 3000 
max_input_time = 1000

6. Instalando o WordPress

Primeiro vamos criar a pasta onde nossa instalação WordPress ficará.

$ sudo mkdir -p /var/www/html/seusite.com

Navega até a pasta e baixe a última versão do WordPress.

$ cd /var/www/html/seusite.com && wget https://wordpress.org/latest.tar.gz

Agora precisamos extrair e mover os arquivos para a raiz da pasta desejada.

$ tar xf latest.tar.gz && mv wordpress/* ../

Agora adiciona as permissões necessárias para o servidor web conseguir acessar os arquivos da instalação.

$ sudo chown -R www-data: /var/www/html/seusite.com

7. Configurando o Nginx para o WordPress

Agora precisamos configurar o Nginx para reconhecer o nosso domínio e instalação WordPress. Para isso vamos criar um arquivo na pasta /etc/nginx/sites-available com o nome de nosso domínio. Com o seu editor preferido, nano no meu caso, crie o arquivo.

$ sudo nano /etc/nginx/sites-available

Copie e cole o seguinte conteúdo.

server{
 
        listen 80;
        listen [::]:80;
        server_name seusite.com www.seusite.com;
 
        root /var/www/seusite.com;
        index index.php;
         
        # Arquivos de Log
        access_log /var/log/nginx/seusite.com.access.log;
        error_log /var/log/nginx/seusite.com.error.log;
        # Criamos a configuração para o Favicon básico
        location = /favicon.ico {
           try_files /favicon.ico @empty;
           access_log off;
           log_not_found off;
           expires max;
        }
        # Configuração para o robots.txt para os buscadores
        location = /robots.txt {
           allow all;
           log_not_found off;
           access_log off;
           try_files $uri /index.php?$args;
        }
        # Configuração para executar a instalação do WordPress
        location / {
           try_files $uri $uri/ /index.php?$args;
        }
        # Incluimos a configuração do FastCGI
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }
        # Adicionamos uma configuração de cache para os arquivos de imagem, css e javascript
        location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
                 expires max;
                log_not_found off;
        }
 
}

Agora crie um atalho (symbolic link) para esse nosso arquivo recém criado.

$ sudo ln -s /etc/nginx/sites-available/seusite.com /etc/nginx/sites-enabled/

Agora reinicie o Nginx para que a nova configuração do site seja aplicada.

$ sudo systemctl restart nginx

8. Instalando o Let’s Encrypt e Gerando o Certificado SSL

Nessa etapa você já precisa ter configurado o apontamento do seu domínio para o seu servidor, vamos precisar que o servidor já esteja acessível pela internet pública. Instale e configure o Certbot, ele vai gerar e configurar automaticamente o certificado na instalação do Nginx.

$ sudo add-apt-repository ppa:certbot/certbot
 
$ sudo apt install python-certbot-nginx
 
$ sudo certbot --nginx -d seusite.com -d www.seusite.com

Um pequeno questionário aparecerá, aceite os termos e responde todas as perguntas com cuidado. Na última etapa opte por redirecionar todo tráfego HTTP para HTTPS, ele irá se encarregar de configurar o redirecionamento automaticamente.

9. Configurando o WordPress

Se tudo deu certo, você poderá agora acessar a instalação WordPress em seu navegador, digitando o seu domínio, no caso deste tutorial https://seusite.com. Agora é muito simples, basta seguir e responder o questionário de instalação do WordPress, informar o banco de dados, o usuário e a senha que configuramos na etapa 4.

Agora é só aproveitar a sua nova e otimizada instalação WordPress. Depois de configurado, utilize plugins de cache que tenham compatibilidade de configuração com o Nginx para otimizar ainda mais a velocidade do seu site.

5 1 voto
Nota do Artigo
Subscribe
Notify of

5 Comentários
newest
oldest most voted
Inline Feedbacks
View all comments
1 ano atrás

Muy buen aporte.

Diego Santana
4 anos atrás

Henrique Marques Fernandes, Excelente Artigo, eu estava com dificuldades para configurar e seguindo do passo a passo de seu artigo consegui fazer.
Consigo colocar para gerar certificado automaticamente após expirar?

Reply to  Diego Santana
4 anos atrás

Opa, fico feliz que tenha gostado Diego! Consegue sim, inclusive escreverei um tutorial sobre isso… Mas pra adiantar, da uma olhada nesse link https://onepagezen.com/letsencrypt-auto-renew-certbot-apache/

Abraços!

marcos
4 anos atrás

Parabens pelo artigo!
Estou tendo um problema com nginx e wordpress pois migramos do apache para ele.
Temos um site wordpress principal em https://sitexemplo.com.br e outros sites em subdiretorios com wordpress tambem, ex: https://sitexemplo.com.br/site1 e https://sitexemplo.com.br/site2 cujas estruturas de links permanentes funcionavam sem problema no apache.
Agora, ao tentar acessar uma pagina ou post nos sites 1 ou 2, retorna 404 do site principal.
Sabe o que podemos fazer? No apache era somente configurar o .htacess em cada instalacao que ficava ok.

wpDiscuz
5
0
Would love your thoughts, please comment.x