Déploiement avancé d'une application PHP sur VPS : guide étape par étape

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : du développement local au serveur de production

\n

Développer une application PHP sur une machine locale n'est que la moitié du travail. La véritable maîtrise commence lorsque le code arrive sur le serveur et commence à servir de vrais utilisateurs. Le déploiement avancé de PHP sur VPS ne se limite pas à copier des fichiers via FTP. C'est un processus complexe qui comprend la configuration de l'environnement, la sécurité, l'automatisation et la surveillance.

\n

Dans cet article, nous allons voir comment configurer un VPS pour un hébergement professionnel d'applications PHP, en utilisant des outils modernes et des pratiques DevOps. Vous apprendrez à déployer une application sur la pile Nginx + PHP-FPM, à configurer un pipeline CI/CD, à optimiser les performances et à mettre en place une surveillance.

\n

Il est supposé que vous avez des connaissances de base en Linux, PHP et serveurs web. Nous passons au niveau avancé.

\n\n

1. Préparation du VPS et configuration de l'environnement

\n

Choix et configuration initiale du serveur

\n

Pour un déploiement avancé, choisissez un VPS avec au moins 2 Go de RAM et un disque SSD. Les systèmes d'exploitation recommandés sont Ubuntu 22.04 LTS ou Debian 12. Après avoir obtenu l'accès via SSH, effectuez la configuration de base :

\n
    \n
  • Mise à jour des paquets : sudo apt update && sudo apt upgrade -y
  • \n
  • Création d'un utilisateur avec les droits sudo : sudo adduser deployer && sudo usermod -aG sudo deployer
  • \n
  • Configuration des clés SSH (désactivez la connexion par mot de passe)
  • \n
  • Installation de fail2ban pour la protection contre le brute force
  • \n
  • Configuration d'UFW (autoriser les ports 22, 80, 443)
  • \n
\n\n

Installation de la pile LEMP (Nginx + PHP-FPM + MySQL)

\n

Nous utilisons Nginx comme serveur frontal et PHP-FPM pour le traitement du PHP. Installez tous les composants avec une seule commande :

\n
sudo apt install nginx mysql-server php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip composer git -y
\n

Vérifiez les versions :

\n
php -v\nnginx -v\nmysql --version
\n\n

Configuration de PHP-FPM pour des performances élevées

\n

Pour un déploiement avancé, modifiez la configuration de PHP-FPM. Éditez le fichier /etc/php/8.3/fpm/pool.d/www.conf (la version peut varier) :

\n
pm = dynamic\npm.max_children = 50\npm.start_servers = 5\npm.min_spare_servers = 5\npm.max_spare_servers = 35\npm.max_requests = 500
\n

Paramètres importants de php.ini pour la production :

\n
memory_limit = 256M\nupload_max_filesize = 64M\npost_max_size = 64M\nmax_execution_time = 300\ndate.timezone = Europe/Paris
\n

Redémarrez PHP-FPM : sudo systemctl restart php8.3-fpm

\n\n

2. Déploiement de l'application : de Git à la production

\n

Clonage et configuration des droits

\n

Créez un répertoire pour le projet et clonez le dépôt :

\n
sudo mkdir -p /var/www/yourproject\nsudo chown -R deployer:deployer /var/www/yourproject\ncd /var/www/yourproject\ngit clone git@github.com:yourusername/yourproject.git .
\n

Configurez les droits d'accès :

\n
sudo chown -R www-data:www-data /var/www/yourproject/storage\nsudo chown -R www-data:www-data /var/www/yourproject/bootstrap/cache\nsudo chmod -R 775 /var/www/yourproject/storage\nsudo chmod -R 775 /var/www/yourproject/bootstrap/cache
\n\n

Configuration de l'hôte virtuel Nginx

\n

Créez un fichier de configuration pour votre domaine :

\n
sudo nano /etc/nginx/sites-available/yourproject
\n

Exemple de configuration avancée avec mise en cache et compression :

\n
server {\n    listen 80;\n    server_name yourdomain.com www.yourdomain.com;\n    root /var/www/yourproject/public;\n\n    index index.php index.html;\n\n    charset utf-8;\n\n    location / {\n        try_files $uri $uri/ /index.php?$query_string;\n    }\n\n    location ~ \\.php$ {\n        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;\n        fastcgi_index index.php;\n        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n        include fastcgi_params;\n    }\n\n    location ~ /\                

Blogs

Book Recommendations