
Guide : Configurer un VPS pour déployer une application Symfony (partie 1)
Découvre mon guide complet pour configurer facilement un VPS : installation, sécurité, PHP, serveur web, SSL. Déploye sereinement ton application Symfony (même le vendredi) !
Si tes déploiements en prod ressemblent à ça, tu es au bon endroit 👇
- Je n’arrive pas à configurer le SSL (HTTPS)
- J’ai des problèmes avec mon serveur web Apache/Nginx
- Mon app est cassé dès que je vide mon cache avec
bin/console cache:clear
- J’ai des problèmes avec les droits des fichiers
- Il manque des extension PHP (You need to enable the “intl” extension)
- Ma base de données est inaccessible
- Qu’est-ce que c’est que ce foutu
www-data
?
Quand on est développeur, on se concentre souvent sur le code et on oublie un peu l’infra, même si c’est super important. On se retrouve à utiliser des solutions toutes faites comme cPanel qui peut vite coûter cher, ou des trucs “magiques” comme Docker, qui te laissent un peu paumé dès qu’un souci survient. Et puis, y’a les cloud providers, où suivre ses dépenses peut vite devenir un casse-tête.
Dans ce guide, je vais t’expliquer étape par étape comment configurer un serveur web, comment le sécuriser et le configurer pour que ton app Symfony roule en toute simplicité.
Petit disclaimer, ce guide n’a pas pour vocation de t’apprendre à monter un infra de prod ultra performante. Le but est de t’apprendre les bases de la configuration d’un serveur pour faire tourner des applications PHP.
1. Le plan de bataille

- On va commencer par la configuration d’un serveur Debian et les commandes de bases pour survivre dans un environnement Linux sans interface graphique
- On va apprendre comment sécuriser le serveur de manière très basiques
- On va apprendre les bases du système de fichiers dans un environnement Linux (plus de soucis de droit de fichiers quand tu vas vider ton cache!)
- On va installer et configurer un serveur web pour gérer les requêtes HTTP qui arrive vers notre serveur
- On va installer et configurer PHP-FPM pour fonctionner en harmonie avec notre serveur web
- On va installer et configurer un serveur de base données MySQL
2. Configuration de base de ton VPS
Pour réaliser ce petit tuto, il va nous falloir un serveur Linux. Il y a plein de distribution, mais je si tu veux suivre ce tuto dans de bonne conditions, je te conseille de faire comme moi et de choisir la distribution Debian (version 12).
Pourquoi Debian et pas Ubuntu ? Les deux distributions sont très similaires et très répandues mais j’ai l’habitude avec Debian.
Pour ce tuto, j’ai choisi le VPS KVM via Hostinger, et tu peux bénéficier d’une réduction de 20% en passant par mon lien de parrainage. C’est le plus petit VPS de la gamme, mais c’est largement suffisant !
Dans l’interface de Hostinger sélectionne la région que tu veux et la distribution Debian 12.

Choisis un mot de passe pour l’utilisateur root
et ne renseigne pas de clé SSH, on va apprendre à le faire plus tard dans ce guide!

Quand ton serveur sera prêt, tu le verras apparaître dans ton interface avec son adresse IP, son nom d’hôte, etc.

3. Première connexion à ton serveur avec SSH
Quand ton VPS est disponible, la première chose qu’on va faire c’est de s’y connecter. Pour se connecter à un serveur distant, on va utiliser le protocole SSH via ton terminal. Pour te connecter au serveur tu vas entrer la commande suivante :
$ ssh root@IP_DU_VPS
Vu que c’est la première fois que tu te connectes à ce serveur, tu vas recevoir ce type de message :

Quand tu te connectes pour la première fois, tu reçois une clé permettant d’identifier le serveur distant. Cette clé va être ajouté dans le fichier ~/.ssh/known_hosts
de ton ordinateur et va permettre de s’assurer que tu te connectes bien au même serveur distant sans te redemander de confirmation. C’est une mesure de sécurité qui permet de s’assurer que la connexion n’est pas interceptée ou modifiée.
Tu vas pouvoir entrer le mot de passe que tu as configuré plus tot chez Hostinger, et hop te voilà connecté à ton VPS !

