"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Configuración de un sitio web PHP en ECith Nginx, MySQL, PHP y Git

Configuración de un sitio web PHP en ECith Nginx, MySQL, PHP y Git

Publicado el 2024-08-25
Navegar:688

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

Esta guía lo guiará a través del proceso de configuración de un sitio web PHP en una instancia de Amazon EC2 utilizando Nginx como servidor web, MySQL como base de datos, PHP para secuencias de comandos del lado del servidor, y Git para control de versiones. Cubriremos todo, desde la configuración inicial hasta la solución de problemas comunes.

Tabla de contenido

  1. Lanzar una instancia EC2
  2. Conéctese a su instancia EC2
  3. Actualizar y mejorar el sistema
  4. Instalar Nginx
  5. Instalar MySQL
  6. Instalar PHP
  7. Instalar Git
  8. Configurar Nginx
  9. Configura tu directorio de sitios web
  10. Clonar tu repositorio
  11. Establecer permisos correctos
  12. Configurar PHP
  13. Configurar SSL (opcional pero recomendado)
  14. Solución de problemas comunes
  15. Mejores prácticas y consideraciones de seguridad

1. Inicie una instancia EC2

  1. Inicie sesión en su Consola de administración de AWS.
  2. Navega a EC2 y haz clic en "Iniciar instancia".
  3. Elija una AMI de servidor Ubuntu (por ejemplo, Ubuntu Server 22.04 LTS).
  4. Seleccione un tipo de instancia (t2.micro es elegible para el nivel gratuito).
  5. Configure los detalles de la instancia, agregue almacenamiento y etiquetas según sea necesario.
  6. Configure el grupo de seguridad para permitir el tráfico SSH (puerto 22), HTTP (puerto 80) y HTTPS (puerto 443).
  7. Revisar y lanzar la instancia, seleccionando o creando un par de claves.

2. Conéctese a su instancia EC2

Usa SSH para conectarte a tu instancia:

ssh -i /path/to/your-key.pem ubuntu@your-instance-public-dns

Reemplace /path/to/your-key.pem con la ruta a su archivo de clave y your-instance-public-dns con el nombre DNS público de su instancia.

3. Actualizar y mejorar el sistema

Una vez conectado, actualiza y mejora tu sistema:

sudo apt update
sudo apt upgrade -y

4. Instale Nginx

Instalar el servidor web Nginx:

sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx

Verificar que Nginx se esté ejecutando:

sudo systemctl status nginx

5. Instale MySQL

Instalar el servidor MySQL:

sudo apt install mysql-server -y
sudo systemctl start mysql
sudo systemctl enable mysql

Asegure su instalación de MySQL:

sudo mysql_secure_installation

Sigue las indicaciones para establecer una contraseña de root y eliminar configuraciones predeterminadas inseguras.

6. Instalar PHP

Instalaremos PHP 8.1 (o la última versión estable disponible en los repositorios de 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

Verificar instalación de PHP:

php -v

7. Instalar Git

Instalar Git para control de versiones:

sudo apt install git -y

Verificar la instalación de Git:

git --version

8. Configurar Nginx

Crear una nueva configuración de bloque de servidor Nginx:

sudo nano /etc/nginx/sites-available/your_domain

Agregue la siguiente configuración (reemplace su_dominio con su dominio o dirección 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;
    }
}

Habilitar el nuevo sitio:

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Probar la configuración de Nginx:

sudo nginx -t

Si la prueba es exitosa, recarga Nginx:

sudo systemctl reload nginx

9. Configure su directorio de sitios web

Crear el directorio raíz 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. Clona tu repositorio

Si ya tienes un repositorio Git para tu sitio web, clónalo en tu raíz web:

cd /var/www/your_domain
git clone https://github.com/your-username/your-repo.git .

Reemplace https://github.com/your-username/your-repo.git con la URL de su repositorio real.

Si estás iniciando un nuevo proyecto, inicializa un nuevo repositorio de Git:

cd /var/www/your_domain
git init

