PHP : la bonne pratique

Apprendre les bonnes pratiques de programmation en PHP


précédentsommairesuivant

XII. Les serveurs et le déploiement

Les applications PHP peuvent être déployées et exécutées sur les serveurs de production de diverses manières.

XII-A. Platform as a Service (PaaS)

Les PaaS fournissent l'architecture système et réseau nécessaire pour faire tourner une application PHP sur le web. Cela signifie qu'il n'y a pratiquement aucune configuration requise pour lancer des applications ou des frameworks PHP.

Les PaaS sont devenues récemment une méthode populaire pour déployer, héberger et monter en puissance (notion de « scalabilité ») des applications PHP de toutes tailles. Vous pouvez trouver une liste de fournisseurs de PaaS PHP dans la section ressources.

XII-B. Serveurs virtuels et dédiés

Si vous vous sentez à l'aise avec l'administration des systèmes ou êtes intéressé pour en connaître plus sur ce domaine, les serveurs virtuels et dédiés vous donnent un contrôle absolu sur l'environnement de production de votre application.

XII-B-1. nginx et PHP-FPM

PHP via le gestionnaire de processus intégré FastCGI (FPM en anglais) s'accorde très bien avec nginx qui est un serveur web léger et hautement performant. Il utilise moins de mémoire qu'Apache et gère mieux les requêtes faites en parallèle. Cela est spécialement important pour les serveurs virtuels manquant de mémoire.

XII-B-2. Apache et PHP

PHP et Apache ont une longue histoire commune. Apache est très largement configurable et un très grand nombre de modules sont disponibles pour étendre ses fonctionnalités. C'est un choix populaire pour les serveurs mutualisés, car il est très simple pour des frameworks PHP comme Wordpress de s'installer dessus. Malheureusement, Apache utilise plus de ressources que nginx par défaut et ne peut gérer qu'un nombre limité de clients à la fois.

Apache possède différentes configurations possibles pour faire tourner PHP. La plus commune et la plus facile est d'installer le prefork MPM avec le module mod_php5. Bien qu'il ne soit pas le plus efficace en termes de gestion de la mémoire, il est le plus simple à lancer et utiliser. C'est probablement le meilleur choix si vous ne souhaitez pas vous plonger dans les aspects trop techniques de l'administration d'un serveur. Notez que si vous utilisez mod_php5, vous DEVEZ utiliser le prefork MPM.

Alternativement, si vous voulez profiter de plus de perfomances et de stabilité avec Apache alors vous pouvez tirer avantage à utiliser le même FPM que nginx et faire tourner le worker MPM ou l'event MPM avec mod_fastcgi ou mod_fcgid. Cette configuration sera nettement meilleure en termes d'utilisation mémoire et plus rapide, mais cela demandera plus de travail pour le mettre en place.

XII-C. Hébergement mutualisé

Grâce à la popularité de PHP, il existe de nombreuses solutions d'hébergements mutualisés. Il est difficile d'ailleurs de trouver un hébergeur qui ne propose pas l'installation de PHP, mais vérifiez tout de même que ce soit la dernière version qui est installée. Les hébergements mutualisés vous permettent à vous et à d'autres développeurs de déployer des sites sur une seule machine. L'avantage est que cela est une solution économique. L'inconvénient est que vous ne savez jamais quel genre de grabuge vos « voisins » peuvent faire : ralentir le serveur ou laisser des failles de sécurité sont les principaux problèmes. Si votre budget le permet, évitez d'utiliser cette solution.

XII-D. Constuire et déployer votre application

Si vous vous retrouvez à faire des changements sur le schéma de la base de données vous-même ou que vous exécutez vos tests manuellement avant de mettre à jour vos fichiers (là aussi manuellement), vous devriez sans doute repenser votre méthodologie de développement! Avec l'ensemble des étapes manuelles que vous devez réaliser pour déployer une nouvelle version de votre application, il y a de fortes chances pour que des erreurs potentiellement fatales viennent se glisser durant l'une des étapes. Que ce soit une simple mise à jour, un processus de construction et de déploiement, voire une stratégie d'intégration continue, le moteur de production est votre ami.

Parmi les tâches que vous pourriez vouloir automatiser, vous trouverez :

  • le gestionnaire de dépendances ;
  • la compilation, la minification de vos ressources ;
  • l'exécution des tests ;
  • la création de la documentation ;
  • le « packaging » ;
  • le déploiement.

XII-D-1. Outil de construction automatique

Les outils de construction automatique (« build tools » en anglais) peuvent être souvent vus comme un ensemble de scripts gérant les tâches les plus répétitives pour le déploiement d'un logiciel. Il ne fait généralement pas partie du logiciel en lui-même, agissant ainsi depuis l'extérieur.

Il existe beaucoup d'outils open source disponibles pour vous aider à automatiser la construction de votre application, certains étant même écrits en PHP. Cela ne devrait pas vous empêcher de les utiliser, si jamais ils correspondent mieux au travail demandé. Voici quelques exemples :

Phing est le moyen le plus facile pour commencer à utiliser le déploiement automatisé avec PHP. Avec Phing, vous pouvez contrôler les processus de « packaging », de déploiement et d'exécution de tests à l'aide d'un simple fichier XML. Phing (qui est basé sur Apache Ant) fournit un riche ensemble de tâches généralement nécessaire pour installer ou mettre à jour une application web et peut être amélioré avec l'ajout de tâches personnalisées, écrit en PHP ;

Capistrano est un système pour les programmeurs de niveau intermédiaire à avancer pour exécuter des commandes de façon structurée et répétable sur une ou plusieurs machines distantes. Il est préconfiguré pour déployer des applications Ruby On Rails, cependant nombreux sont ceux à l'utiliser pour déployer avec succès des applications PHP. La bonne utilisation de Capistrano dépend de vos connaissances en Ruby et Rake.

Le post du blog de Dave Gardner sur le déploiement PHP avec Capistrano est un bon point de départ pour les développeurs qui seraient intéressés ;

Chef est plus qu'un framework de déploiement basé sur Ruby, car il peut aussi générer l'ensemble de l'environnement de votre serveur ou de votre machine virtuelle.

XII-D-2. Intégration continue

L'intégration continue est une pratique en génie logiciel où les membres d'une équipe intègrent leurs travaux fréquemment, souvent plusieurs fois par jour. Beaucoup d'équipes trouvent que cette approche permet de réduire de façon significative les problèmes d'intégration et ainsi permet un développement plus cohérent et rapide. - Martin Fowler

Il existe différents moyens pour faire de l'intégration continue en PHP. Travis CI a récemment fait un excellent travail pour faire de l'intégration continue une réalité, et ce, même pour de petits projets. Travis CI est un service hébergé d'intégration continue pour la communauté open source. Il est intégré à Github et offre un support de haut niveau pour de nombreux langages (incluant PHP).


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Licence Creative Commons
Le contenu de cet article est rédigé par Josh Lockhart et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale 3.0 non transposé.
Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright © 2017 Developpez.com.