Comment déployer un programme Symfony


Déployer Symfony peut être une tâche complexe et variée, selon la configuration et les besoins de votre application. Cet article n'est pas un guide étape par étape, mais plutôt une liste d'exigences et de recommandations courantes lors du déploiement.

Bases du déploiement de Symfony

Les étapes typiques qui se produisent lors du déploiement de Symfony incluent :

# 🎜🎜#
    Téléchargez votre code sur le serveur de production ;
  1. Installez les dépendances tierces (généralement via Composer, et peut être effectué avant de télécharger le programme) ;
  2. #🎜 🎜#Exécutez une migration de base de données ou une tâche similaire pour mettre à jour les structures de données "modifiées" ;
  3. Effacez (éventuellement, réchauffez) votre cache.
  4. Le processus de déploiement comprend également d'autres tâches, telles que :

Marquer une version spécifique du code dans le cadre de votre bibliothèque de versions A release;
  • Créez une zone de préparation pour créer vos paramètres mis à jour hors ligne "hors ligne" ;
  • Exécutez tous les tests disponibles pour garantir la stabilité du code et/ou du serveur Sex ;# 🎜🎜#
  • Supprimez tous les fichiers inutiles du répertoire
  • pour garder l'environnement de production propre ;
  • Effacer les systèmes de cache externes (comme web/Memcached#🎜 🎜# ou # 🎜🎜#Redis
  • ). Il existe plusieurs façons de déployer des programmes Symfony. Commencez par quelques stratégies de déploiement de base et partez de là.
  • Transfert de fichiers de base
  • La manière la plus simple de déployer un programme consiste à copier manuellement des fichiers via FTP/SCP (ou des méthodes similaires) . L’inconvénient est que, par exemple, pendant le processus de mise à niveau, vous n’avez pas de contrôle sur le système. Cette méthode nécessite également que vous effectuiez quelques étapes manuelles après le transfert de fichiers (voir
Tâches post-déploiement courantes

). Utiliser le contrôle de version

Si vous utilisez le contrôle de version (comme Git ou SVN), vous pouvez directement installer l'installation en direct) pour faites une copie de votre référentiel. Lorsque vous êtes prêt à effectuer la mise à niveau, c'est aussi simple que d'extraire la dernière mise à jour de votre système de contrôle de version. Cela facilite la mise à jour de vos fichiers

, mais vous devez quand même envisager d'effectuer des étapes supplémentaires manuellement (voir Tâches post-déploiement courantes).

Utiliser les services de la plateforme

Rarement utilisé Utilisateurs ayant des besoins connexes, veuillez vous référer au texte original du site officiel de Symfony. De plus, les plateformes cloud modernes, telles que Microsoft Azure, peuvent prendre en charge Symfony3+ en une seule étape.

