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 à 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:
<code> admin/ansible> ansible-playbook -u thomas -K webhosting.yml <code>
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;