Table des matières

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:

  1. créer un compte utilisateur (todo: utiliser ldap)
  2. créer un répertoire personnel pour cet utilisateur
  3. créer une instance apache qui va tourner avec l'identité de cet utilisateur, sur un port dédié
  4. créer un pool php en version 8, dédié à l'utilisateur
  5. créer une base de donnée du nom de l'utilisateur, avec le mot de passe
  6. configure le serveur web principal qui sert de reverse
  7. 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:

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;