Dans ma construction, une application Web personnelle se dirige vers les pieds avec Symfony 2 Série publiée sur SitePoint, j'ai couvert quelques bases en bootstrap, développement et finalisation (sur certaines techniques avancées) pour utiliser Symfony 2 pour développer une application Web. Cependant, en raison de la limitation de la longueur de la série, nous n'avons pas beaucoup couvert l'étape «finale»: déployer une application Symfony 2 à l'environnement de production.
Lorsque nous faisons du développement, nous sommes probablement dans un rôle «racine»; Mais dans un environnement de production, nous pouvons être privés de ce privilège. De plus, les paramètres peuvent être différents. Pour aggraver les choses, nous ne sommes parfois pas en mesure de modifier ces paramètres comme nous le faisons dans nos propres machines.
Ainsi, il est d'une grande importance de vérifier la «compatibilité» de notre serveur de production avant que tout développement réel ne soit effectué dans notre propre serveur. Cela évitera des situations aussi horribles telles que: une bibliothèque dont dépend Symfony est manquante, certains paramètres globaux sur lesquels l'application s'appuie est immuable, etc.
Tester la «compatibilité» de notre serveur de production devrait vraiment être quelque chose que nous faisons au tout début. Il existe également d'autres aspects à résoudre pendant le déploiement - tels que des modèles pour divers messages d'erreur, etc.
Dans les sections suivantes, nous supposerons que vous n'avez pas le contrôle total sur votre serveur de production. Si vous le faites, la plupart des problèmes de compatibilité ne s'appliquent probablement pas, car vous devriez être en mesure de les résoudre vous-même assez facilement.
Veuillez suivre les instructions de mon premier article sur Symfony 2 pour configurer un framework Symfony vide sur le serveur de production.
Ceci est également utile pour tester si le serveur a activé Curl, non seulement installé sur le serveur mais aussi comme extension PHP, en nous assurant que nous pouvons saisir des ressources externes. Dans mon cas particulier, cela est très important - Composer.org est bloqué dans mon pays et j'ai besoin d'utiliser un proxy pour récupérer et installer le cadre Symfony.
Ce framework vide peut ensuite être vérifié dans le contrôle de la version.
Symfony 2 est livré avec un fichier config.php qui réside dans le répertoire Web. Il s'agit du script pour tester la plupart des problèmes de «préparation». Pour visiter cette page, nous devons le modifier un peu:
<span><span><?php </span></span><span> </span><span><span>if (!isset($_SERVER['HTTP_HOST'])) { </span></span><span> <span>exit('This script cannot be run from the CLI. Run it from a browser.'); </span></span><span><span>} </span></span><span> </span><span><span>if (!in_array(@$_SERVER['REMOTE_ADDR'], array( </span></span><span> <span>'127.0.0.1', </span></span><span> <span>'::1', </span></span><span><span>))) { </span></span><span> <span>header('HTTP/1.0 403 Forbidden'); </span></span><span> <span>exit('This script is only accessible from localhost.'); </span></span><span><span>} </span></span><span><span>...</span></span>
Ce fichier est censé être appelé à partir d'un navigateur local uniquement. Nous devons commenter la seconde si le bloc afin que nous puissions le visiter à distance.
Mon serveur est configuré correctement et n'a aucun problème critique:
Ce fichier teste les problèmes de préparation que je résume dans le tableau ci-dessous. Le test réel est effectué dans App / SymfonyRequirements.php afin que nous puissions également jeter un œil à ce fichier.
= 5.3.3Requis mais ne doit pas être 5.3.16 Passer à la dernière version. Suggérer d'utiliser au moins PHP 5.4.8 et plus. Bibliothèques de vendeurs Installé par Composer.phar Requis Mise à jour à l'aide de Composer.phar cache, répertoire des journaux Scrutin Requis En émettant ChMOD pour accorder des autorisations. Normalement, le privilège devrait être de 755 ou 777. Fuseau horaire Quelque chose comme «Asie / Shanghai» ou votre fuseau horaire Requis Changer php.ini. json_encode, session_start, ctype_alpha, token_get_all, simplexml_import_dom Activé Requis Activer les bibliothèques PHP respectives. La plupart des serveurs PHP ont ceux activés. APC Activé / désactivé Activé si APC est utilisé Activez APC ou désactivez APC si vous utilisez un autre cache / accélérateur. xdebug Divers paramètres Requis, recommandé Modifiez les paramètres xdebug en conséquence. DomDocument, MB_STRLEN, ICONCY, UTF8_DECODE, INTL, ETC Divers modules Recommandé Activer si vous le souhaitez. Accélérateurs Divers paramètres Recommandé Installez et activez par votre demande. Balise ouverte courte, magic_quotes_gpc, registre_globals, session.auto_start Désactivé Recommandé Suggérer de suivre les suggestions. Les dernières versions PHP ont certaines d'entre elles désactivées par défaut. PDO Pilote de base de données Recommandé Veuillez l'installer et l'activer. Il est obligatoire si vous utilisez la doctrine ORM.
Un niveau de sérieux de «requis» signifie que nous devons modifier les paramètres de nos serveurs pour répondre à l'exigence. Sinon, Symfony 2 ne sera pas en cours d'exécution et ne devrait donc pas être le bon choix pour notre développement d'applications. Un article «recommandé» peut être ignoré en toute sécurité, mais je suggère que nous remplissons ces recommandations autant que possible. Dans mon cas (illustré ci-dessus), mon serveur de production n'a qu'un seul avertissement. Cela établit un terrain solide et fiable pour un développement ultérieur.
Pendant le développement, vous pouvez, au lieu de copier les fichiers sur le serveur de production, souhaiter utiliser le contrôle de version pour synchroniser les modifications locales du site distant.
Dans ce cas, un .gitignore approprié (ou équivalent dans d'autres systèmes de contrôle de version) deviendra pratique. L'extrait ci-dessous de mon fichier .gitignore est pour référence:
<span><span><?php </span></span><span> </span><span><span>if (!isset($_SERVER['HTTP_HOST'])) { </span></span><span> <span>exit('This script cannot be run from the CLI. Run it from a browser.'); </span></span><span><span>} </span></span><span> </span><span><span>if (!in_array(@$_SERVER['REMOTE_ADDR'], array( </span></span><span> <span>'127.0.0.1', </span></span><span> <span>'::1', </span></span><span><span>))) { </span></span><span> <span>header('HTTP/1.0 403 Forbidden'); </span></span><span> <span>exit('This script is only accessible from localhost.'); </span></span><span><span>} </span></span><span><span>...</span></span>
Ce n'est jamais une liste exhaustive ou ajustée. Par exemple, si vous utilisez PHPSTorm mais pas NetBeans, vous pouvez supprimer la section NetBeans et remplacer par des filtres ajustés pour phpstorm:
<span># Composer </span><span>vendor </span><span>vendor/* </span><span>!public/assets/js/vendor </span><span>!public/assets/js/vendor/* </span><span>!public/assets/css/vendor </span><span>!public/assets/css/vendor/* </span><span>composer.phar </span><span>composer.lock </span><span> </span><span># Symfony </span><span>app/cache/* </span><span>app/logs/* </span><span> </span><span># Logs </span><span>error.log </span><span>access.log </span><span> </span><span># Netbeans </span><span>nbproject </span><span>.nbproject </span><span>.nbproject/* </span><span>nbproject/* </span><span>nbproject/private/ </span><span>build/ </span><span>nbbuild/ </span><span>dist/ </span><span>nbdist/ </span><span>nbactions.xml </span><span>nb-configuration.xml</span>
ou laissez-les simplement les deux, donc vous accueillez automatiquement d'autres développeurs qui peuvent utiliser d'autres IDE. Il est recommandé d'inclure toujours les 3 premières sections (compositeur, symfony, journaux).
La première fois qu'une application Symfony s'exécute sur un serveur distant, il créera une version compilée de notre application dans le répertoire App / Cache / Prod. Lorsque nos fichiers, en particulier nos contrôleurs et itinéraires, sont mis à jour, nous devons actualiser le cache, ou la sortie peut être incorrecte et provoque souvent 500 erreurs.
Pour effacer le cache, je vais normalement SSH à mon serveur de production et faire une commande RM -RF Cache sous APP Directory. Le cache de la console: cache clair ou console: la commande d'échauffement peut ne pas être le moyen le plus propre de le faire.
Utilisez-le avec prudence et seulement lorsque vous avez absolument nécessaire!
Dans certains cas, un site fonctionnel local peut simplement planter lorsqu'il est déployé sur le serveur de production. Les raisons qui provoquent cela peuvent être complexes et non liées au processus de codage lui-même. Dans ces circonstances, nous pouvons envisager d'activer le mode de développement distant.
Pour ce faire, nous adoptons l'approche similaire pour désactiver le chèque localhost en commentant le bloc de code ci-dessous dans app_dev.php:
<span># IntelliJ - PhpStorm and PyCharm </span><span>.idea </span><span>.idea/ </span><span>.idea/* </span><span>*.iml </span><span>*.ipr </span><span>*.iws </span>
Nous pouvons ensuite visiter le domaine et les pages avec quelque chose comme: http: //rsywx_remote/app_dev.php. Lorsque quelque chose ne va pas, ce mode Dev affiche des informations de débogage plus utiles et peut nous aider beaucoup à trouver des problèmes enracinés profonds. Pour plus de sécurité pendant cette période de débogage, ajoutez un chèque qui n'autorise que les visites de votre propre IP vers le fichier ci-dessus - cela empêchera le mode de développement pour tout le monde. La plupart des problèmes seront liés à la configuration de la base de données (mauvaise base de données et / ou informations d'identification), les mauvais URI API (URI local et distant peuvent être différents), un cache obsolète, des bibliothèques manquantes utilisées localement mais non activées à distance, etc.
Lorsque les problèmes ont été résolus, n'oubliez pas de désagréger ces lignes pour restaurer le contrôle d'accès complet. Les utilisateurs réguliers ne doivent être autorisés à utiliser App.php comme point d'entrée de notre application.
Le moteur de modèle de brina par défaut de Symfony 2 fournit des pages d'erreur (404, 500, etc.). Mais la conception de ces pages ne conviendra généralement pas à notre application. Le site officiel a l'explication détaillée sur la façon de procéder. Nous pouvons développer nos propres pages d'erreur en fonction de notre propre mise en page et du thème.
Nous pouvons personnaliser les pages d'erreur et les mettre sous APP / RESSOURCES / Twigbundle / Views / Exception. Les fichiers peuvent être nommés error404.html.twig pour 404 erreurs, error403.html.twig pour 403 erreurs, etc., ou simplement error.html.twig à des fins générales.
Il est important de noter que dans Symfony 2, les pages de messages d'erreur ne prennent pas en charge l'extension du modèle de brindilles. Cela signifie que nous ne pouvons pas avoir une page d'erreur étendue à partir d'une disposition existante conçue pour d'autres pages. Nous devons concevoir les pages d'erreur à partir de zéro. C'est un peu gênant mais la peine d'être fait pour un site sérieux.
Dans cet article, nous avons couvert certains sujets liés au déploiement de Symfony: la préparation du serveur, le contrôle de la version, le mode de développement distant, la mise à jour du cache, la personnalisation des pages d'erreur, etc.
Le déploiement est généralement la dernière étape de notre développement. J'espère que cet article vous a aidé à éviter certains pitfaux courants et à rendre votre processus de déploiement plus fluide.
Veuillez remodeler cet article si vous l'avez trouvé intéressant ou utile, et laissez un commentaire ci-dessous si vous avez des commentaires, c'est très apprécié!
Symfony 2 est un cadre PHP haute performance utilisé pour développer des applications Web. Il est connu pour sa vitesse, sa flexibilité et ses composants réutilisables. Il permet aux développeurs de créer des applications robustes de manière efficace. Le cadre suit le modèle de conception MVC (modèle-View-Controller), ce qui facilite la gestion de la base de code et favorise le développement d'applications évolutives. Symfony 2 a également une communauté dynamique qui fournit un excellent support et contribue à sa vaste bibliothèque de paquets.
Installation de Symfony 2 sur votre machine locale implique quelques étapes. Tout d'abord, vous devez vous assurer que PHP a installé. Symfony 2 nécessite PHP 5.3.9 ou plus. Une fois que PHP a installé PHP, vous pouvez utiliser Composer, un outil de gestion des dépendances pour PHP, pour installer Symfony. Vous pouvez télécharger Composer à partir de son site officiel. Après avoir installé Composer, vous pouvez l'utiliser pour créer un nouveau projet Symfony en exécutant la commande 'Composer Create-Project Symfony / Framework-Standard-Edition my_project_name'.
Symfony 2 est livré avec une multitude de fonctionnalités qui en font un outil puissant pour le développement Web. Certaines de ces fonctionnalités incluent ses composants réutilisables, qui peuvent être utilisés sur plusieurs projets, sa prise en charge du modèle de conception MVC, qui favorise le code propre et maintenable, et son utilisation de la doctrine ORM pour l'abstraction de la base de données. Symfony 2 a également un composant de sécurité robuste qui fournit un système de sécurité complet pour vos applications.
Le déploiement d'une application Symfony 2 implique plusieurs étapes. Tout d'abord, vous devez vous assurer que votre serveur répond aux exigences pour l'exécution de Symfony. Cela comprend le PHP installé et configuré correctement. Une fois votre serveur configuré, vous pouvez utiliser un outil comme Git pour cloner votre application sur le serveur. Après cela, vous devez installer les dépendances de l'application à l'aide du compositeur. Enfin, vous devez configurer votre serveur Web pour pointer vers le répertoire «Web» de votre application Symfony.
Mise à niveau d'un symfony 2 L'application à une version plus récente peut être effectuée à l'aide de Composer. Tout d’abord, vous devez mettre à jour le fichier «Composer.json» dans votre projet pour spécifier la nouvelle version de Symfony que vous souhaitez utiliser. Après cela, vous pouvez exécuter la commande «Composer Update» pour mettre à jour votre application. Il est important de tester soigneusement votre application après une mise à niveau pour s'assurer que tout fonctionne comme prévu.
Les faisceaux de Symfony 2 sont similaires à Plugins dans d'autres logiciels. Ils sont un moyen d'emballer et de distribuer le code Symfony 2. Ils peuvent contenir n'importe quoi dans les bibliothèques, les modèles, les contrôleurs, la configuration - essentiellement n'importe quel code PHP qui peut être exécuté. Vous pouvez utiliser des paquets fournis par la communauté Symfony ou créer le vôtre. Pour utiliser un bundle, vous devez le télécharger, l'activer dans le fichier 'appkernel.php' et le configurer si nécessaire.
Symfony 2 fournit un moyen puissant et flexible de gérer les erreurs et les exceptions. Il est livré avec un composant «de débogage» intégré qui fournit des messages d'erreur détaillés pendant le développement. Dans un environnement de production, Symfony 2 attrape toutes les exceptions et les convertit en objets de «réponse». Vous pouvez personnaliser les pages d'erreur en créant des modèles dans le répertoire «App / Resources / Twigbundle / Views / Exception».
Symfony 2 fourni Un composant «formulaire» qui facilite la création et la gestion des formulaires. Vous pouvez créer une forme en créant une classe «formype» et en définissant les champs sous la forme. Une fois le formulaire créé, vous pouvez gérer la soumission du formulaire dans votre contrôleur. Symfony 2 fournit également un moyen de valider les données du formulaire à l'aide de contraintes de validation.
Symfony 2 fournit un composant de sécurité complet qui gère à la fois l'authentification et autorisation. Vous pouvez configurer différentes méthodes d'authentification comme la connexion du formulaire, l'authentification de base HTTP ou OAuth. Pour l'autorisation, Symfony 2 fournit un système flexible de «liste de contrôle d'accès» (ACL) qui vous permet de définir des autorisations à grain fin pour vos utilisateurs.
Il existe plusieurs façons d'optimiser les performances d'une application Symfony 2. Certains d'entre eux incluent l'utilisation de l'environnement «prod» pour la production, l'activation de l'extension APC PHP pour la mise en cache Opcode, l'optimisation de l'autoader avec compositeur et l'utilisation de la classe «httpcache» pour ajouter des en-têtes de mise en cache HTTP à vos réponses.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!