11. Establezca los permisos correctos

Establece los permisos correctos para tus archivos 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 el usuario de Ubuntu administre archivos:

sudo usermod -a -G www-data ubuntu
sudo chmod g s /var/www/your_domain

Es posible que tengas que cerrar sesión y volver a iniciarla para que los cambios del grupo surtan efecto.

12. Configurar PHP

Ajusta la configuración de PHP si es necesario:

sudo nano /etc/php/8.1/fpm/php.ini

Configuraciones comunes para ajustar:

upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
memory_limit = 256M

Después de realizar cambios, reinicie PHP-FPM:

sudo systemctl restart php8.1-fpm

13. Configurar SSL (opcional pero recomendado)

Para proteger su sitio web con HTTPS, puede utilizar Let's Encrypt:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain -d www.your_domain

Sigue las indicaciones para configurar SSL.

14. Solución de problemas comunes

Errores de permiso denegado

Si encuentra errores de "Permiso denegado" en los registros de errores de Nginx:

  1. Verificar propiedad del archivo:
   ls -l /var/www/your_domain
  1. Asegúrese de que Nginx se esté ejecutando como el usuario correcto:
   ps aux | grep nginx
  1. Verifique la configuración de Nginx:
   sudo nano /etc/nginx/nginx.conf

Asegúrese de que el usuario esté configurado en www-data.

Errores de PHP

Para errores relacionados con PHP:

  1. Verifique los registros de PHP-FPM:
   sudo tail -f /var/log/php8.1-fpm.log
  1. Asegúrese de que PHP-FPM se esté ejecutando:
   sudo systemctl status php8.1-fpm
  1. Verifique que el archivo de socket PHP-FPM exista:
   ls /var/run/php/php8.1-fpm.sock

Problemas de Git

Si tienes problemas con los permisos de Git:

  1. Asegúrese de que el directorio .git sea propiedad de su usuario:
   sudo chown -R ubuntu:ubuntu /var/www/your_domain/.git
  1. Utilice sudo para operaciones de Git o cambie temporalmente de propietario:
   sudo chown -R ubuntu:ubuntu /var/www/your_domain
   git pull
   sudo chown -R www-data:www-data /var/www/your_domain

15. Mejores prácticas y consideraciones de seguridad

  1. Actualice periódicamente su sistema y software:
   sudo apt update && sudo apt upgrade -y
  1. Utilice contraseñas seguras para todos los servicios (MySQL, SSH, etc.).

  2. Configurar un firewall (por ejemplo, UFW) para restringir el tráfico entrante:

   sudo ufw allow OpenSSH
   sudo ufw allow 'Nginx Full'
   sudo ufw enable
  1. Implemente fail2ban para protegerse contra ataques de fuerza bruta:
   sudo apt install fail2ban -y
   sudo systemctl start fail2ban
   sudo systemctl enable fail2ban
  1. Haga una copia de seguridad periódica de su sitio web y de su base de datos.

  2. Supervise los registros de su servidor para detectar actividad inusual:

   sudo tail -f /var/log/nginx/access.log
   sudo tail -f /var/log/nginx/error.log
  1. Utiliza el control de versiones (Git) para todos tus cambios de código.

  2. Implemente un manejo de errores y un registro adecuados en su aplicación PHP.

  3. Utilice declaraciones preparadas u ORM para evitar ataques de inyección SQL.

  4. Mantenga actualizadas las dependencias de su aplicación y utilice un administrador de dependencias como Composer para proyectos PHP.

Al seguir esta guía, debería tener un sitio web PHP completamente funcional ejecutándose en una instancia EC2 con Nginx, MySQL y Git.
Recuerda adaptar las instrucciones a tus necesidades específicas y priorizar siempre la seguridad en tu configuración.

Declaración de liberación Este artículo se reproduce en: https://dev.to/manojspace/setting-up-a-php-website-on-ec2-with-nginx-mysql-php-and-git-3471?1 Si hay alguna infracción , comuníquese con Study_golang @ 163.com eliminar
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3