Introdução: por que VPS é a solução ideal para projetos PHP
\nDesenvolver uma aplicação PHP é apenas metade do trabalho. A segunda parte, igualmente importante, é a implantação adequada no servidor. Um Servidor Virtual Privado (VPS) oferece flexibilidade, controle e desempenho que não estão disponíveis em hospedagem compartilhada. Você obtém acesso root, a capacidade de ajustar o ambiente e isolamento total de recursos.
\nNeste guia, percorreremos o caminho desde a compra do servidor até a aplicação em funcionamento, usando PHP 8.x, Nginx, MySQL e Git como exemplo. Todas as etapas são descritas para o sistema operacional Ubuntu 22.04 LTS — a distribuição mais popular para servidores web.
\n\n1. Configuração inicial do VPS e conexão
\n\n1.1. Escolha e compra do VPS
\nPara uma aplicação PHP, os requisitos mínimos são: 1 vCPU, 1 GB de RAM, 20 GB SSD. Recomendamos provedores com boa reputação: DigitalOcean, Linode, Vultr ou nacionais como Timeweb, Beget.
\nApós a compra, você receberá um endereço IP, senha root (ou chave SSH).
\n\n1.2. Conexão via SSH e criação de usuário
\nConecte-se ao servidor (substitua 192.168.1.1 pelo seu IP):
ssh root@192.168.1.1\nCrie um usuário não privilegiado para o trabalho diário:
\nadduser deployer\nusermod -aG sudo deployer\nConfigure chaves SSH para acesso seguro:
\nmkdir -p /home/deployer/.ssh\ncp ~/.ssh/authorized_keys /home/deployer/.ssh/\nchown -R deployer:deployer /home/deployer/.ssh\nchmod 700 /home/deployer/.ssh\nchmod 600 /home/deployer/.ssh/authorized_keys\nDesabilite o login root por senha editando /etc/ssh/sshd_config:
PermitRootLogin prohibit-password\nPasswordAuthentication no\nReinicie o SSH: systemctl restart sshd
1.3. Segurança básica do servidor
\n- \n
- Atualize os pacotes:
apt update && apt upgrade -y\n - Instale o fail2ban:
apt install fail2ban -y\n - Configure o UFW (firewall): \n
ufw allow OpenSSH\nufw allow 'Nginx Full'\nufw enable\n\n2. Instalação e configuração da pilha LEMP (Linux, Nginx, MySQL, PHP)
\n\n2.1. Instalação do Nginx
\napt install nginx -y\nsystemctl enable nginx\nsystemctl start nginx\nVerifique o funcionamento abrindo o endereço IP do servidor no navegador. Você deve ver a página de boas-vindas do Nginx.
\n\n2.2. Instalação do PHP 8.x e PHP-FPM
\nAdicione o repositório para a versão atual do PHP:
\napt install software-properties-common -y\nadd-apt-repository ppa:ondrej/php -y\napt update\napt install php8.2-fpm php8.2-mysql php8.2-xml php8.2-curl php8.2-mbstring php8.2-zip php8.2-gd -y\nVerifique o status do PHP-FPM:
\nsystemctl status php8.2-fpm\n\n2.3. Instalação do MySQL (MariaDB)
\napt install mariadb-server -y\nsystemctl enable mariadb\nsystemctl start mariadb\nExecute o script de segurança:
\nmysql_secure_installation\nCrie um banco de dados e um usuário para a aplicação:
\nmysql -u root -p\nCREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\nCREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'strong_password';\nGRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost';\nFLUSH PRIVILEGES;\nEXIT;\n\n2.4. Configuração do host virtual Nginx
\nCrie um arquivo de configuração para o seu domínio (por exemplo, myapp.com):
nano /etc/nginx/sites-available/myapp\nConteúdo do arquivo:
\nserver {\n listen 80;\n server_name myapp.com www.myapp.com;\n root /var/www/myapp/public;\n index index.php index.html;\n\n location / {\n try_files $uri $uri/ /index.php?$query_string;\n }\n\n location ~ \\.php$ {\n fastcgi_pass unix: