documentation_technique:hebergementweb

Hébergement web

Architecture

Sur loth, un serveur apache en frontal (port 80 et 443) servant de reverse proxy vers les instances de chaque adhérent.e. 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

Prérequis

Cloner CS_CT/ansible_hadoly.git

Le nom de domaine à héberger doit être associé via un CNAME à loth.hadoly.fr

Il

Création du playbook

Sur la base du modèle suivant:

---
- hosts: loth.hadoly.fr                                                         
  vars:                                                                         
    adherent_login: loginadherent                                               
    adherent_password: "mot de passe adherent"                                  
    apache_server_name: "nom de domaine"                                        
    apache_server_alias: "aliases de nom de domaine ou null"                    
    wh_wordpress: true                                                          
    certbot_email: "adresse mail de l'admin du site"                            
    certbot_domains: "[{{ apache_server_name }}]"                               
  roles:                                                                        
    - hebergementweb

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) système - avec le mot de passe défini dans le playbook
  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:

  • 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

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;

  • documentation_technique/hebergementweb.txt
  • Dernière modification : il y a 3 jours
  • de thomas