Deploiement Sites
Website deploy
(par 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:
- Un site généré par pelican
- Un site généré par nikola
- Un template bootstrap modifié à la main
- Tout autre site statique (html/css)
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
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
- Exemple de configuration @TODO
- [Script ansible] @TODO
Letsencrypt
Nginx simple
- [Example de configuration] @TODO
- [Script ansible] @TODO
Nginx en reverse proxy
- [Example de configuration] @TODO
- [Script ansible] @TODO