Introdução
O deploy (implantação) de uma aplicação PHP em um servidor virtual privado (VPS) é uma etapa crucial na transição do desenvolvimento local para a produção. Diferentemente da hospedagem compartilhada, a VPS oferece controle total sobre o ambiente de execução, o que é essencial para frameworks modernos (Laravel, Symfony) e projetos de alta carga.
Neste guia, abordaremos o ciclo completo de deploy de uma aplicação PHP em uma VPS com Ubuntu 22.04. Você aprenderá como configurar o servidor, instalar os componentes necessários e automatizar o processo de implantação. Todos os exemplos de código estão prontos para uso.
1. Preparação da VPS e configuração inicial
1.1. Conexão ao servidor
Após adquirir a VPS, você receberá um endereço IP, login (geralmente root) e senha. Conecte-se via SSH:
ssh root@seu_endereco_ipSe você estiver usando chaves SSH (recomendado), adicione sua chave pública ao servidor.
1.2. Atualização do sistema e criação de usuário
Atualize os pacotes e crie um usuário não privilegiado para trabalhar:
apt update && apt upgrade -yadduser deployerusermod -aG sudo deployerAgora conecte-se com o novo usuário:
ssh deployer@seu_endereco_ip1.3. Configuração do firewall
Use o UFW para proteção básica:
sudo ufw allow OpenSSHsudo ufw allow 'Nginx Full'sudo ufw enablesudo ufw status2. Instalação da pilha LEMP (Linux, Nginx, MySQL, PHP)
2.1. Instalação do Nginx
sudo apt install nginx -ysudo systemctl start nginxsudo systemctl enable nginxVerifique o funcionamento abrindo http://seu_endereco_ip no navegador. Você deve ver a página de boas-vindas do Nginx.
2.2. Instalação do PHP e PHP-FPM
Para frameworks modernos, use PHP 8.x:
sudo apt install php8.1-fpm php8.1-mysql php8.1-xml php8.1-mbstring php8.1-curl php8.1-zip php8.1-gd -yVerifique a versão e inicie o PHP-FPM:
php -vsudo systemctl start php8.1-fpmsudo systemctl enable php8.1-fpm2.3. Instalação do MySQL
sudo apt install mysql-server -ysudo mysql_secure_installationCrie um banco de dados para sua aplicação:
sudo mysql -u root -pCREATE DATABASE nome_do_seu_banco;CREATE USER 'seu_usuario'@'localhost' IDENTIFIED BY 'sua_senha';GRANT ALL PRIVILEGES ON nome_do_seu_banco.* TO 'seu_usuario'@'localhost';FLUSH PRIVILEGES;EXIT;3. Configuração do host virtual e deploy da aplicação
3.1. Criação do host virtual Nginx
Crie um arquivo de configuração para seu domínio:
sudo nano /etc/nginx/sites-available/seudominio.comInsira a seguinte configuração (adapte ao seu projeto):
server { listen 80; server_name seudominio.com www.seudominio.com; root /var/www/seudominio.com/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:/var/run/php/php8.1-fpm.sock; }
location ~ /\\.ht { deny all; }}Ative o site:
sudo ln -s /etc/nginx/sites-available/seudominio.com /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl reload nginx3.2. Deploy do código via Git
Instale o Git e clone o repositório:
sudo apt install git -ycd /var/wwwsudo git clone https://github.com/seuusuario/seu-repositorio.git seudominio.comConfigure as permissões:
sudo chown -R www-data:www-data /var/www/seudominio.comsudo chmod -R 755 /var/www/seudominio.com/storagesudo chmod -R 755 /var/www/seudominio.com/b