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 la solution idéale pour un projet PHP

\n

Développer une application PHP n'est que la moitié du travail. La seconde partie, tout aussi importante, est un déploiement correct sur le serveur. Un serveur privé virtuel (VPS) offre la flexibilité, le contrôle et les performances indisponibles avec un hébergement mutualisé. Vous obtenez un accès root, la possibilité de paramétrer finement l'environnement et une isolation complète des ressources.

\n

Dans ce guide, nous parcourrons le chemin de l'achat du serveur à l'application fonctionnelle avec PHP 8.x, Nginx, MySQL et Git. Toutes les étapes sont décrites pour le système d'exploitation Ubuntu 22.04 LTS – la distribution la plus populaire pour les serveurs web.

\n\n

1. Configuration initiale du VPS et connexion

\n\n

1.1. Choix et achat du VPS

\n

Pour une application PHP, les exigences minimales sont : 1 vCPU, 1 Go de RAM, 20 Go SSD. Nous recommandons des fournisseurs ayant une bonne réputation : DigitalOcean, Linode, Vultr ou les fournisseurs locaux Timeweb, Beget.

\n

Après l'achat, vous recevrez une adresse IP, un mot de passe root (ou une clé SSH).

\n\n

1.2. Connexion SSH et création d'un utilisateur

\n

Connectez-vous au serveur (remplacez 192.168.1.1 par votre IP) :

\n
ssh root@192.168.1.1
\n

Créez un utilisateur non privilégié pour le travail quotidien :

\n
adduser deployer\nusermod -aG sudo deployer
\n

Configurez les clés SSH pour une connexion sécurisée :

\n
mkdir -p /home/deployer/.ssh\ncp ~/.ssh/authorized_keys /home/deployer/.ssh/\nchown -R deployer:deployer /home/deployer/.ssh\nchmod 700 /home/deployer/.ssh\nchmod 600 /home/deployer/.ssh/authorized_keys
\n

Désactivez la connexion root par mot de passe, éditez /etc/ssh/sshd_config :

\n
PermitRootLogin prohibit-password\nPasswordAuthentication no
\n

Redémarrez SSH : systemctl restart sshd

\n\n

1.3. Sécurité de base du serveur

\n
    \n
  • Mettez à jour les paquets : apt update && apt upgrade -y
  • \n
  • Installez fail2ban : apt install fail2ban -y
  • \n
  • Configurez UFW (pare-feu) :
  • \n
\n
ufw allow OpenSSH\nufw allow 'Nginx Full'\nufw enable
\n\n

2. Installation et configuration de la pile LEMP (Linux, Nginx, MySQL, PHP)

\n\n

2.1. Installation de Nginx

\n
apt install nginx -y\nsystemctl enable nginx\nsystemctl start nginx
\n

Vérifiez le fonctionnement en ouvrant l'adresse IP du serveur dans un navigateur. Vous devriez voir la page d'accueil de Nginx.

\n\n

2.2. Installation de PHP 8.x et PHP-FPM

\n

Ajoutez le dépôt pour la version actuelle de PHP :

\n
apt install software-properties-common -y\nadd-apt-repository ppa:ondrej/php -y\napt update\napt install php8.2-fpm php8.2-mysql php8.2-xml php8.2-curl php8.2-mbstring php8.2-zip php8.2-gd -y
\n

Vérifiez le statut de PHP-FPM :

\n
systemctl status php8.2-fpm
\n\n

2.3. Installation de MySQL (MariaDB)

\n
apt install mariadb-server -y\nsystemctl enable mariadb\nsystemctl start mariadb
\n

Lancez le script de sécurité :

\n
mysql_secure_installation
\n

Créez une base de données et un utilisateur pour l'application :

\n
mysql -u root -p\nCREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\nCREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'strong_password';\nGRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost';\nFLUSH PRIVILEGES;\nEXIT;
\n\n

2.4. Configuration de l'hôte virtuel Nginx

\n

Créez un fichier de configuration pour votre domaine (par exemple, myapp.com) :

\n
nano /etc/nginx/sites-available/myapp
\n

Contenu du fichier :

\n
server {\n    listen 80;\n    server_name myapp.com www.myapp.com;\n    root /var/www/myapp/public;\n    index index.php index.html;\n\n    location / {\n        try_files $uri $uri/ /index.php?$query_string;\n    }\n\n    location ~ \\.php$ {\n        fastcgi_pass unix:                

Blogs

Book Recommendations