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.
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.
Una vez conectado, actualiza y mejora tu sistema:
sudo apt update sudo apt upgrade -y
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
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.
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
Instalar Git para control de versiones:
sudo apt install git -y
Verificar la instalación de Git:
git --version
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
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
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
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.
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
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.
Si encuentra errores de "Permiso denegado" en los registros de errores de Nginx:
ls -l /var/www/your_domain
ps aux | grep nginx
sudo nano /etc/nginx/nginx.conf
Asegúrese de que el usuario esté configurado en www-data.
Para errores relacionados con PHP:
sudo tail -f /var/log/php8.1-fpm.log
sudo systemctl status php8.1-fpm
ls /var/run/php/php8.1-fpm.sock
Si tienes problemas con los permisos de 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
Utilice contraseñas seguras para todos los servicios (MySQL, SSH, etc.).
Configurar un firewall (por ejemplo, UFW) para restringir el tráfico entrante:
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
Haga una copia de seguridad periódica de su sitio web y de su base de datos.
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
Utiliza el control de versiones (Git) para todos tus cambios de código.
Implemente un manejo de errores y un registro adecuados en su aplicación PHP.
Utilice declaraciones preparadas u ORM para evitar ataques de inyección SQL.
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.
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