Este guia orientará você no processo de configuração de um site PHP em uma instância do Amazon EC2 usando Nginx como servidor web, MySQL como banco de dados, PHP para scripts do lado do servidor, e Git para controle de versão. Abordaremos tudo, desde a configuração inicial até a solução de problemas comuns.
Use SSH para se conectar à sua instância:
ssh -i /path/to/your-key.pem ubuntu@your-instance-public-dns
Substitua /path/to/your-key.pem pelo caminho para seu arquivo de chave e your-instance-public-dns pelo nome DNS público da sua instância.
Uma vez conectado, atualize e atualize seu sistema:
sudo apt update sudo apt upgrade -y
Instale o servidor web Nginx:
sudo apt install nginx -y sudo systemctl start nginx sudo systemctl enable nginx
Verifique se o Nginx está em execução:
sudo systemctl status nginx
Instale o servidor MySQL:
sudo apt install mysql-server -y sudo systemctl start mysql sudo systemctl enable mysql
Proteja sua instalação do MySQL:
sudo mysql_secure_installation
Siga as instruções para definir uma senha de root e remover configurações padrão inseguras.
Instalaremos o PHP 8.1 (ou a última versão estável disponível nos repositórios do Ubuntu):
sudo apt install php8.1-fpm php8.1-mysql php8.1-common php8.1-cli php8.1-curl php8.1-mbstring php8.1-xml php8.1-zip -y
Verifique a instalação do PHP:
php -v
Instale o Git para controle de versão:
sudo apt install git -y
Verifique a instalação do Git:
git --version
Crie uma nova configuração de bloco de servidor Nginx:
sudo nano /etc/nginx/sites-available/your_domain
Adicione a seguinte configuração (substitua seu_domínio pelo seu domínio ou endereço IP real):
server { listen 80; server_name your_domain www.your_domain; root /var/www/your_domain; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; fastcgi_index index.php; include fastcgi_params; } location ~ /\.ht { deny all; } }
Ative o novo site:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
Teste a configuração do Nginx:
sudo nginx -t
Se o teste for bem-sucedido, recarregue o Nginx:
sudo systemctl reload nginx
Crie o diretório raiz da web:
sudo mkdir -p /var/www/your_domain sudo chown -R $USER:$USER /var/www/your_domain sudo chmod -R 755 /var/www/your_domain
Se você já possui um repositório Git para o seu site, clone-o na raiz da web:
cd /var/www/your_domain git clone https://github.com/your-username/your-repo.git .
Substitua https://github.com/your-username/your-repo.git pelo URL real do seu repositório.
Se você estiver iniciando um novo projeto, inicialize um novo repositório Git:
cd /var/www/your_domain git init
Defina as permissões corretas para seus arquivos da web:
sudo chown -R www-data:www-data /var/www/your_domain sudo find /var/www/your_domain -type d -exec chmod 755 {} \; sudo find /var/www/your_domain -type f -exec chmod 644 {} \;
Para permitir que o usuário Ubuntu gerencie arquivos:
sudo usermod -a -G www-data ubuntu sudo chmod g s /var/www/your_domain
Talvez seja necessário sair e fazer login novamente para que as alterações do grupo tenham efeito.
Ajuste as configurações do PHP se necessário:
sudo nano /etc/php/8.1/fpm/php.ini
Configurações comuns para ajustar:
upload_max_filesize = 64M post_max_size = 64M max_execution_time = 300 memory_limit = 256M
Depois de fazer alterações, reinicie o PHP-FPM:
sudo systemctl restart php8.1-fpm
Para proteger seu site com HTTPS, você pode usar Let's Encrypt:
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d your_domain -d www.your_domain
Siga as instruções para configurar o SSL.
Se você encontrar erros de "Permissão negada" nos logs de erros do Nginx:
ls -l /var/www/your_domain
ps aux | grep nginx
sudo nano /etc/nginx/nginx.conf
Certifique-se de que o usuário esteja configurado para www-data.
Para erros relacionados ao PHP:
sudo tail -f /var/log/php8.1-fpm.log
sudo systemctl status php8.1-fpm
ls /var/run/php/php8.1-fpm.sock
Se você encontrar problemas de permissão do Git:
sudo chown -R ubuntu:ubuntu /var/www/your_domain/.git
sudo chown -R ubuntu:ubuntu /var/www/your_domain git pull sudo chown -R www-data:www-data /var/www/your_domain
sudo apt update && sudo apt upgrade -y
Use senhas fortes para todos os serviços (MySQL, SSH, etc.).
Configure um firewall (por exemplo, UFW) para restringir o tráfego de entrada:
sudo ufw allow OpenSSH sudo ufw allow 'Nginx Full' sudo ufw enable
sudo apt install fail2ban -y sudo systemctl start fail2ban sudo systemctl enable fail2ban
Faça backup regularmente do seu site e banco de dados.
Monitore os registros do servidor em busca de atividades incomuns:
sudo tail -f /var/log/nginx/access.log sudo tail -f /var/log/nginx/error.log
Use o controle de versão (Git) para todas as alterações de código.
Implemente o tratamento e registro de erros adequados em seu aplicativo PHP.
Use instruções preparadas ou ORM para evitar ataques de injeção de SQL.
Mantenha as dependências do seu aplicativo atualizadas e use um gerenciador de dependências como o Composer para projetos PHP.
Ao seguir este guia, você deverá ter um site PHP totalmente funcional rodando em uma instância EC2 com Nginx, MySQL e Git.
Lembre-se de adaptar as instruções às suas necessidades específicas e sempre priorizar a segurança em sua configuração.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3