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 /home/u402833520/domains/marquesfernandes .com /public_html/seusite .com |
Navega até a pasta e baixe a última versão do WordPress.
$ cd /home/u402833520/domains/marquesfernandes .com /public_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: /home/u402833520/domains/marquesfernandes .com /public_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.
Muy buen aporte.
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.