Les étapes de déploiement spéciales varient considérablement selon les différents fournisseurs de services, alors trouvez le service de votre choix parmi ces articles autonomes :

  • Déploiement sur Microsoft Azure Website Cloud 🎜#
  • Déploiement sur Platform.sh
  • Utiliser des scripts de build et d'autres outils
  • Il existe plusieurs outils qui peuvent aider à atténuer les difficultés liées au déploiement. Certains d'entre eux sont presque faits sur mesure pour les besoins de Symfony :
    • Capistrano Fonctionne avec Plugin Symfony
    • Capistrano est un outil d'automatisation et de déploiement de serveur distant écrit en Ruby. Symfony plugin est un plugin qui simplifie les tâches liées à Symfony, inspiré de Capifony (il ne fonctionne qu'avec Capistrano 2)
    • sf2debpkg
    • vous aide à créer un package Debian natif pour votre projet Symfony.
    • Magallanes
    • Cet outil de déploiement « de type Capistrano » est construit en PHP et permet aux développeurs PHP d'étendre plus facilement leurs besoins.
    • Fabric
    • Cette bibliothèque de classes basée sur Python fournit une suite de base pour "exécuter des lignes de commande locales ou distantes et télécharger et télécharger des fichiers".
    • Deployer
    • Il s'agit d'un autre Capistrano réécrit à partir de PHP natif, avec certaines fonctionnalités spécifiquement fournies pour Symfony.
    • Bundles
    • Il existe certains bundles avec des capacités de déploiement supplémentaires qui peuvent être utilisés directement dans votre console Symfony.
    • Basic Script
    • Vous pouvez bien sûr utiliser la ligne de commande, Ant ou tout autre outil de build pour scripter le déploiement de votre projet.

    Tâches courantes après le déploiement

    Après avoir déployé votre véritable code source, vous devez effectuer certaines tâches courantes :

    A) Vérification des exigences

    Exécutez la commande suivante pour vérifier si le serveur Répondre aux besoins :

    1
    $  php bin/symfony_requirements

    B) Configurer le fichier app/config/parameters.yml

    Ce fichier ne doit pas être déployé, mais est géré par un outil automatique fourni par Symfony.

    C) Installer/mettre à jour les fournisseurs

    Vos fournisseurs (packages tiers) peuvent être mis à jour avant de télécharger le code source (par exemple, mettre à jour le répertoire vendor/ puis télécharger le code source ) ou La mise à jour est terminée sur le serveur. Quoi qu'il en soit, mettez simplement à jour les fournisseurs comme d'habitude :

    vendor/ 目录,然后再传源代码)或是到服务器上完成更新。不管哪种方式,只需像往常一样来更新vendors:

    1
    $  composer install --no-dev --optimize-autoloader

    通过构建一个 "class map" 类映射,--optimize-autoloader 旗标大幅改进了Composer的自动加载性能。--no-dev 旗标可确保开发环境的包不被安装到生产环境。

    如果在这一步你得到 "class not found" 错误,你可能需要在执行前述命令之前先运行 export SYMFONY_ENV=prod 以便 post-install-cmd 脚本运行在 prod

    1

    $  php bin/console cache:clear --env=prod --no-debug
    D) Vider le cache Symfony
    < div class="admonition admonition-tip">

    L'indicateur --optimize-autoloader a été grandement amélioré en créant une "class map" pour les performances de chargement automatique de Composer. L'indicateur --no-dev garantit que les packages de développement ne sont pas installés en production.

    Si à cette étape vous obtenez l'erreur "classe introuvable", vous devrez peut-être exécuter export SYMFONY_ENV=prod avant d'exécuter la commande précédente afin que le script post-install-cmd s'exécute dans Environnement prod.

    Assurez-vous de vider (et de réchauffer) votre cache Symfony.

    1
    E) Supprimer les ressources Assetic
    $  php bin/console assetic:dump --env=prod --no-debug
    ¶🎜🎜🎜Si vous utilisez Assetic, vous devez supprimer les actifs : 🎜🎜🎜🎜🎜🎜 🎜🎜rrreee🎜🎜🎜🎜rrreee🎜🎜🎜🎜🎜

    F) Autre contenu !

    • Exécuter la migration de la base de données
    • Vider le cache APC
    • En cours d'exécution assets:install (已经在 composer install en cours Géré)
    • Ajouter/Modifier une tâche CRON
    • Publier les ressources des actifs sur le CDN
    • ...
    #🎜 🎜#Cycle de vie du programme : intégration continue, assurance qualité, etc.

    Bien que cet article couvre les détails techniques du processus de déploiement, le code est complet du développement à production Le cycle de vie peut nécessiter plus d'étapes (pensez au déploiement, au QA [Quality Assurance/Quality Assurance], à l'exécution de tests, etc.)

    staging, tests, QA, intégration continue (intégration continue), base de données la migration ainsi que la rétrocompatibilité en cas de panne, sont toutes fortement recommandées. Il existe une variété d'outils simples ou complexes, dont l'un rendra le processus de déploiement pour répondre aux besoins de votre environnement plus facile (ou plus sophistiqué).

    N'oubliez pas que le processus de déploiement implique également la mise à jour des dépendances (généralement via Composer), la migration des bases de données, la suppression des caches et d'autres problèmes potentiels, tels que la publication de ressources sur un CDN (voir #🎜🎜 #Tâche commune post-déploiement

    ).