Commandes de bases
Voici les commandes de base afin de déployer votre APP Symfony sur Heroku :
Si tout se passe bien, l’app sera fonctionnelle et affichée dans votre navigateur.
Les probabilités d’erreurs sont tout de même élevées. Débutons par configurer notre log convenablement et ensuite, nous verrons quelques combinaisons de problème et solutions possibles.
Configuration des LOGS
Afin d’avoir accès au LOG de votre application en temps réel, directement dans votre terminal, quelques modification doivent être apportés à votre fichier config_prod.yml.
Une fois la modification poussée sur Heroku,
Vous pouvez lancer la commande suivante qui vous permettra de voir les logs défilés dans votre terminal :
Vous pourrez ainsi voir les erreurs directement dans votre terminal :
Problèmes rencontrés
Type de projet mal détecté
Avertissement
Solution
Définir le type de projet avec la command buildpacks:set :
Erreur lors de la configuration de votre application Heroku
Fatal error: Class not found
Solution
Lorsqu’une dépendance n’est pas installée correctement suite à la commande composer install (lancée automatiquement par Heroku). Vous aurez l’erreur Class not found. Prenez le temps de vérifier le bundle problématique. Vérifier que le bundle apparaît bien dans votre fichier composer.json et composer.lock. Vérifier aussi les dépendances chargées dans votre fichier AppKernel.php.
Autre piste de solution
If you get a « class not found » error during this step, you may need to run export SYMFONY_ENV=prod
before running this command so that the post-install-cmd
scripts run in the prod
environment.
Call to undefined function mb_convert_case
Problème
L’extension mbstring n’est pas chargée.
Solution
Dans le cas de l’erreur précédente, Symfony ne trouve pas l’extension mbstring (support utf8). La solution est simple. Ajouter la ligne « ext-mbstring »: « * » dans la section require de votre fichier composer.json :
Finalement, pousser le code sur Heroku :
–no-dev –optimize-autoloader
Il est conseillé de lancer composer avec les options –no-dev –optimize-autoloader :
- The
--optimize-autoloader
flag improves Composer’s autoloader performance significantly by building a « class map ». - The
--no-dev
flag ensures that development packages are not installed in the production environment.
Application Symfony déployée avec succès
Lorsque tout fonctionne bien, on vous affichera un beau message de succès :
Configuration de la base de données Postgres
Installer le add-on Postgres
Voici les étapes afin de créer une nouvelle base de données gratuite Postgres.
Installer le add-on Postgres avec l’interface web ou par la ligne de commande :
À partir du Web :
- Heroku Postgres
- https://elements.heroku.com/addons/heroku-postgresql
À partir du terminal :
Modifier les configurations de votre app Symfony
Une fois le add-on Postgres installé, on vous fournira toutes les informations afin de vous connecter à la nouvelle base de données. Ajouter ces informations de connexion dans votre fichier parameters.yml de votre application Symfony :
parameters:
Utiliser les variables d’environnement
Par contre, si vous désirez définir des variables d’environnement afin de vous connecter à la base de données (solution recommandée), vous devrez utiliser config:set afin de définir des variables d’environnement qui seront utilisée dans un fichier parameters.php
Dans votre terminal :
- Contenu du fichier parameters.php
-
Initialiser la base de données
Finalement, il faut créer le shéma de la base de données et y insérer vos fixtures. Il est possible d’exécuter la console Symfony à l’aide du heroku toolbelt et de la commande heroku run :
Connexion à Postgres avec pgAdmin3
Vous désirez vous connecter à la base de données et l’administrer à distance, vous pouvez installer le logiciel gratuit pgAdmin III :
Sur Ubuntu, on lance :
no commands defined in the « doctrine:fixtures » namespace
Puisque Symfony est configuré avec un environnement de production, les dépendances de développement ne seront pas installés. Si vous avez l’erreur suivante, une solution est de déplacer la dépendance DoctrineFixturesBundle vers le tableau $bundles = array() de votre fichier AppKernel.php
There are no commands defined in the « doctrine:fixtures » namespace.
Paramètre le lancement de votre serveur Web avec un procfile
Il est possible de configurer le lancement de votre serveur web grâce à un procfile. Voici quelques exemples :
procfile pour un projet PHP :
procfile pour un projet Node :
https://devcenter.heroku.com/articles/procfile
Références
- http://symfony.com/doc/current/cookbook/deployment/heroku.html
- https://devcenter.heroku.com/articles/getting-started-with-symfony
Laisser un commentaire
Participez-vous à la discussion?N'hésitez pas à contribuer!