« Deploiement Sites » : différence entre les versions

De Breizh-Entropy
Aller à la navigation Aller à la recherche
m (ajout lien vers page profil de Li2ne)
Aucun résumé des modifications
Ligne 2 : Ligne 2 :


<big><big><big><big>Website deploy</big></big></big></big>
<big><big><big><big>Website deploy</big></big></big></big>
(par [[User:Li2ne Li2ne]])
(par [[User:Li2ne]])





Version du 5 octobre 2016 à 15:47


Website deploy (par User:Li2ne)


Simple

Installer un serveur nginx

Avec une configuration nginx basic pointant vers le dossier de son site, tout fonctionne. Cela suffit pour des sites tels que:

Avec quelques ajouts dans la configuration du vhost, on peut aussi faire tourner des sites PHP, Python ou autres.

Https avec letsencrypt

[1] nous permet de générer des certificats ssl autocertifiés. Grâce à ça, nos sites vont pouvoir crypter leurs requêtes.
letsencrypt devra renouveler les certificats au moins tous les 3 mois (durée de validité maximum).

Un peu plus compliqué: plusieurs serveurs web à la fois (node, nginx, gunicorn ...)

Mais pourquoi donc ?!

Nous avons différents sites qui utilisent différents serveurs web. Ces différents serveurs web ne peuvent pas tous écouter les port 80/443. Certains, comme le serveur wsgi gunicon, ne sont pas fait pour. On va avoir besoin d’un reverse proxy pour dispatcher tout ça.
À noter qu’utiliser un reverse proxy est aussi un moyen de sécuriser un peu mieux son serveur.

Une bonne stack

---

  • Supervisor va lancer différents daemons (ngnix, gunicorne, node, etc) au démarrage/redémarrage du serveur. Ce programme nous permet de définir l’utilisateur du daemon et des variables d’environnement. Pratique.

---

  • Nginx va écouter le port ```ngnix_server_port``` et aura une configuration pour chaque site ne nécessitant rien de particulier.
  • Gunicorne écoutera les ports ```gunicorn_server_range_ports``` (un port par site) et fera tourner nos sites Django.
  • NodeJs écoutera les ports ```node_server_range_ports``` (un port par site) et fera tourner nos sites NodeJs
  • « Whatever serveur web » écoutera le port ```whatever_server_port``` pour faire tourner « whatever specific website »

---

  • Le reverse proxy va écouter les ports 80 et 443 et diriger les requêtes entrantes vers le bon service (Ex: www.my_node_website.net > localhost:my_node_website_daemon_port)

---

Reverse proxy

Wikipédia Proxy Inversé

Nginx

Nginx peut être utilisé en reverse proxy. Il écoutera le port 80 et redirigera les différentes requêtes vers le port approprié (qui peu être ```ngnix_server_port``` lui même s’occupant de rendre différents sites).

Haproxy

Haproxy est un load balancer : il trie les requêtes entrantes et les assigne à une (ip|host):port donnée. En cela il peut être utilisé en reverse proxy bien que ce soit surement un peu overkill.

Références pour installer / configurer tout ça.

Supervisor

Letsencrypt

Nginx simple

  • [Example de configuration] @TODO
  • [Script ansible] @TODO

Nginx en reverse proxy

  • [Example de configuration] @TODO
  • [Script ansible] @TODO

NodeJs

Haproxy