4. Les utilisateurs système et bonne pratiques de sécurité
En se connectant, on voit que l’invite de commande est le suivant root@NOM_DU_VPS
, tout ce qui précède la @
représente le nom de l’utilisateur connecté au système. Comme sur tout les système d’exploitation moderne, il est possible de créer des profile utilisateur.
Dans les système Linux, l’utilisateur root
est particulier. C’est le super administrateur de la machine, cet utilisateur à les droits absolu sur tout ce qui tourne sur la machine. C’est n’est pas une bonne idée de travailler sur cet utilisateur et c’est même une bonne pratique de sécurité de complètement désactiver la connexion SSH pour l’utilisateur root
!
On va remédier à tout ça, et pour travailler sereinement, on va utiliser un autre utilisateur système.
Par défaut, Hostinger à configuré un autre utilisateur système avec des droits beaucoups plus restreins que root
. C’est à partir de cet utilisateur que nous allons travailler à partir de maintenant. Nous n’allons plus jamais nous connecter directement à root
!
Pour se connecter à un autre utilisateur depuis root
, nous allons utiliser la commande su
(switch user) pour nous connecter à l’utilisateur debian
.
# Entre la commande suivante pour changer d'utilisateur
$ su debian
Notre curseur est toujours positionner dans le répertoire /root
, nous allons donc utiliser la commande cd
(change directory) pour nous positionner dans le répertoire courant de l’utilisateur. Pour vérifier dans quel répertoire tu te trouves tu peux utiliser la commande pwd
(print working directory).

Dans Debian, quand on crée un nouvel utilisateur, par défaut un répertoire spécifique est créé avec son propre nom /home/NOM_UTILISATEUR
.
La première chose à faire est de modifier le mot de passe par défaut de l’utilisateur debian
, pour qu’on puisse s’y connecter via SSH.
On va utiliser la commande sudo passwd debian
pour modifier le mot de passe avec les droits administrateur.
# Entre la commande suivante pour modifier le mot de passe de l'utilisateur Debian
$ sudo passwd debian

On va maintenant pouvoir se connecter à notre serveur en utilisant l’utilisateur debian
à la place de root
.
Faisons le test :
$ ssh debian@IP_DU_VPS
5. Connexion avec clé SSH et sécurité
C’est parfait, on arrive à se connecter avec notre utilisateur debian
, mais on est obligé de taper notre mot de passe à chaque fois. On va simplifier ce process en utilisant une clé SSH.
Sur ton poste de travail, tu vas utiliser la commande ssh-keygen
pour créer une clé publique et privée. Copie le contenu du fichier .ssh/nom_de_ta_cle.pub
, connecte toi en ssh à ton utilisateur debian
, et ajoute le contenu copié dans le fichier /home/debian/.ssh/authorized_keys
avec la commande nano
.
Dans l’ordre ça donne ça 👇:
- Dans le terminal de ton ordinateur
$ ssh-keygen -t ecdsa -b 521 -f ~/.ssh/nom_de_ta_cle
- Copie le contenu du fichier
.ssh/nom_de_ta_cle.pub
- Connecte toi à ton VPS
$ ssh debian@IP_DU_VPS
- Colle le contenu du fichier sur ton VPS
$ nano /home/debian/.ssh/authorized_keys
On sauvegarde tout ça, on se déconnecte et on va maintenant utiliser la clé SSH pour se connecter sans utiliser le mot de passe :
$ ssh -i ~/.ssh/nom_de_ta_cle debian@IP_DU_VPS
Si tu as suivis toute les étapes, tu devrais être connecté sans avoir à taper ton mot de passe 🎉 !
On a presque fini cette section, il nous reste à faire un petit changement de sécurité.
Par défaut, le port utilisé par le protocole SSH est le 22
. Le web est un endroit sombre et terrifiant et évidement, des bots scanne et tente en permanence d’attaquer par brute force les ports par défaut de certains protocole. Pour limiter cet impact, on va modifier ce port !
On va modifier le fichier /etc/ssh/sshd_config
avec la commande nano
. On va décomenter la ligne port et remplacer le port 22
par 5123
(tu peux choisir le port que tu veux tant qu’il n’est pas utilisé par un autre protocole).
# /etc/ssh/sshd_config
...
#Port 22
Port 5123
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
...
#LoginGraceTime 2m
#PermitRootLogin yes
PermitRootLogin no
#StrictModes yes
...
Tant que nous sommes dans ce fichier, on va aussi en profiter pour désactiver la connexion SSH avec l’utilisateur root
.
Cherche la ligne PermitRootLogin
et modifie ça valeur à no
.
Sauvegarde tes modifications, redémare le processus ssh avec la commande :
$ sudo systemctl restart ssh
On va tester si tout fonctionne bien, on va ajouter un paramètre à la commande SSH pour lui indiquer d’utiliser un port spécifique pour se connecter :
$ ssh -i ~/.ssh/nom_de_ta_cle -p5123 debian@IP_DU_VPS
Si tu as bien suivis le guide, tu devrais être connecté avec succès !
Remarque : Pour aller plus loin, tu peux par exemple désactiver complètement la connexion avec un mot de passe et n’autorisé uniquement les clés SSH. ça offre une garantie de sécurité supplémentaire.
Dans la prochaine partie, on va installer nos premiers paquets, décortiquer les fichiers importants sur Linux et en apprendre un peu plus sur le système de fichier.
++