"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Configurando um site PHP em ECith Nginx, MySQL, PHP e Git

Configurando um site PHP em ECith Nginx, MySQL, PHP e Git

Publicado em 2024-08-25
Navegar:779

Setting Up a PHP Website on ECith Nginx, MySQL, PHP, and Git

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.

Índice

  1. Iniciar uma instância EC2
  2. Conecte-se à sua instância EC2
  3. Atualizar e atualizar o sistema
  4. Instale o Nginx
  5. Instale o MySQL
  6. Instalar PHP
  7. Instalar o Git
  8. Configurar o Nginx
  9. Configure o diretório do seu site
  10. Clone seu repositório
  11. Definir permissões corretas
  12. Configurar PHP
  13. Configurar SSL (opcional, mas recomendado)
  14. Solução de problemas comuns
  15. Práticas recomendadas e considerações de segurança

1. Inicie uma instância EC2

  1. Faça login no Console de gerenciamento da AWS.
  2. Navegue até EC2 e clique em "Iniciar instância".
  3. Escolha uma AMI de servidor Ubuntu (por exemplo, Ubuntu Server 22.04 LTS).
  4. Selecione um tipo de instância (t2.micro é elegível para nível gratuito).
  5. Configure detalhes da instância, adicione armazenamento e tags conforme necessário.
  6. Configure o grupo de segurança para permitir tráfego SSH (porta 22), HTTP (porta 80) e HTTPS (porta 443).
  7. Revise e execute a instância, selecionando ou criando um par de chaves.

2. Conecte-se à sua instância EC2

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.

3. Atualize e atualize o sistema

Uma vez conectado, atualize e atualize seu sistema:

sudo apt update
sudo apt upgrade -y

4. Instale o Nginx

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

5. Instale MySQL

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.

6. Instale PHP

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

7. Instale o Git

Instale o Git para controle de versão:

sudo apt install git -y

Verifique a instalação do Git:

git --version

8. Configurar Nginx

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

9. Configure o diretório do seu site

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

10. Clone seu repositório

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

11. Defina as permissões corretas

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.

12. Configurar PHP

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

13. Configure SSL (opcional, mas recomendado)

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.

14. Solução de problemas comuns

Erros de permissão negada

Se você encontrar erros de "Permissão negada" nos logs de erros do Nginx:

  1. Verifique a propriedade do arquivo:
   ls -l /var/www/your_domain
  1. Certifique-se de que o Nginx esteja sendo executado como o usuário correto:
   ps aux | grep nginx
  1. Verifique a configuração do Nginx:
   sudo nano /etc/nginx/nginx.conf

Certifique-se de que o usuário esteja configurado para www-data.

Erros PHP

Para erros relacionados ao PHP:

  1. Verifique os registros do PHP-FPM:
   sudo tail -f /var/log/php8.1-fpm.log
  1. Certifique-se de que o PHP-FPM esteja em execução:
   sudo systemctl status php8.1-fpm
  1. Verifique se o arquivo de soquete PHP-FPM existe:
   ls /var/run/php/php8.1-fpm.sock

Problemas do Git

Se você encontrar problemas de permissão do Git:

  1. Certifique-se de que o diretório .git pertence ao seu usuário:
   sudo chown -R ubuntu:ubuntu /var/www/your_domain/.git
  1. Use sudo para operações Git ou altere temporariamente a propriedade:
   sudo chown -R ubuntu:ubuntu /var/www/your_domain
   git pull
   sudo chown -R www-data:www-data /var/www/your_domain

15. Melhores práticas e considerações de segurança

  1. Atualize regularmente seu sistema e software:
   sudo apt update && sudo apt upgrade -y
  1. Use senhas fortes para todos os serviços (MySQL, SSH, etc.).

  2. 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
  1. Implemente fail2ban para proteção contra ataques de força bruta:
   sudo apt install fail2ban -y
   sudo systemctl start fail2ban
   sudo systemctl enable fail2ban
  1. Faça backup regularmente do seu site e banco de dados.

  2. 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
  1. Use o controle de versão (Git) para todas as alterações de código.

  2. Implemente o tratamento e registro de erros adequados em seu aplicativo PHP.

  3. Use instruções preparadas ou ORM para evitar ataques de injeção de SQL.

  4. 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.

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/manojspace/setting-up-a-php-website-on-ec2-with-nginx-mysql-php-and-git-3471?1 Se houver alguma violação , entre em contato com study_golang @163.comdelete
Tutorial mais recente Mais>

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