Tutoriais

Stack LEMP (Nginx, MySQL, PHP) passo a passo

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/php oferece 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.

Compartilhar:

Pronto para hospedar seu próximo projeto?

VPS com painel pré-instalado em 1 clique. Ativação imediata.

Ver planos VPS