Como Instalar Linux, Nginx, MySQL, PHP (LEMP) Stack no Ubuntu: Guia Completo
A pilha LEMP — um acrônimo para Linux, Nginx, MySQL e PHP — é uma das configurações de servidor web mais amplamente adotadas para alimentar sites dinâmicos e aplicações web de alto desempenho. Ao combinar a estabilidade sólida do Linux, a velocidade relâmpago do Nginx, os recursos robustos de gerenciamento de dados do MySQL e a versatilidade do PHP, a pilha LEMP oferece um ambiente de hospedagem poderoso, escalável e eficiente em recursos.
Quer você esteja implantando um blog pessoal, um site comercial ou uma aplicação empresarial complexa, uma pilha LEMP adequadamente configurada oferece melhor escalabilidade, tempos de carregamento de página mais rápidos e gerenciamento eficiente de memória — especialmente em condições de alto tráfego.
Se você precisa de uma base confiável para executar essa pilha, AlexHost VPS Hosting fornece servidores virtuais baseados em Linux de alto desempenho com acesso root completo, oferecendo controle total sobre cada componente do seu ambiente LEMP. Combine isso com um Certificado SSL para proteger sua aplicação desde o primeiro dia.
Neste guia abrangente, orientaremos você em cada etapa da instalação e configuração da pilha LEMP completa em um servidor Ubuntu — desde a preparação inicial do sistema até o teste do seu ambiente PHP ativo.
1. Pré-requisitos
Antes de começar, certifique-se de ter o seguinte em vigor:
- Um servidor executando Ubuntu 18.04, 20.04 ou 22.04 LTS
- Uma conta de usuário com privilégios sudo
- Acesso SSH ou acesso direto ao terminal do seu servidor
- Um nome de domínio registrado (opcional, mas recomendado para implantações em produção — você pode registrar um via Registro de Domínios AlexHost)
> Dica Profissional: Para um ambiente limpo e isolado com recursos garantidos, um plano de VPS Hosting é o ponto de partida ideal para qualquer implantação LEMP.
2. Atualize Seu Sistema
Antes de instalar qualquer pacote, é crítico atualizar seu índice de pacotes e aplicar todas as atualizações pendentes. Isso garante que você esteja trabalhando com as versões mais recentes e seguras de todo o software.
Abra seu terminal e execute:
sudo apt update && sudo apt upgrade -yEste comando atualiza o banco de dados de pacotes local e atualiza todos os pacotes instalados para suas versões mais recentes disponíveis.
3. Instale Nginx
Nginx (pronunciado “engine-x”) é um servidor web de alto desempenho orientado a eventos e proxy reverso. Ao contrário do Apache, Nginx lida com conexões simultâneas com consumo mínimo de memória, tornando-o a escolha preferida para ambientes de alto tráfego.
Etapa 1: Instale Nginx
sudo apt install nginx -yEtapa 2: Inicie e Ative Nginx
Após a instalação, inicie o serviço Nginx e configure-o para iniciar automaticamente na inicialização do sistema:
sudo systemctl start nginx
sudo systemctl enable nginxEtapa 3: Verifique se Nginx Está Funcionando
Verifique o status do serviço para confirmar que Nginx está ativo:
sudo systemctl status nginxVocê deve ver uma saída indicando que o serviço está ativo (em execução). Você também pode abrir um navegador web e navegar até o endereço IP do seu servidor:
http://your_server_ipSe Nginx estiver funcionando corretamente, você será saudado pela página padrão “Bem-vindo ao nginx!”.
Etapa 4: Configure o Firewall (Se Aplicável)
Se você tiver UFW (Uncomplicated Firewall) ativado, permita tráfego HTTP e HTTPS:
sudo ufw allow 'Nginx Full'
sudo ufw status4. Instale MySQL
MySQL é um poderoso sistema de gerenciamento de banco de dados relacional (RDBMS) de código aberto que serve como a espinha dorsal de dados para a maioria das aplicações web dinâmicas, incluindo WordPress, Joomla e aplicações PHP personalizadas.
Etapa 1: Instale o Servidor MySQL
sudo apt install mysql-server -yEtapa 2: Proteja a Instalação MySQL
Após a instalação, execute o script de endurecimento de segurança integrado. Este script ajuda você a definir uma senha raiz forte, remover usuários anônimos, desabilitar login remoto de raiz e excluir o banco de dados de teste:
sudo mysql_secure_installationVocê será solicitado com uma série de perguntas. As respostas recomendadas para um servidor de produção são:
| Prompt | Resposta Recomendada |
|---|---|
| Configurar componente VALIDATE PASSWORD? | Sim |
| Nível de política de validação de senha | 2 (FORTE) |
| Remover usuários anônimos? | Sim |
| Desabilitar login remoto de raiz? | Sim |
| Remover banco de dados de teste? | Sim |
| Recarregar tabelas de privilégios? | Sim |
Etapa 3: Verifique se MySQL Está Funcionando
sudo systemctl status mysqlEtapa 4: Faça Login no MySQL (Verificação Opcional)
sudo mysql -u root -pDigite sua senha de raiz quando solicitado. Digite exit para sair do shell MySQL.
5. Instale PHP
PHP (Hypertext Preprocessor) é a linguagem de script do lado do servidor que processa conteúdo dinâmico e se comunica com MySQL para servir páginas web orientadas por dados. Ao usar Nginx, PHP é manipulado através do PHP-FPM (FastCGI Process Manager), que processa solicitações PHP independentemente do servidor web para melhor desempenho.
Etapa 1: Instale PHP-FPM e a Extensão MySQL
sudo apt install php-fpm php-mysql -yVocê também pode querer instalar extensões PHP comumente usadas para compatibilidade mais ampla de aplicações:
sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-zip -yEtapa 2: Configure PHP-FPM para Segurança
Abra o arquivo de configuração PHP-FPM. Substitua 8.1 pela sua versão PHP instalada (verifique com php -v):
sudo nano /etc/php/8.1/fpm/php.iniLocalize a diretiva cgi.fix_pathinfo e defina-a como 0 para evitar uma vulnerabilidade de segurança crítica:
cgi.fix_pathinfo=0> Por que isso importa: Se cgi.fix_pathinfo estiver definido como 1, PHP tentará executar o arquivo mais próximo que conseguir encontrar se o arquivo PHP solicitado não existir. Este comportamento pode ser explorado por atacantes para executar código arbitrário.
Salve e feche o arquivo (Ctrl+X, depois Y, depois Enter).
Etapa 3: Reinicie PHP-FPM
Aplique as alterações de configuração reiniciando o serviço PHP-FPM:
sudo systemctl restart php8.1-fpm6. Configure Nginx para Processar PHP
Por padrão, Nginx não sabe como lidar com arquivos PHP. Você precisa criar um bloco de servidor (o equivalente Nginx de um host virtual Apache) que instrua Nginx a passar solicitações PHP para PHP-FPM para processamento.
Etapa 1: Crie o Diretório Raiz da Web
Crie o diretório onde seus arquivos de site serão armazenados:
sudo mkdir -p /var/www/your_domain
sudo chown -R www-data:www-data /var/www/your_domain
sudo chmod -R 755 /var/www/your_domainSubstitua your_domain pelo seu nome de domínio real ou um nome de projeto descritivo.
Etapa 2: Crie um Novo Bloco de Servidor Nginx
Crie um novo arquivo de configuração Nginx para seu site:
sudo nano /etc/nginx/sites-available/your_domainAdicione o seguinte bloco de configuração. Leia os comentários inline com cuidado — eles explicam o que cada diretiva faz:
server {
listen 80;
listen [::]:80;
server_name your_domain www.your_domain; # Replace with your domain or server IP
root /var/www/your_domain; # Document root — where your files live
index index.php index.html index.htm; # Default files to serve
# Handle all requests; return 404 if file not found
location / {
try_files $uri $uri/ =404;
}
# Pass PHP scripts to PHP-FPM for processing
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # Adjust PHP version as needed
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# Deny access to hidden files (e.g., .htaccess)
location ~ /.ht {
deny all;
}
}> Importante: Substitua your_domain pelo seu nome de domínio real e ajuste php8.1-fpm.sock para corresponder à sua versão PHP instalada.
Etapa 3: Ative o Bloco de Servidor
Crie um link simbólico de sites-available para sites-enabled para ativar a configuração:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/Para evitar um possível problema de memória de hash bucket, também é uma boa prática abrir a configuração principal do Nginx e garantir que a diretiva server_names_hash_bucket_size não esteja comentada:
sudo nano /etc/nginx/nginx.confEncontre e descomente:
server_names_hash_bucket_size 64;Etapa 4: Teste a Configuração Nginx
Antes de reiniciar Nginx, sempre teste a configuração para erros de sintaxe:
sudo nginx -tSe a saída mostrar:
nginx: configuration file /etc/nginx/nginx.conf test is successfulVocê está pronto para prosseguir.
Etapa 5: Reinicie Nginx
Aplique todas as alterações reiniciando o serviço Nginx:
sudo systemctl restart nginx7. Crie e Teste um Arquivo PHP Info
Para confirmar que Nginx está passando corretamente solicitações PHP para PHP-FPM, crie um arquivo de teste PHP simples no seu diretório raiz de documentos.
Etapa 1: Crie o Arquivo PHP Info
sudo nano /var/www/your_domain/info.phpAdicione o seguinte conteúdo:
<?php
phpinfo();
?>Salve e feche o arquivo.
Etapa 2: Acesse a Página PHP Info
Abra seu navegador web e navegue até:
http://your_domain/info.phpOu, se você ainda não configurou um domínio:
http://your_server_ip/info.phpVocê deve ver a página de informações PHP — uma visão geral detalhada da sua instalação PHP, módulos carregados, valores de configuração e variáveis de ambiente. Isso confirma que todos os três componentes (Nginx, PHP-FPM e MySQL) estão funcionando corretamente juntos.
Etapa 3: Remova o Arquivo PHP Info (Etapa Crítica de Segurança)
Após confirmar que tudo está funcionando, delete o arquivo info.php imediatamente. Este arquivo expõe detalhes sensíveis de configuração do servidor que poderiam ser explorados por atores maliciosos:
sudo rm /var/www/your_domain/info.php8. Próximas Etapas: Fortaleça e Otimize Sua Pilha LEMP
Com sua pilha LEMP funcionando, considere as seguintes etapas adicionais para preparar seu servidor para produção:
Ative HTTPS com um Certificado SSL Gratuito
Proteja seu site com criptografia TLS/SSL usando Certbot e Let’s Encrypt:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain -d www.your_domainAlternativamente, explore Certificados SSL AlexHost para certificados comercialmente validados premium que fornecem níveis de confiança mais altos para aplicações comerciais e de e-commerce.
Otimize o Desempenho do Nginx
Adicione as seguintes diretivas à sua configuração Nginx para melhorar o desempenho:
# Enable Gzip compression
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
# Enable browser caching for static assets
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}Configure um Usuário MySQL Dedicado
Evite usar a conta raiz MySQL para suas aplicações. Crie um usuário de banco de dados dedicado com privilégios limitados:
CREATE DATABASE your_app_db;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON your_app_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;Considere um Painel de Controle para Gerenciamento Mais Fácil
Se você preferir uma interface gráfica para gerenciar sua pilha LEMP, hosts virtuais Nginx, bancos de dados e contas de email, considere implantar um painel de controle. AlexHost oferece VPS com cPanel e uma variedade de outros Painéis de Controle VPS para simplificar a administração do servidor sem sacrificar desempenho ou controle.
9. Conclusão
Você instalou e configurou
em todos os serviços de alojamento