Toutes les étapes pour déployer Symfony sur votre serveur en utilisant Git.

Ce tutoriel part du principe que votre serveur dédié ou votre VPS est installé et configuré avec PHP, MySql, Apache...
Attention, les commandes sur le serveur sont à préfixer avec « sudo » si vous n’êtes pas administrateur. 


 

Initilisation de Git :

 

  1. [local] Initialisez Git dans votre projet local
    git init
  2. [local] Ajoutez le contenu à l’index git
    git add .
  3. [local] Faites votre commit
    git commit -m « messageducommit »

 


Création du dépot distant :

 

  1. [VPS] Connectez vous en SSH à votre VPS
    ssh user@server.com
  2. [VPS] Installez git sur votre VPS
    apt-get install git
  3. [VPS] Créez dans votre VPS dans votre répertoire home de votre utilisateur un dossier qui sert de dépôt distant à votre projet et que vous allez pouvoir ensuite utiliser pour cloner votre application
    cd ~
    cd home/nomdevotreutilisateur
    mkdir hub-nomduprojet.git
  4. [VPS] Initialisez un dépôt git vide à l’intérieur de ce dossier
    cd hub-nomduprojet.git
    git —bare init


 

Push des données sur le dépot distant : 

 

  • [local] Dans le projet en local, ajoutez le dépôt distant
    git remote add origin votreutilisateur@votreserveur.com:/home/votreutilisateur/hub-nomduprojet.git
  • Vérifiez votre branche origin
    git remote show origin
    ou alors
    git remote -v
  • [local] Faites votre premier push de la branche master local vers le dépôt distant 
    git push origin master
  • Si vous vous êtes trompés d’url pour votre dépôt distant (et que vous avez une erreur lors du push), vous pouvez modifier l’url
    git remote set-url origin votreutilisateur
    @votreserveur.com:/home/votreutilisateur/hub-nomduprojet.git
  • [VPS] Sur le VPS, depuis la racine, clonez le dépôt distant dans le dossier configuré avec Apache
    git clone home/votreutilisateur/hub-nomduprojet.git /var/www/votredossierhost
    A cette étape là, votre dossier host doit contenir votre structure Symfony.
  • [VPS] Vérifiez que le serveur est bien configuré par rapport aux attentes de Symfony (version de php etc)
    php bin/console symfony_requirements

 

Création de la base de données :

 

  • [VPS] Créez une base de données vierge (l'autre possibilités est d'importer la base de données local)
    mysql -u user -p

    CREATE DATABASE nomdelabasededonnées;
  • Pour vérifier que la base de données a bien été créée
    SHOW DATABASES;
  • Pour sortir de mysql
    exit puis appuyez sur « entrée »

 

 

Installation de composer :

 

  • [VPS] (optionnel) Mettez à jour le cache du package manager :
    apt-get update
  • [VPS] Installez Curl (pour pouvoir installer Composer), PHP CLI, et unzip (pour pouvoir extraire les packages zippés)
    En une seule ligne :
    apt install curl php-cli unzip
    En plusieurs fois (si erreur sur un des paquets) :
    apt install curl php-cli unzip
    apt install php-cli
    apt install unzip
  • [VPS] Placez vous dans la home 
    cd ~
  • [VPS] Installation de composer
    curl -sS https://getcomposer.org/installer | php
  • [VPS] Installez composer de manière globale
    mv composer.phar /usr/local/bin/composer
  • [VPS]  Rendez Composer exécutable
    chmod +x /usr/local/bin/composer


 

Téléchargement des dépendances composer :

 

  • [VPS] Dans le dossier du projet (var/www/nomdudossier), installez vos dépendances
    composer install --no-dev —optimize-autoloader
    Après le téléchargement des dépendances, les différents identifiants de base de données, mails etc vous seront demandés. Remplissez tout ceux qui sont utilisés : base de données (avec localhost en host par exemple). Notez que les identifiants mail doivent être remplis si FOSUser est installé par exemple.
  • Si vous avez une erreur liée à la classe SensioGeneratorBundle, mettez à jour les dépendances composer 
    composer update
  • [VPS]  Si vous avez une erreur liée à la mémoire, activez l'espace Swap
    /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
    /sbin/mkswap /var/swap.1
    /sbin/swapon /var/swap.1
    Puis relancez composer install

 



Mise à jour des permissions :

 

  • [VPS] Activez ACL
    apt-get install acl
  • [VPS] Utilisez setfacl pour modifier les droits
    Récupérez l’user actuel
    HTTPDUSER=$(ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1)
    Si la commande pose un soucis de copié-collé, elle est disponible ici : 
    https://symfony.com/doc/3.4/setup/file_permissions.html
  • [VPS] Placez vous dans le dossier de Symfony et définissez les permissions (la première ligne pour les futures fichiers / dossiers, la seconde pour les actuels)
    setfacl -dR -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX var
    setfacl -R -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX var

 

 

Finalisation : 

 

  • [VPS]  Mettez à jour le schéma de base de données
    (optionnel) : php bin/console doctrine:schema:validate
  • (optionnel) : php bin/console doctrine:schema:update —dump-sql
    php bin/console doctrine:schema:update —force
  • Si vous avez une erreur liée à la classe "SensioGeneratorBundle", mettez à jour les dépendances composer
    composer Update
  • [VPS] Videz les caches pour la prod
    php bin/console cache:clear --env=prod --no-debug