Bonjour, pour commencer à utiliser Crook connecte toi !

Déploiement d'un projet sur un VPS

Déploiement complet d'un projet Symfony


Prérequis

  • un VPS sur Debian 10
  • un Nom de domaine pointé sur le VPS

Connectez vous sur votre VPS !

Installation de Nginx

  • Mettre le système à jour :
sudo apt update
  • Installation de Nginx :
sudo apt install nginx
systemctl status nginx
  • Sortie de la console :
nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-07-03 12:52:54 UTC; 4min 23s ago
     Docs: man:nginx(8)
 Main PID: 3942 (nginx)
    Tasks: 3 (limit: 4719)
   Memory: 6.1M
   CGroup: /system.slice/nginx.service
           ├─3942 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           ├─3943 nginx: worker process
           └─3944 nginx: worker process

Installation de PHP et de ses packages

 

  • Préparation de l'installation de PHP 7.4 :
sudo apt -y install lsb-release apt-transport-https ca-certificates

sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
  • Vérifions si cela a fonctionné :

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
  • Mettre à jour le système pour pouvoir installer php 7.4 sur debian 10 :

sudo apt update
  • Passons à l'installation :

sudo apt install php7.4-{common,mysql,xml,xmlrpc,curl,gd,imagick,cli,dev,imap,mbstring,opcache,soap,zip,intl,bcmath} -y
  • Finalisation de l'installation et vérification de la version :

sudo apt-get install php7.4-fpm

php -v

sudo systemctl status php7.4-fpm

Installation de MYSQL

 

  • Téléchargement de l’installeur de MYSQL :

wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb
  • Installation de MySQL :

sudo apt install ./mysql-apt-config_0.8.13-1_all.deb

Une page sur fond bleu s'ouvre appuyer sur "entrée" pour modifier si besoin la version de MYSQL et ensuite grâce aux flèches se diriger sur "Ok" Revalidation de la page précédente.

  • Mise à jour du package de MySQL :
sudo apt update

sudo apt install mysql-server
  • Entrer un mot de passe (sécurisé) pour l’utilisateur root de votre serveur.

  • Pour vérifier si l'installation s'est bien déroulée :

sudo systemctl status mysql
  • Mise en place de la sécurité sur MySQL :

sudo mysql_secure_installation
  • MySQL va vous demander si vous voulez mettre une vérification de la sécurité des mots de passe sur les nouveaux utilisateurs.
  • Si vous répondez oui il va vous demander de quel type :

- Low - Medium - High 9. Puis de redéfinir le mot de passe de l’utilisateur root 10. Puis enfin si vous voulez enlever les users anonymes 11. Désactiver la connection root en remote 12. Supprimer les bases de données test

  • Maintenant vous pouvez vous connectez à MySQL :

sudo mysql -u root -p

Installation de Git

 

  • Mise à jour du système :

sudo apt update
  • Installation de git :

sudo apt install git
  • Vérification de l'installation :

git --version

Installation de Composer

  • Mise à jour du système :

sudo apt update
  • Installation des packages pour le téléchargement de Composer :

sudo apt install curl php-cli php-mbstring git unzip
  • Se mettre à la racine :

cd
  • Téléchargement de composer :

curl -sS https://getcomposer.org/installer -o composer-setup.php
  • Vérification du fichier téléchargé grâce ce a hash :

HASH="$(wget -q -O - https://composer.github.io/installer.sig)"

php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
  • La dernière ligne de votre terminal doit être :

Installer verified
  • Installation de composer maintenant que tout est ok :

sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
  • Vérification de l'installation :

composer

 ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.8.6 2019-06-11 15:03:05


et les différentes commandes s’affiche.

Installation de NodeJs

  • Mise à jour du système :

sudo apt update
  • Installation de NodeJs

sudo apt install nodejs
  • On vérifie la version :

nodejs --version

Installation de Yarn

  • Téléchargement de Yarn :

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -

echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
  • Installation de Yarn :

sudo apt update

sudo apt install yarn
  • Vérification de l'installation :

yarn --version

Maintenant que tout est installé passons à la configuration 

Récupérer le nom du dépôt Git

  • Allons dans le dossier :

cd /var/www
  • Supprimer le dossier html :

sudo rm -rf html/
  • Clonons notre projet :
sudo git clone en https de votre projet 
  • Vérification de la branch (si besoin) :

cd nomDuProjet/

git status 

sudo git checkout master

sudo git pull origin master

