Skip to content

Analyse service WEB

vbrichant edited this page May 24, 2022 · 16 revisions

Besoins techniques

Traduction du CdC en besoins techniques.

Le client a besoin de 2 sites webs publics qui seront tous 2 hébergés en virtual hosting sur le même serveur web:

  • Un site de vitrine statique (HTML et CSS)
  • Un site b2b dynamique de vente en ligne lié à une base de données (PHP et MYSQL)

Le code source des 2 sites étant déjà préexistant, le client nous demande de concevoir le prototype avec des sites webs simples. Pour le site dynamique, le client aura besoin d'une base de données qui ne pourra être accessible que depuis l'intérieur de l'entreprise.

Identification et comparaison des solutions possibles

Descriptif des solutions possibles

  • Apache : Apache est un logiciel open source disponible depuis 1995. Il est l'un des serveurs webs le plus utilisé et peut prendre en charge de nombreux modules, ce qui permet d'y ajouter des fonctionnalités supplémentaires.
  • Nginx : Nginx est un logiciel libre de serveur web et peut être utilisé comme proxy inversé. Nginx a été développé en 2002 par un société Russe et est actuellement le 2eme serveur web le plus utilisé dans le monde
  • Node.js : Node.js est un serveur web libre utilisant javascript qui a été créé en 2009. Il est utilisé par de nombreuses sociétés telles que Netflix ou bien encore PayPal
  • Lighttpd : Lighttpd est un serveur web sécurisé, rapide et flexible écrit en C. Il est plus rapide que la majorité des serveurs webs grâce a son utilisation intelligente du CPU ainsi que sa faible utilisation de mémoire. Selon Netcraft, il a dépassé Nginx et est devenu le 4eme serveur web utilisé dans le monde en 2008.

Comparatif

Solution Gratuit HTTPS Hébergement virtuel IPV6 FastCGI full stack intégrant MYSQL et PHP Reverse Proxy Intégré
Apache Oui Oui Oui Oui Oui Oui Non
Nginx Oui Oui Oui Oui Oui Oui Oui
Node.js Oui Oui Oui Oui Oui Non Non
Lighttpd Oui Oui Oui Oui Oui Oui Non

Sources utilisées : Wikipédia

Choix, descriptif précis et justification de la solution

Ces 4 solutions sont parmi les solutions les plus utilisées dans le monde pour faire un serveur web, mais NodeJs n'est pas intégré dans une solution Full Stack comprenant PHP et MYSQL, bien qu'il soit possible de l'utiliser pour héberger des sites en PHP. Les trois autres solutions nous permettant une configuration plus simple avec PHP et MYSQL, nous avons donc dans un premier temps décidé d'éliminer Nodes.JS de notre choix de serveur web.

Ensuite, concernant Lighttpd, la configuration de PHP est plus complexe car lighttpd ne possède pas de module prévu à cet effet(1). De plus il est moins stable que Apache et Nginx et comporte plus de bugs(2). Nous avons donc décidé de ne pas utiliser Lighttpd.

Enfin, ayant déjà travaillé avec Apache dans le passé, nous avons décidé de choisir cette solution afin de nous faciliter la configuration du server web.

Apache est puissant et très polyvalent dans sa configuration et la documentation le concernant est très facilement trouvable sur internet car il possède une grande communauté, ce qui nous facilitera la tâche(3). De plus, les configurations d'apache n'ayant pas changé depuis longtemps, nous pouvons utiliser des documentations datant de plus de 10 ans sans qu'elles ne soient obsolètes.(4)

Cependant, Nginx offre de nombreux avantages comme par exemple sa rapidité, ou bien le nombre élevé de connexions qu'il permet. De plus, Nginx peut s'ajouter à une configuration d'Apache ( l'inverse n'est pas réalisable ) pour avoir les avantages des 2 logiciels. Nous comptons donc, si nous en avons le temps, intégrer Nginx à notre serveur Apache pour fournir au client une solution optimale.

Eléments de configuration

Pour installer la solution, voici les étapes qu'il faudra suivre :

  • Créer la DB
  • Créer le code source des 2 sites
  • Configurer le serveur Apache et l'hébergement virtuel
  • Assurer la visibilité des 2 sites sur le web
  • Assurer la connectivité entre le site B2B et la DB
  • Assurer les interactions avec le contenu de la DB depuis le site B2B

Sources utilisées :

Clone this wiki locally