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_serveur1.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 deployerConfigurons 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 4096Copiez la clé publique sur le serveur :
ssh-copy-id deployer@votre_adresse_IP_serveurAprè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 -yVérifions le statut :
sudo systemctl status nginx2.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 -y2.3 Installation de MySQL (MariaDB)
sudo apt install mariadb-server mariadb-client -ysudo mysql_secure_installationCré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/myappInsé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