Configurer Nginx avec le ndd et la configuration Nginx X Debian

  • Aller dans les configurations nginx

cd /etc/nginx/sites-available
  • Nommons le fichier comme notre projet :

sudo nano nomdemonprojet
  • Voici un fichier de config type pour symfony :

Lien pour le fichier type : ici

Remplacer monnomdedomaine et votre nomduprojet par vos informations correspondantes

  • Création d’un lien symbolique pour le bon fonctionnement de nginx :

sudo ln -s /etc/nginx/sites-available/NomDuProjet /etc/nginx/sites-enabled/
  • Retournons dans notre projet :

cd /var/www/nomduprojet/
  • Création d’un fichier .env en local :

sudo cp .env .env.local

Composer prod

sudo composer install

php bin/console d:d:c

php bin/console d:m:m
  • Lancer composer

sudo composer install
  • Modifions les lignes qui nous intéressent :

sudo nano .env.local

APP_ENV=dev --> APP_ENV=prod

  • Optimisation de composer grâce à la commande

sudo composer install --no-dev --optimize-autoloader

Et configurer la ligne de la base de donnée et ajouter vos variables d’environnement si vous en avez mis

Donner les droits à votre fichier www/

cd /var/
sudo chown www-data: -R www/

Yarn encore prod

  • Installation des modules js :

sudo yarn install
  • Passage du build en mode prod :

sudo yarn encore prod

 

Maintenant que tout est installer et setup redémarrer nginx pour qu’il prenne en compte les modifications :

sudo systemctl restart nginx

/!\ Bravo, le site est en ligne :) ! /!\

Mais avant de te réjouir, il faut passer ton site sur HTTPS ce qui fera quand même plus professionnel.

Installons CertBot :

  • Remettons-nous à la racine du serveur :

cd
  • Rendez-vous sur :

https://certbot.eff.org/

  • Choisir le software qui est Nginx et Debian 10 et après vous suivez tout simplement la méthode par défaut

  • Suivre les étapes affichées sur votre terminal

  • Redémarrer nginx pour prendre en compte les nouvelles modifications

sudo systemctl reload nginx

Bravo votre site est maintenant sous certificat HTTPS !

Points sécurité du VPS

La connexion est maintenant sécurisé mais si vous le souhaitez et c’est conseillé il faut sécuriser le serveur des ddos ou tentative de connexion sur votre serveur Vous pouvez installer Fail2ban, iptables et changer le port de connexion de votre serveur SSH.

À propos
logo
image de profil

Rolls


avatar

Nighter

2020-10-28

Merci pour ce superbe tutoriel !

avatar

guillaumebdx

2021-01-27

Vraiment génial, merci à vous ! Ce tuto fonctionne quasiment de manière identique avec un serveur ubuntu mais + simple avec debian.

avatar

Frvaillant

2021-01-28

C'est de la bombe. Utilisé à plusieurs reprises, dont la dernière ce soir. Encore merci les gars

avatar

guillaumebdx

2021-03-26

En suivant ce tuto, à un moment php passe en version 8. Si votre projet est en 7.4 et que vous souhaitez downgrader, taper la commande : sudo update-alternatives --config php

avatar

guillaumebdx

2021-06-14

Sur deian, pour avoir la version 12 de node et que le yarn install passe :

avatar

guillaumebdx

2021-06-14

Sur deian, pour avoir la version 12 de node et que le yarn install passe : sudo su puis curl -sL https://deb.nodesource.com/setup_12.x | bash -

avatar

guillaumebdx

2021-06-17

Puis revenir en utiliser non root (taper exit) et mettez à jour nodejs : sudo apt-get install -y nodejs

avatar

JeremieZip

2021-07-29

Grand merci aux créateurs de ce tutorial ! J'ai adapté 2/3 petites choses pour apache et c'était ok !

avatar

guillaumebdx

2022-01-20

Pour l'instal de mysql j'ai eu un soucis de The following signatures couldn't be verified because the public key is not available: NO_PUBKEY J'ai du wget et install une autre version plus récente : wget http://repo.mysql.com/mysql-apt-config_0.8.22-1_all.deb puis sudo apt install ./mysql-apt-config_0.8.22-1_all.deb à la place des 2 commandes identiques

avatar

guillaumebdx

2022-01-20

Si vous souhaitez rester en 7.4, il faut plutôt taper sudo apt install curl php7.4-cli php7.4-mbstring git unzip (sinon sans le 7.4 c est cette commande qui fait passer php en 8)