Instale WordPress no Ubuntu 22.04 com Nginx, MariaDB, PHP8.1 (LEMP)
Este tutorial vai mostrar como instalar o WordPress no Ubuntu 22.04 com Nginx, MariaDB e PHP8.1 (LEMP Stack). WordPress é o CMS (Sistema de Gerenciamento de Conteúdo) mais popular do mundo. Estima-se que mais de um terço dos sites hoje são baseados em WordPress. PHP8.1 está incluído no repositório Ubuntu 22.04 e a versão mais recente do WordPress funciona perfeitamente com ele.
Pré-requisitos
1. Para seguir este tutorial, você precisa de um sistema operacional Ubuntu 22.04 em execução em um servidor remoto. Se você está procurando um servidor virtual privado (VPS), recomendo o Kamatera VPS, que apresenta:
- 30 dias de teste gratuito.
- A partir de US$4/mês (1 GB de RAM)
- VPS baseado em KVM de alto desempenho
- 9 data centers em todo o mundo, incluindo Estados Unidos, Canadá, Reino Unido, Alemanha, Holanda, Hong Kong e Isreal.
Siga o tutorial com link abaixo para criar seu servidor Linux VPS no Kamatera.
- Como criar um servidor Linux VPS no Kamatera
2. Você também precisa de um nome de domínio, para que os visitantes possam digitar um nome de domínio na barra de endereço do navegador para acessar seu site. Registrei meu nome de domínio no NameCheap porque o preço é baixo e eles oferecem proteção de privacidade whois gratuita para o resto da vida.
3. Este tutorial pressupõe que você já configurou uma pilha LEMP no Ubuntu 22.04. Caso contrário, confira o seguinte tutorial.
- Como instalar a pilha LEMP (Nginx, MariaDB, PHP8.1) no Ubuntu 22.04
Após terminar a instalação do LEMP, volte aqui e continue lendo.
Passo 1: Baixe o WordPress
SSH em seu servidor Ubuntu 22.04 e atualize o software existente.
sudo apt update && sudo apt upgrade -y
Em seguida, vá para a página de download do wordpress.org e baixe o arquivo zip. Você pode adquirir o link de download direto clicando com o botão direito do mouse no botão de download e selecionando copiar local do link
.
Em seguida, no prompt da linha de comando, digite wget seguido do link de download direto para baixar o WordPress em seu servidor Ubuntu 22.04.
wget https://wordpress.org/latest.zip
A seguir, extraia o arquivo zip usando o comando abaixo.
sudo apt install unzip
sudo mkdir -p /usr/share/nginx
sudo unzip latest.zip -d /usr/share/nginx/
O arquivo será extraído para o diretório /usr/share/nginx/
. Um novo diretório chamado wordpress
será criado (/usr/share/nginx/wordpress). Agora podemos renomeá-lo como abaixo, para que seja fácil identificar cada diretório. Substitua example.com
pelo seu nome de domínio real.
sudo mv /usr/share/nginx/wordpress /usr/share/nginx/example.com
Etapa 2: Crie um banco de dados e um usuário para o site WordPress
Faça login no console MariaDB como root com o seguinte comando.
sudo mariadb -u root
ou
sudo mysql -u root
Depois de fazer login, crie um banco de dados para WordPress usando o seguinte comando. Eu o chamei de wordpress
, mas você pode usar o nome que quiser, como o nome do seu site. (Não deixe o ponto e vírgula de fora.)
create database wordpress;
Em seguida, digite o comando abaixo para criar um usuário de banco de dados para WordPress. Substitua wpuser
e sua-senha
pelo nome de usuário e senha de sua preferência.
create user wpuser@localhost identified by 'your-password';
Concede todos os privilégios do banco de dados WordPress ao usuário.
grant all privileges on wordpress.* to wpuser@localhost;
Limpe a tabela de privilégios para que as alterações tenham efeito e saia do console MariaDB.
flush privileges;
exit;
Etapa 3: configurar o WordPress
Vá para o seu diretório do WordPress.
cd /usr/share/nginx/example.com/
Copie o arquivo de configuração de amostra e renomeie-o para wp-config.php
.
sudo cp wp-config-sample.php wp-config.php
Agora edite o novo arquivo de configuração com um editor de texto de linha de comando como o Nano.
sudo nano wp-config.php
Encontre as linhas a seguir e substitua os textos em vermelho pelo nome do banco de dados, nome de usuário e senha que você criou na etapa anterior.
/** The name of the database for WordPress */
define('DB_NAME', 'database_name_here');
/** MySQL database username */
define('DB_USER', 'username_here');
/** MySQL database password */
define('DB_PASSWORD', 'password_here');
Em seguida, role para baixo para encontrar a seguinte linha.
$table_prefix = 'wp_';
Por padrão, cada nome de tabela de banco de dados WordPress começa com wp_
como prefixo. É altamente recomendável alterá-lo para outra coisa para melhorar a segurança. Use caracteres aleatórios como abaixo.
$table_prefix = '9OzB3g_';
Salve e feche o arquivo. Para salvar o arquivo no editor de texto Nano, pressione Ctrl+O
e pressione Enter
para confirmar. Em seguida, pressione Ctrl+X
para sair.
Como este arquivo contém uma senha, executamos o seguinte comando para garantir que apenas o proprietário do arquivo possa lê-lo.
sudo chmod 640 wp-config.php
Também precisamos definir o usuário Nginx (www-data
) como o proprietário do diretório do site WordPress usando o seguinte comando.
sudo chown www-data:www-data /usr/share/nginx/example.com/ -R
Etapa 4: crie um bloco de servidor Nginx para WordPress
Criaremos o arquivo de bloco do servidor no diretório /etc/nginx/conf.d/
. O nome do arquivo deve terminar com .conf
.
sudo nano /etc/nginx/conf.d/example.com.conf
Coloque os seguintes textos no arquivo. Substitua os textos em vermelho pelo seu próprio nome de domínio. Não se esqueça de criar registros A para o seu nome de domínio no gerenciador DNS.
server {
listen 80;
listen [::]:80;
server_name www.example.com example.com;
root /usr/share/nginx/example.com/;
index index.php index.html index.htm index.nginx-debian.html;
error_log /var/log/nginx/wordpress.error;
access_log /var/log/nginx/wordpress.access;
location / {
try_files $uri $uri/ /index.php;
}
location ~ ^/wp-json/ {
rewrite ^/wp-json/(.*?)$ /?rest_route=/$1 last;
}
location ~* /wp-sitemap.*\.xml {
try_files $uri $uri/ /index.php$is_args$args;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
client_max_body_size 20M;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
fastcgi_buffers 1024 4k;
fastcgi_buffer_size 128k;
}
#enable gzip compression
gzip on;
gzip_vary on;
gzip_min_length 1000;
gzip_comp_level 5;
gzip_types application/json text/css application/x-javascript application/javascript image/svg+xml;
gzip_proxied any;
# A long browser cache lifetime can speed up repeat visits to your page
location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
# disable access to hidden files
location ~ /\.ht {
access_log off;
log_not_found off;
deny all;
}
}
Salve e feche o arquivo. Em seguida, teste as configurações do Nginx.
sudo nginx -t
Se o teste for bem-sucedido, recarregue o Nginx.
sudo systemctl reload nginx
Digite seu nome de domínio na barra de endereço do navegador.
example.com
ou
example.com/wp-admin/install.php
Você verá o assistente de instalação do WordPress. Selecione um idioma.
Se o assistente de instalação não for exibido, provavelmente você precisará instalar algumas extensões PHP.
sudo apt install php-imagick php8.1-fpm php8.1-mbstring php8.1-bcmath php8.1-xml php8.1-mysql php8.1-common php8.1-gd php8.1-cli php8.1-curl php8.1-zip
Em seguida, recarregue o PHP-FPM e o Nginx. O assistente agora deve ser exibido.
sudo systemctl reload php8.1-fpm nginx
Antes de inserir suas informações confidenciais no assistente de configuração, é recomendável ativar o HTTPS para evitar o sequestro de tráfego.
Etapa 5: Habilitar HTTPS
Para criptografar o tráfego HTTP, podemos habilitar o HTTPS instalando um certificado TLS gratuito emitido pela Let’s Encrypt. Execute o seguinte comando para instalar o cliente Let’s Encrypt (certbot) no servidor Ubuntu 22.04.
sudo apt install certbot python3-certbot-nginx
E execute este comando para obter e instalar o certificado TLS.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email -d yourdomain.com,www.yourdomain.com
Onde
--nginx
: Use o plugin Nginx.--agree-tos
: concorda com os termos de serviço.--redirect
: Força HTTPS por redirecionamento 301.--hsts
: Adicione o cabeçalho Strict-Transport-Security a cada resposta HTTP. Forçando o navegador a sempre usar TLS para o domínio. Protege contra remoção de SSL/TLS.--staple-ocsp
: ativa o grampeamento OCSP. Uma resposta OCSP válida é grampeada no certificado que o servidor oferece durante o TLS.--email
: E-mail utilizado para cadastro e contato de recuperação.- O sinalizador
-d
é seguido por uma lista de nomes de domínio, separados por vírgula. Você pode adicionar até 100 nomes de domínio.
O certificado agora deve ser obtido e instalado automaticamente.
Agora, se você recarregar o assistente de configuração do WordPress, poderá ver que o HTTP é redirecionado automaticamente para a conexão HTTPS.
Etapa 6: Conclua a instalação com o assistente de configuração
Crie uma conta de administrador e clique no botão Instalar WordPress.
E agora seu novo site WordPress está instalado.
Como redirecionar www para não www (ou vice-versa)
Já habilitamos o redirecionamento de HTTP para HTTPS, o que falta fazer é redirecionar www para não www, ou vice-versa. É muito fácil. Basta acessar o Painel do WordPress > Configurações > Geral e definir sua versão preferida (www ou não www) em Endereço do WordPress e Endereço do site. Certifique-se de incluir o prefixo https://
.
Como enviar e-mails no WordPress
Seu site WordPress precisa enviar e-mails como e-mails de registro de conta, e-mails de redefinição de senha, e-mails de notificação de comentários, etc. Em vez de usar soluções caras de terceiros, como o Gsuite, para criar endereços de e-mail profissionais para o seu site, você pode seguir este tutorial do iRedMail para definir configure seu próprio servidor de e-mail com seu próprio nome de domínio, para que você possa ter caixas de correio ilimitadas e enviar e-mails ilimitados sem gastar muito.
Observe que é uma boa prática instalar o servidor de e-mail e o WordPress em dois servidores virtuais privados diferentes porque você não quer que o servidor de e-mail diminua a velocidade do seu site WordPress e o servidor de e-mail vaze o Endereço IP do seu site WordPress se eles estiverem no mesmo servidor virtual privado, o que significa que os hackers podem ignorar qualquer CDN (Content Delivery Network) que você está usando e lançar um ataque DDoS diretamente no seu servidor de origem.
Assim que o seu servidor de e-mail estiver instalado e funcionando, você pode instalar um plugin SMTP no WordPress, para que ele possa se conectar ao seu servidor de e-mail e enviar e-mails. Vá para o seu painel do WordPress -> Plugins, clique em Adicionar Novo para instalar um novo plugin.
Em seguida, digite WP Mail SMTP na caixa de pesquisa. Instale e ative o plugin WP Mail SMTP by WPForms.
Recarregue a página do painel do WordPress, você verá WP Mail SMTP na barra de menu esquerda. Clique nele e selecione Configurações.
Em seguida, role para baixo até a seção Mailer. Por padrão, o mailer PHP está selecionado. Precisamos alterá-lo para Outro SMTP.
Role para baixo e você precisará inserir as configurações de SMTP.
- Digite o nome do host do seu servidor de e-mail.
- Selecione TLS como criptografia.
- Utilize a porta 587.
- Habilite a autenticação.
- Digite um endereço de e-mail do seu domínio e a senha.
Depois de salvar as configurações, você pode testar o envio de e-mail desconectando-se do painel do WordPress e clicando no link perdeu sua senha para enviar um e-mail de redefinição de senha.
Aumentar o limite de tamanho do arquivo de upload
Por padrão, arquivos como imagens e arquivos PDF carregados na biblioteca de mídia do WordPress não podem ser maiores que 2 MB. Para aumentar o limite de tamanho de upload, edite o arquivo de configuração PHP.
sudo nano /etc/php/8.1/fpm/php.ini
Encontre a seguinte linha (linha 850). No editor de texto Nano, você pode pressionar Ctrl+/
e digitar 850
para pular para a linha 850.
upload_max_filesize = 2M
Altere o valor como abaixo:
upload_max_filesize = 20M
Em seguida, encontre a seguinte linha (linha 694).
post_max_size = 8M
Altere o tamanho máximo dos dados POST que o PHP aceitará.
post_max_size = 20M
Salve e feche o arquivo. Alternativamente, você pode executar os dois comandos a seguir para alterar o valor sem abrir o arquivo manualmente.
sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 20M/g' /etc/php/7.4/fpm/php.ini
sudo sed -i 's/post_max_size = 8M/post_max_size = 20M/g' /etc/php/7.4/fpm/php.ini
Em seguida, reinicie o PHP-FPM.
sudo systemctl restart php8.1-fpm
O Nginx também define um limite para o tamanho do arquivo de upload. O limite máximo de tamanho de arquivo de upload padrão definido pelo Nginx é 1 MB. Para permitir o upload de arquivos grandes para o seu site WordPress, edite o arquivo de configuração do Nginx.
sudo nano /etc/nginx/conf.d/example.com.conf
Já definimos o tamanho máximo do arquivo neste arquivo, conforme indicado por
client_max_body_size 2M;
Você pode alterá-lo se preferir, como 20M.
client_max_body_size 20M;
Salve e feche o arquivo. Em seguida, recarregue o Nginx para que as alterações tenham efeito.
sudo systemctl reload nginx
Próximos passos
Espero que este tutorial tenha ajudado você a instalar o WordPress no Ubuntu 22.04 com Nginx, MariaDB e PHP8.1 (pilha LEMP). Como sempre, se você achou esta postagem útil, assine nosso boletim informativo gratuito para obter mais dicas e truques.
Backup é importante em caso de hackers, desastres em data centers, etc. Você deve ter uma estratégia de backup para seu site WordPress.
- Faça backup e restaure bancos de dados MariaDB na linha de comando
- Use Duplicati para fazer backup de arquivos no Debian, Ubuntu, Linux Mint
Ajuste e monitoramento de desempenho do servidor Linux
- Aumente facilmente o desempenho da rede Ubuntu ativando o TCP BBR
- O que é HTTP/2 e como habilitá-lo no Nginx
- Monitoramento de desempenho de servidor Linux com Netdata (2022)
Utilitário de linha de comando do WordPress
- Você também pode usar a ferramenta de linha de comando WP-CLI para gerenciar seu site WordPress.
- Você pode usar o WPScan para verificar as vulnerabilidades do seu site WordPress.
Se cuide 🙂