Ce guide vous guidera tout au long du processus de configuration d'un site Web PHP sur une instance Amazon EC2 en utilisant Nginx comme serveur Web, MySQL comme base de données, PHP pour les scripts côté serveur, et Git pour le contrôle de version. Nous couvrirons tout, de la configuration initiale au dépannage des problèmes courants.
Utilisez SSH pour vous connecter à votre instance :
ssh -i /path/to/your-key.pem ubuntu@your-instance-public-dns
Remplacez /path/to/your-key.pem par le chemin d'accès à votre fichier de clé et your-instance-public-dns par le nom DNS public de votre instance.
Une fois connecté, mettez à jour et mettez à niveau votre système :
sudo apt update sudo apt upgrade -y
Installer le serveur Web Nginx :
sudo apt install nginx -y sudo systemctl start nginx sudo systemctl enable nginx
Vérifiez que Nginx est en cours d'exécution :
sudo systemctl status nginx
Installer le serveur MySQL :
sudo apt install mysql-server -y sudo systemctl start mysql sudo systemctl enable mysql
Sécurisez votre installation MySQL :
sudo mysql_secure_installation
Suivez les invites pour définir un mot de passe root et supprimer les paramètres par défaut non sécurisés.
Nous installerons PHP 8.1 (ou la dernière version stable disponible dans les dépôts 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
Vérifiez l'installation de PHP :
php -v
Installez Git pour le contrôle de version :
sudo apt install git -y
Vérifiez l'installation de Git :
git --version
Créez une nouvelle configuration de bloc de serveur Nginx :
sudo nano /etc/nginx/sites-available/your_domain
Ajoutez la configuration suivante (remplacez votre_domaine par votre domaine ou adresse IP actuel) :
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; } }
Activer le nouveau site :
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
Tester la configuration de Nginx :
sudo nginx -t
Si le test est réussi, rechargez Nginx :
sudo systemctl reload nginx
Créez le répertoire racine 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 vous disposez d'un référentiel Git existant pour votre site Web, clonez-le dans votre racine Web :
cd /var/www/your_domain git clone https://github.com/your-username/your-repo.git .
Remplacez https://github.com/your-username/your-repo.git par l'URL réelle de votre référentiel.
Si vous démarrez un nouveau projet, initialisez un nouveau référentiel Git :
cd /var/www/your_domain git init
Définissez les autorisations appropriées pour vos fichiers 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 {} \;
Pour permettre à l'utilisateur Ubuntu de gérer les fichiers :
sudo usermod -a -G www-data ubuntu sudo chmod g s /var/www/your_domain
Vous devrez peut-être vous déconnecter, puis vous reconnecter pour que les modifications du groupe prennent effet.
Ajustez les paramètres PHP si nécessaire :
sudo nano /etc/php/8.1/fpm/php.ini
Paramètres communs à ajuster :
upload_max_filesize = 64M post_max_size = 64M max_execution_time = 300 memory_limit = 256M
Après avoir apporté les modifications, redémarrez PHP-FPM :
sudo systemctl restart php8.1-fpm
Pour sécuriser votre site Web avec HTTPS, vous pouvez utiliser Let's Encrypt :
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d your_domain -d www.your_domain
Suivez les instructions pour configurer SSL.
Si vous rencontrez des erreurs « Autorisation refusée » dans les journaux d'erreurs Nginx :
ls -l /var/www/your_domain
ps aux | grep nginx
sudo nano /etc/nginx/nginx.conf
Assurez-vous que l'utilisateur est défini sur www-data.
Pour les erreurs liées à 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 vous rencontrez des problèmes d'autorisation 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
Utilisez des mots de passe forts pour tous les services (MySQL, SSH, etc.).
Configurez un pare-feu (par exemple, UFW) pour restreindre le trafic entrant :
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
Sauvegardez régulièrement votre site Web et votre base de données.
Surveillez les journaux de votre serveur pour détecter toute activité inhabituelle :
sudo tail -f /var/log/nginx/access.log sudo tail -f /var/log/nginx/error.log
Utilisez le contrôle de version (Git) pour toutes vos modifications de code.
Implémentez la gestion des erreurs et la journalisation appropriées dans votre application PHP.
Utilisez des instructions préparées ou ORM pour empêcher les attaques par injection SQL.
Gardez les dépendances de vos applications à jour et utilisez un gestionnaire de dépendances comme Composer pour les projets PHP.
En suivant ce guide, vous devriez disposer d'un site Web PHP entièrement fonctionnel fonctionnant sur une instance EC2 avec Nginx, MySQL et Git.
N'oubliez pas d'adapter les instructions à vos besoins spécifiques et de toujours donner la priorité à la sécurité dans votre configuration.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3