> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://ajuda.fabweb.com.br/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Como instalar Nginx + PHP + MySQL e criar um Virtual Host no Ubuntu 24

# Introdução
A stack Nginx + PHP + MySQL (LEMP) é amplamente utilizada para hospedar aplicações web de forma performática e segura.
Com ela, você consegue servir sites dinâmicos com alta eficiência, sendo uma das configurações mais utilizadas em servidores Linux.
Neste tutorial, você aprenderá como instalar o Nginx, PHP 8.2 e MySQL no Ubuntu 24 e configurar um Virtual Host para seu domínio.

---

# Requisitos
Antes de iniciar, você precisa ter:
* Acesso ao servidor via SSH.
* Usuário com privilégios de sudo.
* Servidor rodando Ubuntu 24 atualizado.
* Domínio apontando para o IP do servidor (recomendado).

---

# Informações importantes
* O Nginx será utilizado como servidor web.
* O PHP será executado via PHP-FPM.
* O MySQL será utilizado como banco de dados.
* O Virtual Host permite hospedar múltiplos sites no mesmo servidor.
* Certifique-se de que a porta 80 (HTTP) e porta 443 (HTTPS) estejam liberadas no firewall.

---

# Como instalar a stack LEMP

### 1º Passo: Atualizar o sistema
```
sudo apt update && sudo apt upgrade -y
```

---

### 2º Passo: Instalar o Nginx
```
sudo apt install -y nginx
```

Verifique se está rodando:
```
sudo systemctl status nginx
```

---

### 3º Passo: Instalar o MySQL
```
sudo apt install -y mysql-server
```

Execute a configuração inicial:
```
sudo mysql_secure_installation
```

---

### 4º Passo: Instalar o PHP e extensões
Primeiro vamos adicionar o repositório das versões PHP do Nginx. Execute:
```
sudo add-apt-repository ppa:ondrej/php
```

Será necessário fazer algumas confirmações de adição do repositório. Após concluir, execute:
```
sudo apt update
```

Após o update, faremos a instalação do PHP e suas extensões:
```
sudo apt install -y php8.2 php8.2-cli php8.2-fpm php8.2-mysql php8.2-zip php8.2-gd php8.2-mbstring php8.2-curl php8.2-xml php8.2-bcmath php8.2-imagick php8.2-intl php8.2-soap php8.2-redis php8.2-imap
```

Verifique o PHP-FPM:
```
sudo systemctl status php8.2-fpm
```

Você pode também querer instalar o certbot para criar seus certificados SSL gratuitos. Neste caso, execute:
```
sudo apt install python3-certbot-nginx
```

---

# Como configurar o Virtual Host
### 5º Passo: Criar diretório do site
```
sudo mkdir -p /var/www/seudominio.com.br
```

Definir permissões:
```
sudo chown -R www-data:www-data /var/www/seudominio.com.br
```

⚠️ Lembre-se de alterar **seudominio.com.br** na criação da pasta para o nome correto de seu domínio.

---

### 6º Passo: Criar arquivo de teste
```
nano /var/www/seudominio.com.br/index.php
```

Conteúdo:
```
<?php phpinfo();
```

---

### 7º Passo: Criar configuração do Virtual Host
```
sudo nano /etc/nginx/sites-available/seudominio.com.br
```

Adicione:
```
server {
    listen 80;
    server_name seudominio.com.br www.seudominio.com.br;

    root /var/www/seudominio.com.br;
    index index.php index.html;

    location / {
       try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}
```

⚠️ Pode ser necessário fazer algumas alterações no modelo base acima conforme o tipo de site que pretende hospedar.

---

### 8º Passo: Ativar o site
```
sudo ln -s /etc/nginx/sites-available/seudominio.com.br /etc/nginx/sites-enabled/
```

Testar configuração:
```
sudo nginx -t
```

Reiniciar Nginx:
```
sudo systemctl reload nginx
```

### 9º Passo: Ativar o SSL do site
Após fazer o apontamento correto de seu domínio para o IP do servidor, você poderá gerar o SSL gratuito usando o comando abaixo:
```
certbot --nginx -d seudominio.com.br -d www.seudominio.com.br
```

Será necessário confirmar seu e-mail, aceitar os termos e condições de uso do Lets Encrypt e algumas ações para concluir a emissão.

---

### Ajustes de firewall (se necessário)
Lembre-se de liberar o firewall para permitir o acesso HTTP e HTTPS:
```
sudo ufw allow 'Nginx Full'
```

---

# Testar o funcionamento
Acesse no navegador:
```
http://seudominio.com.br
```

Se tudo estiver correto, a página do PHP será exibida.

---

# Informações adicionais
* O diretório padrão dos sites fica em /var/www/
* Cada domínio deve ter seu próprio Virtual Host.
* O PHP-FPM pode variar de versão (php8.2, php8.3, etc.).
* Sempre valide configurações com `nginx -t` antes de reiniciar.
* Para produção, recomenda-se configurar HTTPS com SSL.

---

Ficou com alguma dúvida? Nossa equipe está à disposição nos canais de atendimento para lhe auxiliar.

Precisa de um servidor para colocar sua stack LEMP em produção? Conheça os planos de [Servidor VPS Linux](https://fabweb.com.br/servidor-linux-nvme/) da Fabweb e tenha infraestrutura estável, com suporte especializado e monitoramento inclusos.