Stack LEMP (Nginx, MySQL, PHP) passo a passo
A stack LEMP — Linux, Nginx (pronuncia-se "engine-x", daí o E), MySQL/MariaDB e PHP — é a base de grande parte dos sites PHP modernos: WordPress, Laravel, Magento, sistemas próprios. Veja como montá-la do zero em Ubuntu/Debian.
1. Atualize o sistema
sudo apt update && sudo apt upgrade -y
2. Nginx
sudo apt install nginx -y
sudo systemctl enable --now nginx
sudo ufw allow 'Nginx Full'
Acesse http://SEU_IP: deve aparecer a página padrão do Nginx.
3. MariaDB (ou MySQL)
sudo apt install mariadb-server -y
sudo mariadb-secure-installation
Crie um banco e um usuário para cada aplicação:
CREATE DATABASE app CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'app'@'localhost' IDENTIFIED BY 'SENHA_FORTE';
GRANT ALL PRIVILEGES ON app.* TO 'app'@'localhost';
FLUSH PRIVILEGES;
4. PHP-FPM
sudo apt install php-fpm php-mysql php-cli php-curl php-mbstring php-xml php-zip php-gd php-intl -y
php -v
Precisa de uma versão específica do PHP? No Ubuntu, o PPA
ondrej/phpoferece várias versões lado a lado.
5. Virtual host
/etc/nginx/sites-available/meusite:
server {
listen 80;
server_name meusite.com.br www.meusite.com.br;
root /var/www/meusite/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock; # ajuste à sua versão
}
location ~ /\.(?!well-known) {
deny all;
}
}
sudo mkdir -p /var/www/meusite/public
echo "<?php phpinfo();" | sudo tee /var/www/meusite/public/index.php
sudo ln -s /etc/nginx/sites-available/meusite /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
Acesse o domínio e confira a página do phpinfo(). Depois, apague esse arquivo — ele expõe informações do servidor.
6. SSL
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d meusite.com.br -d www.meusite.com.br
7. Ajustes de desempenho
PHP-FPM (/etc/php/8.3/fpm/pool.d/www.conf)
pm = dynamic
pm.max_children = 20
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 6
Uma estimativa para pm.max_children: RAM disponível para o PHP ÷ memória média por processo (veja com ps -ylC php-fpm8.3 --sort:rss).
OPcache
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
Nginx
# /etc/nginx/nginx.conf, bloco http
gzip on;
gzip_types text/css application/javascript application/json image/svg+xml;
server_tokens off;
MariaDB
Ajuste innodb_buffer_pool_size para uma boa fração da RAM disponível ao banco.
8. Segurança
- Banco escutando apenas em
127.0.0.1; - Um usuário de banco por aplicação;
- Um pool PHP-FPM com usuário próprio por site, quando hospedar vários;
- Sistema e pacotes atualizados.
Conclusão
Com a stack LEMP, você tem um ambiente enxuto, rápido e flexível para qualquer aplicação PHP. Monte a sua em um VPS-NVME-BR da VittHost, com NVMe e servidores no Brasil.Use o cupom SP-VITT20 e ganhe 20% de desconto na primeira fatura enquanto a promoção estiver ativa.