Introduction
Le déploiement d'une application PHP sur un serveur privé virtuel (VPS) est une étape clé de la transition du développement local à la production. Contrairement à l'hébergement mutualisé, un VPS offre un contrôle total sur l'environnement d'exécution, ce qui est essentiel pour les frameworks modernes (Laravel, Symfony) et les projets à forte charge.
Dans ce guide, nous allons parcourir le cycle complet de déploiement d'une application PHP sur un VPS avec Ubuntu 22.04. Vous apprendrez à configurer le serveur, installer les composants nécessaires et automatiser le processus de déploiement. Tous les exemples de code sont prêts à être utilisés.
1. Préparation du VPS et configuration initiale
1.1. Connexion au serveur
Après avoir acheté un VPS, vous recevrez une adresse IP, un identifiant (généralement root) et un mot de passe. Connectez-vous via SSH :
ssh root@votre_adresse_ipSi vous utilisez des clés SSH (recommandé), ajoutez votre clé publique sur le serveur.
1.2. Mise à jour du système et création d'un utilisateur
Mettez à jour les paquets et créez un utilisateur non privilégié pour travailler :
apt update && apt upgrade -yadduser deployerusermod -aG sudo deployerConnectez-vous maintenant avec le nouvel utilisateur :
ssh deployer@votre_adresse_ip1.3. Configuration du pare-feu
Utilisez UFW pour une protection de base :
sudo ufw allow OpenSSHsudo ufw allow 'Nginx Full'sudo ufw enablesudo ufw status2. Installation de la pile LEMP (Linux, Nginx, MySQL, PHP)
2.1. Installation de Nginx
sudo apt install nginx -ysudo systemctl start nginxsudo systemctl enable nginxVérifiez le fonctionnement en ouvrant http://votre_adresse_ip dans un navigateur. Vous devriez voir la page d'accueil de Nginx.
2.2. Installation de PHP et PHP-FPM
Pour les frameworks modernes, utilisez PHP 8.x :
sudo apt install php8.1-fpm php8.1-mysql php8.1-xml php8.1-mbstring php8.1-curl php8.1-zip php8.1-gd -yVérifiez la version et démarrez PHP-FPM :
php -vsudo systemctl start php8.1-fpmsudo systemctl enable php8.1-fpm2.3. Installation de MySQL
sudo apt install mysql-server -ysudo mysql_secure_installationCréez une base de données pour votre application :
sudo mysql -u root -pCREATE DATABASE your_database_name;CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'your_password';GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_user'@'localhost';FLUSH PRIVILEGES;EXIT;3. Configuration de l'hôte virtuel et déploiement de l'application
3.1. Création d'un hôte virtuel Nginx
Créez un fichier de configuration pour votre domaine :
sudo nano /etc/nginx/sites-available/yourdomain.comInsérez la configuration suivante (adaptez-la à votre projet) :
server { listen 80; server_name yourdomain.com www.yourdomain.com; root /var/www/yourdomain.com/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.1-fpm.sock; }
location ~ /\\.ht { deny all; }}Activez le site :
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl reload nginx3.2. Déploiement du code via Git
Installez Git et clonez le dépôt :
sudo apt install git -ycd /var/wwwsudo git clone https://github.com/yourusername/your-repo.git yourdomain.comConfigurez les permissions :
sudo chown -R www-data:www-data /var/www/yourdomain.comsudo chmod -R 755 /var/www/yourdomain.com/storagesudo chmod -R 755 /var/www/yourdomain.com/b