====== Hébergement web ====== === Architecture === Sur loth, un serveur apache en frontal (port 80 et 443) servant de reverse proxy vers les instances de chaque adherent. Il s'occupe également de la partie ssl 1 adhérent (qui en fait la demande) => 1 compte utilisateur => 1 instance apache (/etc/apache2-ADHERENT) => 1 pool php (/etc/php/8.1/fpm/pool.d/ADHERENT.conf) tous les process tournent avec l'identité de l'adhérent, pour un cloisonnement optimal. Le déploiement se fait automatiquement par ansible ===== Mettre en place un nouvel hébergement ===== === Prérequis === Cloner CS_CT/ansible_hadoly.git Le nom de domaine à héberger doit être associé via un CNAME à [[documentation_technique:machines:loth|loth.hadoly.fr]] === Création du playbook === Sur la base du modèle suivant: --- # fichier webhosting.yml - hosts: loth.hadoly.fr vars: adherent_login: CHANGEME adherent_password: CHANGEME apache_server_name: CHANGEME certbot_domains: - "{{ apache_server_name }}" certbot_email: CHANGEME certbot_test: true certbot_docroot: /srv/tom/www/ certbot_services: [ apache2 ] roles: - hebergementweb - tconstans.certbot On peut ensuite lancer le playbook: admin/ansible> ansible-playbook -u thomas -K webhosting.yml Ce playbook va: - créer un compte utilisateur (todo: utiliser ldap) - créer un répertoire personnel pour cet utilisateur - créer une instance apache qui va tourner avec l'identité de cet utilisateur, sur un port dédié - créer un pool php en version 8, dédié à l'utilisateur - créer une base de donnée du nom de l'utilisateur, avec le mot de passe - configure le serveur web principal qui sert de reverse - créé et déploie un certificat letsEncrypt Des fois ça ne marche pas lors de la première exécution, il ne faut pas hésiter à relancer. === Supervision === Sur zabbix, sur la machine loth il faut: * reconfigurer le monitoring "check web sites" et rajouter un "steps" concernant le nouveau site, en s'inspirant d'un step existant. * cloner le trigger "hadoly.fr down" et changer le nom du trigger et l'expression du trigger qui doit ressembler à ça (ex pour hadoly.fr): ''last(/loth/web.test.rspcode[check web sites,alainsaintemarie.fr])<>200last(/loth/web.test.rspcode[check web sites,hadoly.fr])<>200'' === Axes d'amélioration === utiliser l'authentification ldap pour le compte unix de l'adhérent, l'accès à la base de donnée. Cela évitera d'avoir à gérer le mot de passe de l'adhérent ===== Statut ===== WIP ## Notes rapides sur l"'hébergement d'un wordpress: wp-config.php: WP_HOME et WP_SITEURL doivent pointer sur le fqdn du site en **http** ```php if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']); $_SERVER['REMOTE_ADDR'] = $list[0]; } define( 'WP_HOME', 'http://hadoly.fr' ) ; define( 'WP_SITEURL', 'http://hadoly.fr' ) ; if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') $_SERVER['HTTPS']='on'; ``` config frontal nginx doit inclure la directive: proxy_set_header X-Forwarded-Proto https;