Démarrer et déployer un projet Symfony

Démarrer et déployer un projet Symfony

Ce sont les commandes qui ne servent qu’une fois par projet, celles pour lesquelles on google en se promettant de les retenir, mais qu’on oublie après avoir codé 5 bundles et 50 contrôleurs. Voici un petit aide mémoire pour démarrer un projet Symfony et pour le déployer sur un nouveau serveur.

logo symfony

Toutes les commandes ci-dessous sont exécutées telles qu’elles sous Ubuntu Linux, mais vous pouvez les adapter à votre distribution, voire même les utiliser sous Windows si vous avez eu le courage de télécharger les différents outils, redémarrer, configurer votre path, redémarrer…

separateur

Démarrer un projet Symfony

Créer le projet symfony

Symfony est maintenant disponible en ligne de commande, pour créer automatiquement la structure d’un nouveau projet. Si vous ne l’avez pas encore fait, commencez donc par … installer l’installeur.

sudo curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony
sudo chmod a+x /usr/local/bin/symfony
Installer l'installeur de Symfony

Maintenant que vous disposez de l’installeur Symfony il ne vous reste plus qu’à créer votre projet. Placez vous dans le répertoire qui contiendra votre projet et appelez l’installeur. Si vous souhaitez utiliser la dernière version de Symfony, il vous suffit de taper

symfony new nom_du_projet
Créer un projet Symfony via l'installeur

A ce jour, Symfony est disponible en version 3.0, mais la version LTS courante est la 2.8. Pour utiliser cette version spécifique il faudra le spécifier dans la ligne de commande :

symfony new nom_du_projet 2.8
Installer un projet Symfony 2.8

Si vous souhaitez plus d’informations sur cette étape, rendez-vous ici, malheureusement la page n’est pas encore disponible en français.

Utiliser Bower pour ajouter Bootstrap

Bower est un gestionnaire de paquets spécialisé dans le développement Web, simple d’utilisation et carrément efficace. Quel que soit votre projet, il y a des grandes chances que vous puissiez en avoir besoin, alors voici comment l’installer

Bower a besoin de git, npm et nodejs pour fonctionner, donc avant de commencer il faut commencer par installer ces outils, ce que nous allons faire en 3 lignes :

# Installer Git
sudo apt-get install git-all

# Installer Npm
sudo apt-get install npm

# Installer Node.js
sudo apt-get install nodejs-legacy
Installer les pré-requis de Bower

Vous pouvez lire cette conversation sur Stackoverflow si vous rencontrez un problème sur Ubuntu.

Il ne reste plus qu’à installer Bower :

sudo npm install -g bower
Installer Bower

Afin de forcer Bower à utiliser le répertoire web de votre projet Symfony comme dossier de téléchargement de ses paquets, il vous faut maintenant créer un fichier nommé .bowerrc à la racine de votre projet et y coller les lignes suivantes :

{
"directory": "web/assets/vendor/"
}
Fichier de configuration de Bower pour Symfony

Enfin, je vous propose de tester que tout fonctionne bien en installant Bootstrap dans votre projet :

bower install --save bootstrap
Installer Bootstrap avec Bower

Pour avoir les explications complètes sur cette section, je vous invite à lire ce chapitre du Symfony Cookbook.

Ajouter des bundles avec Composer

Composer est un gestionnaire de dépendances pour php utilisé par Symfony. C’est grâce à lui que nous allons ajouter la majorité des bundles open source à notre projet sans effort.

Comme dans les étapes précédentes nous allons commencer par installer l’outil avant de pouvoir jouer avec l’utiliser.

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
Installer composer sur Ubuntu

La documentation courte par Symfony est disponible ici, si vous souhaitez la version longue, rendez-vous sur le site de Composer, à cette adresse.

Il ne nous reste plus qu’à utiliser Composer pour installer nos bundles :

composer require symfony/dom-crawler
Installer le bundle Dom Crawler avec Composer

ou encore

composer require friendsofsymfony/user-bundle "~2.0@dev"
Installer FosUserBundle avec Composer

ou finalement

composer require doctrine/doctrine-fixtures-bundle
Installer le bundle Doctrine Fixtures avec Composer

Dans ce dernier cas il faudra déclarer votre bundle dans le kernel de votre application, en modifiant le fichier app/AppKernel de votre projet.

public function registerBundles()
{
    $bundles = array(
        // ...
        new \Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle(),
        // ...
    );
}
Modifier le fichier app/AppKernel.php pour déclarer le bundle Doctrine Fixtures

separateur

Déployer un projet Symfony en production

Maintenant que le projet est codé et testé, il est temps de le passer en production. Pour cela vous allez simplement copier/coller vos sources sur le serveur et laisser symfony faire le reste, en ayant pris soin de nettoyer vos fichiers auparavant.

php app/console cache:clear
php app/console cache:clear --env=prod --no-debug
rm app/logs/*.log
Nettoyage du cache et des logs Symfony avant mise en production

Maintenant vous pouvez envoyer vos fichiers sur le serveur et vous y connecter.

Si vous avez écrit un script sql pour créer votre base de données, vos utilisateurs… c’est le moment de le lancer.

mysql -u nom_d_utilisateur -p < script.sql
Exécuter un script sql

Plus que 4 lignes de commandes pour rendre le projet opérationnel :

# Mettre à jour le schéma de base de données avec Doctrine
php app/console doctrine:schema:update --force

# Utiliser les fixtures pour charger les données de démarrage du site
php app/console doctrine:fixtures:load

# Créer un lien symbolique vers les assets du site
php app/console assets:install web --symlink

# Nettoyer le cache de production une dernière fois
php app/console cache:clear --env=prod --no-debug
Finaliser la mise en production d'un projet Symfony

Un dernier lien pour la route : cette page du cookbook Symfony explique en détail comment effectuer un déploiement dans les règles de l’art.

separateur

Grâce à ces quelques lignes vous devriez gagner du temps pour la mise en route de vos nouveaux projets. Bien entendu il s’agit d’un point de départ que je vous invite à enregistrer, partage, compléter, personnaliser, commenter …

Si vous avez aimé cet article, vous aimerez peut-être

3 réponses

  1. I.Sylla dit :

    Il manque cache:clear pour la production mais bon article quand même

  2. Renaud M.G. dit :

    Bonne remarque merci ! Je corrige vite cet oubli

  3. Percev@l dit :

    J’ai bien suivi ton tuto et j’avais une erreur avec curl. Pour l’installer j’ai tapé les commandes de http://askubuntu.com/questions/386887/install-curl-ubuntu-12-04 :

    sudo apt-get install php5-curl
    sudo apache2ctl restart

    et ça fonctionne

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *