Introdução: do desenvolvimento local ao servidor de produção
Desenvolver uma aplicação PHP na máquina local é apenas metade do trabalho. A verdadeira maestria começa quando o código vai para o servidor e começa a atender usuários reais. A implantação avançada de PHP em VPS não é apenas copiar arquivos via FTP. É um processo complexo que envolve configuração de ambiente, segurança, automação e monitoramento.
Neste artigo, vamos abordar como configurar uma VPS para hospedagem profissional de aplicações PHP, usando ferramentas modernas e práticas de DevOps. Você aprenderá como implantar uma aplicação na stack Nginx + PHP-FPM, configurar um pipeline de CI/CD, otimizar o desempenho e implementar monitoramento.
Pressupõe-se que você tenha conhecimentos básicos de Linux, PHP e servidores web. Estamos avançando para o nível avançado.
1. Preparação da VPS e configuração do ambiente
Escolha e configuração inicial do servidor
Para implantação avançada, escolha uma VPS com pelo menos 2 GB de RAM e disco SSD. Os SOs recomendados são Ubuntu 22.04 LTS ou Debian 12. Após obter acesso via SSH, execute a configuração básica:
- Atualização de pacotes:
sudo apt update && sudo apt upgrade -y - Criação de usuário com privilégios sudo:
sudo adduser deployer && sudo usermod -aG sudo deployer - Configuração de chaves SSH (desative o login por senha)
- Instalação do fail2ban para proteção contra força bruta
- Configuração do UFW (liberar portas 22, 80, 443)
Instalação da stack LEMP (Nginx + PHP-FPM + MySQL)
Usamos o Nginx como servidor frontend e o PHP-FPM para processar PHP. Instale todos os componentes com um único comando:
sudo apt install nginx mysql-server php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip composer git -yVerifique as versões:
php -vnginx -vmysql --versionConfiguração do PHP-FPM para alta performance
Para implantação avançada, altere a configuração do PHP-FPM. Edite o arquivo /etc/php/8.3/fpm/pool.d/www.conf (a versão pode variar):
pm = dynamicpm.max_children = 50pm.start_servers = 5pm.min_spare_servers = 5pm.max_spare_servers = 35pm.max_requests = 500Configurações importantes do php.ini para produção:
memory_limit = 256Mupload_max_filesize = 64Mpost_max_size = 64Mmax_execution_time = 300date.timezone = America/Sao_PauloReinicie o PHP-FPM: sudo systemctl restart php8.3-fpm
2. Implantação da aplicação: do Git à produção
Clonagem e configuração de permissões
Crie um diretório para o projeto e clone o repositório:
sudo mkdir -p /var/www/seuprojetosudo chown -R deployer:deployer /var/www/seuprojetocd /var/www/seuprojetogit clone git@github.com:seuusuario/seuprojeto.git .Configure as permissões:
sudo chown -R www-data:www-data /var/www/seuprojeto/storagesudo chown -R www-data:www-data /var/www/seuprojeto/bootstrap/cachesudo chmod -R 775 /var/www/seuprojeto/storagesudo chmod -R 775 /var/www/seuprojeto/bootstrap/cacheConfiguração do host virtual Nginx
Crie um arquivo de configuração para o seu domínio:
sudo nano /etc/nginx/sites-available/seuprojetoExemplo de configuração avançada com cache e compressão:
server { listen 80; server_name seudominio.com www.seudominio.com; root /var/www/seuprojeto/public;
index index.php index.html;
charset utf-8;
location / { try_files $uri $uri/ /index.php?$query_string; }
location ~ \\.php$ { fastcgi_pass unix:/var/run/php/php8.3-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
location ~ /\