Déploiement d'une application PHP sur VPS : guide pas à pas de A à Z

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 : Pourquoi le VPS est-il le meilleur choix pour un projet PHP ?

Développer une application web en PHP n'est que la moitié du travail. La seconde partie, tout aussi importante, est un déploiement compétent. Si vous avez dépassé l'hébergement mutualisé avec ses limitations et que vous souhaitez un contrôle total sur l'environnement, un serveur privé virtuel (VPS) est la solution idéale. Dans cet article, nous parcourrons le chemin allant de l'achat du serveur au lancement de votre application PHP en mode production. Vous apprendrez à configurer la combinaison Nginx + PHP-FPM + MySQL, à configurer le domaine, le certificat SSL et à automatiser les mises à jour du code.



Étape 1 : Configuration initiale du VPS et connexion

1.1 Choix du système d'exploitation et première connexion

Nous recommandons d'utiliser Ubuntu 22.04 LTS — stable et avec un support à long terme. Après l'achat du VPS, vous recevrez une adresse IP et un mot de passe root.

Connexion via SSH :

ssh root@votre_adresse_IP_serveur


1.2 Création d'un utilisateur et configuration de la sécurité

Travailler en tant que root est une mauvaise pratique. Créons un utilisateur séparé avec les droits sudo :

adduser deployerusermod -aG sudo deployer

Configurons maintenant les clés SSH pour une connexion pratique et sécurisée. Sur votre machine locale, générez une clé (si vous n'en avez pas) :

ssh-keygen -t rsa -b 4096

Copiez la clé publique sur le serveur :

ssh-copy-id deployer@votre_adresse_IP_serveur

Après avoir vérifié la connexion par clé, désactivez la connexion par mot de passe et l'accès root :

sudo nano /etc/ssh/sshd_config# Modifiez :PermitRootLogin noPasswordAuthentication no# Redémarrez SSH :sudo systemctl restart sshd


Étape 2 : Installation et configuration de la pile LEMP (Nginx, PHP, MySQL)

2.1 Installation de Nginx

Mettons à jour les paquets et installons le serveur web :

sudo apt update && sudo apt upgrade -ysudo apt install nginx -y

Vérifions le statut :

sudo systemctl status nginx


2.2 Installation de PHP 8.x et des extensions nécessaires

Ajoutons le dépôt avec la version actuelle de PHP :

sudo apt install software-properties-commonsudo add-apt-repository ppa:ondrej/phpsudo apt updatesudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-xml php8.2-mbstring php8.2-curl php8.2-zip -y


2.3 Installation de MySQL (MariaDB)

sudo apt install mariadb-server mariadb-client -ysudo mysql_secure_installation

Créons une base de données et un utilisateur pour votre application :

sudo mysql -u rootCREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'strong_password';GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost';FLUSH PRIVILEGES;EXIT;


Étape 3 : Configuration de l'hôte virtuel (Server Block) dans Nginx

Créons un fichier de configuration pour notre domaine (par exemple, myapp.ru) :

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

Insérez le modèle suivant pour PHP-FPM :

server {    listen 80;    server_name myapp.ru www.myapp.ru;    root /var/www/myapp/public;    index index.php index.html;

location / { try_files $uri $uri/ /index.php?$query_string; }

location ~ \\.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; }

location ~ /\\.ht { deny all; }}

Activez le site et rechargez Nginx :

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/sudo nginx -t  # Vérification de la configurationsudo systemctl reload nginx


Étape 4 : Déploiement du code de l'application (Git + Composer)

4.1 Clonage du dépôt

Créons un répertoire pour le projet et clonons le code (par exemple, depuis GitHub) :

sudo mkdir -p /var/www/myappsudo chown -R deployer:depl                

Blogs

Book Recommendations