split documentation for inclusion in Combo
This commit is contained in:
parent
46103dda8b
commit
6bba445e13
|
@ -0,0 +1,6 @@
|
|||
Notice d’exploitation
|
||||
=====================
|
||||
|
||||
Ce document constitue la notice l’exploitation d’un système Publik
|
||||
standard. Des adaptations sont naturellement à envisager en fonction des
|
||||
besoins particuliers.
|
|
@ -0,0 +1,52 @@
|
|||
# Pilotage
|
||||
|
||||
## Pilotage du frontal HTTP
|
||||
|
||||
C'est le service Nginx qui gère les requêtes HTTP, son pilotage se fait
|
||||
de façon classique :
|
||||
|
||||
# service nginx stop
|
||||
|
||||
# service nginx start
|
||||
|
||||
# service nginx restart
|
||||
|
||||
À noter que lorsqu'un service Publik est coupé, Nginx renvoie des
|
||||
erreurs *502 Bad Gateway*. HAProxy réagit alors en tentant la requête
|
||||
sur l'autre machine. Si l'autre répond aussi 502, HAProxy peut afficher
|
||||
un message de maintenance.
|
||||
|
||||
### Pilotage des services de Publik
|
||||
|
||||
Tous les services sont pilotables avec le système *service* fourni par
|
||||
Debian.
|
||||
|
||||
Liste des services Publik en place :
|
||||
|
||||
- *hobo* : système de déploiement et de provisionning
|
||||
- *authentic2-multitenant* : gestion d'identité et websso
|
||||
- *combo* : CMS des portails usager et agent
|
||||
- *wcs* : moteur de démarches (formulaires et workflows)
|
||||
- *passerelle* : hub de webservices
|
||||
- *fargo* : porte-document
|
||||
- *supervisor* (cas particulier pour le pilotage de hobo-agent,
|
||||
sous-service hobo qui sera bientôt piloté directement par systemd)
|
||||
|
||||
Pour exemple, pilotage du service combo (portails) :
|
||||
|
||||
# service combo stop
|
||||
|
||||
# service combo start
|
||||
|
||||
# service combo restart
|
||||
|
||||
S'agissant d'une installation dual, ces actions doivent être effectuées
|
||||
sur les deux machines.
|
||||
|
||||
Attention : si un service de Publik est démarré ou redémarré alors que
|
||||
PostgreSQL n'est pas disponible, ce démarrage ne fonctionnera pas. Il
|
||||
faudra redemander le démarrage explicitement.
|
||||
|
||||
Note: la migration de tous les composants de Publik vers systemd est en
|
||||
cours et sera terminé avant fin 2017.
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# Journal des événements (logs)
|
||||
|
||||
L’historique des événements applicatifs est accessible via l'outil
|
||||
*journalctl*. Par exemple pour suivre les événements de combo :
|
||||
|
||||
# journalctl -fu combo
|
||||
|
||||
Pour suivre l'ensemble des composants :
|
||||
|
||||
# journalctl -f -u combo -u authentic2-multitenant -u wcs -u fargo -u
|
||||
hobo -u supervisor
|
||||
|
||||
Les logs HTTP sont ceux de nginx, fichiers textes rangés par service
|
||||
dans */var/log/nginx :*
|
||||
|
||||
/var/log/nginx/authentic2-multitenant-access.log
|
||||
|
||||
/var/log/nginx/authentic2-multitenant-error.log
|
||||
|
||||
/var/log/nginx/bijoe-access.log
|
||||
|
||||
/var/log/nginx/bijoe-error.log
|
||||
|
||||
/var/log/nginx/combo-access.log
|
||||
|
||||
/var/log/nginx/combo-error.log
|
||||
|
||||
/var/log/nginx/fargo-access.log
|
||||
|
||||
/var/log/nginx/fargo-error.log
|
||||
|
||||
/var/log/nginx/hobo-access.log
|
||||
|
||||
/var/log/nginx/hobo-error.log
|
||||
|
||||
/var/log/nginx/passerelle-access.log
|
||||
|
||||
/var/log/nginx/passerelle-error.log
|
||||
|
||||
/var/log/nginx/wcs-access.log
|
||||
|
||||
/var/log/nginx/wcs-error.log
|
||||
|
||||
Exemple pour suivre ce qui concerne combo :
|
||||
|
||||
# tail -f /var/log/nginx/combo-\*.log
|
|
@ -0,0 +1,60 @@
|
|||
# Mises-à-jour des composants
|
||||
|
||||
## Fréquence des mises-à-jour
|
||||
|
||||
Entr'ouvert livre une nouvelle version de Publik les soirs des 2ème et
|
||||
4ème jeudi de chaque mois. L'installation peut être faite aussitôt, mais
|
||||
nous conseillons à des hébergeurs tiers non infogérés par Entr'ouvert de
|
||||
faire la mise à jour le mardi suivant.
|
||||
|
||||
La mise à jour provoque une courte indisponibilité du système : elle
|
||||
doit être faite sur des heures de faible affluence. Pour information,
|
||||
Entr'ouvert effectue ces mises à jour autour de 22 ou 23h le jeudi soir,
|
||||
en attendant une baisse de la fréquentation visible dans les logs nginx.
|
||||
|
||||
## Déroulé en installation double (load-balancing)
|
||||
|
||||
S'agissant d'une installation double (load-balancing entre web1 et
|
||||
web2), la procédure générale à suivre est :
|
||||
|
||||
1. arrêt du frontal nginx sur web2 ⇒ HAProxy envoie tout sur web1,
|
||||
2. vérifier que PostgreSQL est bien fonctionnel,
|
||||
3. mise à jour de web1 (procédure ci-dessous),
|
||||
4. vérification du fonctionnement du site (parcours de 3 ou 4 URLs),
|
||||
5. mise à jour de web2,
|
||||
6. relance du frontal nginx sur web2,
|
||||
7. vérification du fonctionnement du site (parcours de 3 ou 4 URLs).
|
||||
|
||||
Attention : si un service de Publik est redémarré alors que PostgreSQL
|
||||
n'est pas disponible, ce démarrage ne fonctionnera pas. Il faudra
|
||||
redemander le démarrage explicitement. Ceci signifie qu'il est très
|
||||
fortement conseillé de faire la mise à jour de Publik indépendamment de
|
||||
celle de PostgreSQL. Entr'ouvert conseille de faire la mise à jour de
|
||||
PostgreSQL **avant** les composants de Publik.
|
||||
|
||||
Les composants de Publik sont livrés sous forme de paquet Debian, leur
|
||||
mise à jour suit la procédure classique :
|
||||
|
||||
# apt update
|
||||
# apt upgrade
|
||||
|
||||
Il est cependant possible qu'une nouvelle version demande l'installation
|
||||
d'une nouvelle dépendance, dans ce cas « *apt upgrade* » refusera la
|
||||
mise à jour et il faudra la forcer par :
|
||||
|
||||
# apt full-upgrade
|
||||
|
||||
En cas de doute, contacter <support@entrouvert.com>
|
||||
|
||||
## Mise à jour PostgreSQL
|
||||
|
||||
La mise à jour de PostgreSQL peut être faite à chaud selon les
|
||||
procédures Debian normales. Durant la mise à jour, les services ne
|
||||
fonctionneront pas (réponses 5xx) et HAProxy délivrera une erreur «
|
||||
maintenance ». Dès le redémarrage de PostgreSQL, les services Publik
|
||||
rétabliront les connexions vers le serveur SQL et le système sera à
|
||||
nouveau utilisable.
|
||||
|
||||
Attention : si un service de Publik est démarré ou redémarré alors que
|
||||
PostgreSQL n'est pas disponible, ce démarrage ne fonctionnera pas. Il
|
||||
faudra redemander le démarrage explicitement.
|
|
@ -0,0 +1,15 @@
|
|||
# Support
|
||||
|
||||
Les moyens de contact pour le support sont :
|
||||
|
||||
- l'extranet projet avec le gestionnaire de demandes (accès réservé) :
|
||||
[https://dev.entrouvert.org/projects/ma](https://dev.entrouvert.org/projects/nanterre-rsu/issues)[c](https://dev.entrouvert.org/projects/nanterre-rsu/issues)[ollectivite](https://dev.entrouvert.org/projects/nanterre-rsu/issues)[/issues](https://dev.entrouvert.org/projects/nanterre-rsu/issues),
|
||||
- la liste de discussion projet (abonnements sur demande) :
|
||||
[ma](mailto:nanterre-rsu@listes.entrouvert.com)[collectivite](mailto:nanterre-rsu@listes.entrouvert.com)[@listes.entrouvert.com](mailto:nanterre-rsu@listes.entrouvert.com),
|
||||
- le courriel spécifique support pour macollectivite (génère
|
||||
automatiquement une demande) :
|
||||
[support-ma](mailto:support-nanterre-rsu@entrouvert.com)[collectivite](mailto:support-nanterre-rsu@entrouvert.com)[@entrouvert.com](mailto:support-nanterre-rsu@entrouvert.com),
|
||||
- le courriel support générique d'Entr'ouvert :
|
||||
<support@entrouvert.com>.
|
||||
|
||||
|
256
exploitation.md
256
exploitation.md
|
@ -1,256 +0,0 @@
|
|||
Notice d’exploitation
|
||||
=====================
|
||||
|
||||
Ce document constitue la notice l’exploitation d’un système Publik
|
||||
standard. Des adaptations sont naturellement à envisager en fonction des
|
||||
besoins particuliers.
|
||||
|
||||
Rappels
|
||||
-------
|
||||
|
||||
Vous trouverez une documentation complète et spécifique à l’architecture
|
||||
et à l’installation de Publik dans les documents intitulés : *Publik –
|
||||
Architecture technique* et *Publik – Installation*. Les notes qui
|
||||
suivent en donnent un aperçu.
|
||||
|
||||
### Architecture
|
||||
|
||||
Une infrastructure type de Publik est composée des machines suivantes :
|
||||
|
||||
- un service frontal de répartition de charge (*proxy),*
|
||||
- deux serveurs d'application (*web1* et *web2),*
|
||||
- un serveur de base de données *sql* (Postgres),
|
||||
- un serveur de fichier (partage NFS).
|
||||
|
||||
Une requête Publik chemine par les services suivants :
|
||||
|
||||
- proxy :
|
||||
|
||||
- reçoit la requête et la transmet vers un serveur d’application,
|
||||
- est en charge de la terminaison SSL (et dispose de certificat
|
||||
qui couvre l'ensemble des systèmes),
|
||||
- est en charge de la répartition de la charge et la la tolérance
|
||||
aux pannes
|
||||
|
||||
- web1 et web2 :
|
||||
|
||||
- ont des installations identiques au niveau logiciel,
|
||||
- disposent des composants Publik,
|
||||
- interrogent la base de donnée et transfèrent les fichiers en
|
||||
fonction des niveaux d’accès des utilisateurs.
|
||||
|
||||
- Postgres
|
||||
|
||||
- enregistre et restitue les données des applications,
|
||||
- il est courant d’utiliser une installation à deux machines
|
||||
identiques avec une réplication de type master/slave.
|
||||
|
||||
- NFS
|
||||
|
||||
- fournit l’interface de stockage pour les fichiers partagés.
|
||||
|
||||
Liste des modules applicatifs potentiels de Publik :
|
||||
|
||||
- Authentic : gestion des identités, IdP (*identity provider*),
|
||||
- Combo : CMS pour portails usager et agent (porte d’entrée de
|
||||
Publik),
|
||||
- w.c.s. : formulaires et workflows,
|
||||
- Passerelle : connecteurs vers systèmes tiers,
|
||||
- Fargo : porte-documents,
|
||||
- Corbo : diffusion de messages,
|
||||
- Chrono : prise de rendez-vous,
|
||||
- Welco : interface de saisie (multi-canal),
|
||||
- Hobo : système de déploiement et de provisionning,
|
||||
- Bijoe : élaboration et production de rapports statistiques,
|
||||
- Chrono : gestion d'inscriptions et rendez-vous
|
||||
|
||||
### Structure d’une brique
|
||||
|
||||
Une brique Entrouvert est un paquet Debian standard issu d’un module
|
||||
Python standard. C’est un logiciel libres dont vous pouvez obtenir et
|
||||
modifier les sources selon vos besoins. Les fichiers d’installation sont
|
||||
posés dans /var/lib/mabrique, et les fichiers de configuration sont
|
||||
placés dans /etc/mabrique. Les services et les journaux des briques sont
|
||||
pilotés par systemd.
|
||||
|
||||
Pour certaines briques nous créons un lien symbolique depuis
|
||||
/var/lib/mabrique/documents vers un montage NFS.
|
||||
|
||||
Notice d'exploitation
|
||||
---------------------
|
||||
|
||||
### Pilotage du frontal HTTP
|
||||
|
||||
C'est le service Nginx qui gère les requêtes HTTP, son pilotage se fait
|
||||
de façon classique :
|
||||
|
||||
\# service nginx stop
|
||||
|
||||
\# service nginx start
|
||||
|
||||
\# service nginx restart
|
||||
|
||||
À noter que lorsqu'un service Publik est coupé, Nginx renvoie des
|
||||
erreurs *502 Bad Gateway*. HAProxy réagit alors en tentant la requête
|
||||
sur l'autre machine. Si l'autre répond aussi 502, HAProxy peut afficher
|
||||
un message de maintenance.
|
||||
|
||||
### Pilotage des services de Publik
|
||||
|
||||
Tous les services sont pilotables avec le système *service* fourni par
|
||||
Debian.
|
||||
|
||||
Liste des services Publik en place :
|
||||
|
||||
- *hobo* : système de déploiement et de provisionning
|
||||
- *authentic2-multitenant* : gestion d'identité et websso
|
||||
- *combo* : CMS des portails usager et agent
|
||||
- *wcs* : moteur de démarches (formulaires et workflows)
|
||||
- *passerelle* : hub de webservices
|
||||
- *fargo* : porte-document
|
||||
- *supervisor* (cas particulier pour le pilotage de hobo-agent,
|
||||
sous-service hobo qui sera bientôt piloté directement par systemd)
|
||||
|
||||
Pour exemple, pilotage du service combo (portails) :
|
||||
|
||||
\# service combo stop
|
||||
|
||||
\# service combo start
|
||||
|
||||
\# service combo restart
|
||||
|
||||
S'agissant d'une installation dual, ces actions doivent être effectuées
|
||||
sur les deux machines.
|
||||
|
||||
Attention : si un service de Publik est démarré ou redémarré alors que
|
||||
PostgreSQL n'est pas disponible, ce démarrage ne fonctionnera pas. Il
|
||||
faudra redemander le démarrage explicitement.
|
||||
|
||||
Note: la migration de tous les composants de Publik vers systemd est en
|
||||
cours et sera terminé avant fin 2017.
|
||||
|
||||
### Journaux des événements (logs)
|
||||
|
||||
L’historique des événements applicatifs est accessible via l'outil
|
||||
*journalctl*. Par exemple pour suivre les événements de combo :
|
||||
|
||||
\# journalctl -fu combo
|
||||
|
||||
Pour suivre l'ensemble des composants :
|
||||
|
||||
\# journalctl -f -u combo -u authentic2-multitenant -u wcs -u fargo -u
|
||||
hobo -u supervisor
|
||||
|
||||
Les logs HTTP sont ceux de nginx, fichiers textes rangés par service
|
||||
dans */var/log/nginx :*
|
||||
|
||||
/var/log/nginx/authentic2-multitenant-access.log
|
||||
|
||||
/var/log/nginx/authentic2-multitenant-error.log
|
||||
|
||||
/var/log/nginx/bijoe-access.log
|
||||
|
||||
/var/log/nginx/bijoe-error.log
|
||||
|
||||
/var/log/nginx/combo-access.log
|
||||
|
||||
/var/log/nginx/combo-error.log
|
||||
|
||||
/var/log/nginx/fargo-access.log
|
||||
|
||||
/var/log/nginx/fargo-error.log
|
||||
|
||||
/var/log/nginx/hobo-access.log
|
||||
|
||||
/var/log/nginx/hobo-error.log
|
||||
|
||||
/var/log/nginx/passerelle-access.log
|
||||
|
||||
/var/log/nginx/passerelle-error.log
|
||||
|
||||
/var/log/nginx/wcs-access.log
|
||||
|
||||
/var/log/nginx/wcs-error.log
|
||||
|
||||
Exemple pour suivre ce qui concerne combo :
|
||||
|
||||
\# tail -f /var/log/nginx/combo-\*.log
|
||||
|
||||
### Mise à jour des composants
|
||||
|
||||
#### Fréquence de mise à jour
|
||||
|
||||
Entr'ouvert livre une nouvelle version de Publik les soirs des 2ème et
|
||||
4ème jeudi de chaque mois. L'installation peut être faite aussitôt, mais
|
||||
nous conseillons à des hébergeurs tiers non infogérés par Entr'ouvert de
|
||||
faire la mise à jour le mardi suivant.
|
||||
|
||||
La mise à jour provoque une courte indisponibilité du système : elle
|
||||
doit être faite sur des heures de faible affluence. Pour information,
|
||||
Entr'ouvert effectue ces mises à jour autour de 22 ou 23h le jeudi soir,
|
||||
en attendant une baisse de la fréquentation visible dans les logs nginx.
|
||||
|
||||
#### Déroulé en installation double (load-balancing)
|
||||
|
||||
S'agissant d'une installation double (load-balancing entre web1 et
|
||||
web2), la procédure générale à suivre est :
|
||||
|
||||
1. arrêt du frontal nginx sur web2 ⇒ HAProxy envoie tout sur web1,
|
||||
2. vérifier que PostgreSQL est bien fonctionnel,
|
||||
3. mise à jour de web1 (procédure ci-dessous),
|
||||
4. vérification du fonctionnement du site (parcours de 3 ou 4 URLs),
|
||||
5. mise à jour de web2,
|
||||
6. relance du frontal nginx sur web2,
|
||||
7. vérification du fonctionnement du site (parcours de 3 ou 4 URLs).
|
||||
|
||||
Attention : si un service de Publik est redémarré alors que PostgreSQL
|
||||
n'est pas disponible, ce démarrage ne fonctionnera pas. Il faudra
|
||||
redemander le démarrage explicitement. Ceci signifie qu'il est très
|
||||
fortement conseillé de faire la mise à jour de Publik indépendamment de
|
||||
celle de PostgreSQL. Entr'ouvert conseille de faire la mise à jour de
|
||||
PostgreSQL **avant** les composants de Publik.
|
||||
|
||||
Les composants de Publik sont livrés sous forme de paquet Debian, leur
|
||||
mise à jour suit la procédure classique :
|
||||
|
||||
\# apt update
|
||||
|
||||
\# apt upgrade
|
||||
|
||||
Il est cependant possible qu'une nouvelle version demande l'installation
|
||||
d'une nouvelle dépendance, dans ce cas « *apt upgrade* » refusera la
|
||||
mise à jour et il faudra la forcer par :
|
||||
|
||||
\# apt full-upgrade
|
||||
|
||||
En cas de doute, contacter <support@entrouvert.com>
|
||||
|
||||
### Mise à jour PostgreSQL
|
||||
|
||||
La mise à jour de PostgreSQL peut être faite à chaud selon les
|
||||
procédures Debian normales. Durant la mise à jour, les services ne
|
||||
fonctionneront pas (réponses 5xx) et HAProxy délivrera une erreur «
|
||||
maintenance ». Dès le redémarrage de PostgreSQL, les services Publik
|
||||
rétabliront les connexions vers le serveur SQL et le système sera à
|
||||
nouveau utilisable.
|
||||
|
||||
Attention : si un service de Publik est démarré ou redémarré alors que
|
||||
PostgreSQL n'est pas disponible, ce démarrage ne fonctionnera pas. Il
|
||||
faudra redemander le démarrage explicitement.
|
||||
|
||||
Support
|
||||
-------
|
||||
|
||||
Les moyens de contact pour le support sont :
|
||||
|
||||
- l'extranet projet avec le gestionnaire de demandes (accès réservé) :
|
||||
[https://dev.entrouvert.org/projects/ma](https://dev.entrouvert.org/projects/nanterre-rsu/issues)[c](https://dev.entrouvert.org/projects/nanterre-rsu/issues)[ollectivite](https://dev.entrouvert.org/projects/nanterre-rsu/issues)[/issues](https://dev.entrouvert.org/projects/nanterre-rsu/issues),
|
||||
- la liste de discussion projet (abonnements sur demande) :
|
||||
[ma](mailto:nanterre-rsu@listes.entrouvert.com)[collectivite](mailto:nanterre-rsu@listes.entrouvert.com)[@listes.entrouvert.com](mailto:nanterre-rsu@listes.entrouvert.com),
|
||||
- le courriel spécifique support pour macollectivite (génère
|
||||
automatiquement une demande) :
|
||||
[support-ma](mailto:support-nanterre-rsu@entrouvert.com)[collectivite](mailto:support-nanterre-rsu@entrouvert.com)[@entrouvert.com](mailto:support-nanterre-rsu@entrouvert.com),
|
||||
- le courriel support générique d'Entr'ouvert :
|
||||
<support@entrouvert.com>.
|
||||
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
# Procédure d’installation
|
||||
|
||||
Ce document présente installation d’un système Publik standard. Des
|
||||
adaptations sont naturellement à envisager en fonction des besoins
|
||||
particuliers.
|
|
@ -0,0 +1,74 @@
|
|||
# Pré-requis
|
||||
|
||||
## Résolution de noms
|
||||
|
||||
Avant l'installation de Publik il faut vérifier que les enregistrements
|
||||
DNS sont fonctionnels; Publik nécessite autant de domaines que de
|
||||
composants.
|
||||
|
||||
Typiquement :
|
||||
|
||||
- portail usager (composant combo) :
|
||||
moncompte.macollectivite.fr,
|
||||
- portail agents (composant combo) :
|
||||
agents-moncompte.macollectivite.fr,
|
||||
- démarches (composant wcs/wcs-au-quotidien) :
|
||||
demarches-moncompte.macollectivite.fr,
|
||||
- fournisseur d'identités (composant authentic) :
|
||||
connexion-moncompte.macollectivite.fr,
|
||||
- hub de webservice (composant passerelle) :
|
||||
passerelle-moncompte.macollectivite.fr,
|
||||
- porte document (composant fargo) :
|
||||
portedoc-moncompte.macollectivite.fr,
|
||||
|
||||
Par exemple voici à quoi pourraient ressembler les entrées d'un serveur Bind:
|
||||
|
||||
publik A a.b.c.d ; addresse IP de «publik»
|
||||
portail CNAME publik ; portail usage (brique: combo)
|
||||
backoffice CNAME publik ; portail agent (brique: combo)
|
||||
connexion CNAME publik ; fournisseur d'identités (brique: authentic)
|
||||
demarches CNAME publik ; téléservices (brique: wcs)
|
||||
passerelle CNAME publik ; hub de webservices (brique: passerelle)
|
||||
hobo CNAME publik ; système de déploiement (brique: hobo)
|
||||
|
||||
Toutes ces entrées DNS doivent pointer vers le proxy de répartition de charge
|
||||
(dans le cas d'une installation avec répartition de charge).
|
||||
|
||||
Par ailleurs, les serveurs applicatifs doivent impérativement avoir un
|
||||
fichier */etc/hosts* consistant.
|
||||
|
||||
## Certificat X509
|
||||
|
||||
Publik ne fonctionne qu'en mode HTTPS.
|
||||
|
||||
Un ou plusieurs certificats x509 valides et reconnus doivent être disponibles qui couvrent tous les noms des briques qui seront installées.
|
||||
Dans la suite de la documentation, un certificat est disponible :
|
||||
|
||||
* clé publique certifiée : /etc/ssl/certs/cert-example.pem
|
||||
* clé privée : /etc/ssl/private/cert-example.key
|
||||
|
||||
HAProxy doit disposer du ou des certificats X509 valides pour chacun de
|
||||
ces domaines ; les certificats doivent être reconnus par des autorités
|
||||
publiques. (L’utilisation de certificats Letsencrypt est possible)
|
||||
|
||||
## Horloges synchronisées
|
||||
|
||||
Il est **indispensable** que les machines soient exactement à la même
|
||||
heure. Les systèmes récent utilisent *systemd-timesyncd *par défaut.
|
||||
*Ntp* est également possible.
|
||||
|
||||
## Envois des emails
|
||||
|
||||
Les serveurs applicatifs doivent disposer d'un MTA local (par exemple
|
||||
*exim4-daemon-light*) avec le port SMTP ouvert et capable d'expédier des mails
|
||||
vers tout Internet, en passant éventuellement par un relais. Les mails seront
|
||||
envoyés avec le domaine « @macollectivite.fr ». Nous recommandons
|
||||
vivement de les relayer via un smarthost officiel de votre réseau.
|
||||
|
||||
## Configuration de la localisation
|
||||
|
||||
Sur toutes les machines il est nécessaire de reconfigurer *locales* pour
|
||||
*fr_FR.UTF-8* :
|
||||
|
||||
dpkg-reconfigure locales
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
# Configuration des dépôts logiciels
|
||||
|
||||
## Vue générale
|
||||
|
||||
Les différents composants logiciels utilisés par Publik proviennent, par
|
||||
ordre de préférence :
|
||||
|
||||
- de la distribution Debian GNU/Linux stable
|
||||
- des *backports* officiels Debian, disposant du suivi de sécurité par
|
||||
l’équipe Debian,
|
||||
- des paquets Debian fournis et maintenus par les projets *upstream,*
|
||||
- de paquets Debian maintenus par Entr’ouvert qui en assure le suivi
|
||||
de sécurité.
|
||||
|
||||
## Configuration des dépôts logiciels
|
||||
|
||||
Les machines doivent disposer des dépôts **jessie** et
|
||||
**jessie-backports**.
|
||||
|
||||
Ajoutons aussi les dépôts Entr'ouvert et RabbitMQ par la création de
|
||||
*/etc/apt/sources.list.d/eo-prod.list :*
|
||||
|
||||
deb http://deb.entrouvert.org/ jessie main
|
||||
deb http://www.rabbitmq.com/debian/ testing main
|
||||
|
||||
Ajoutons les clés correspondantes :
|
||||
|
||||
wget -O- https://deb.entrouvert.org/entrouvert.gpg | apt-key add -
|
||||
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | apt-key add -
|
||||
apt update
|
||||
|
||||
Pricisons les paquets qu'on veut tirer de jessie-backports en éditant
|
||||
*/etc/apt/preferences.d/backports :*
|
||||
|
||||
Package: python-django
|
||||
Pin: release a=jessie-backports
|
||||
Pin-Priority: 900
|
||||
|
||||
Package: python-django-common
|
||||
Pin: release a=jessie-backports
|
||||
Pin-Priority: 900
|
||||
|
||||
Package: gunicorn
|
||||
Pin: release a=jessie-backports
|
||||
Pin-Priority: 900
|
||||
|
||||
Package: python-pyasn1
|
||||
Pin: release a=jessie-backports
|
||||
Pin-Priority: 900
|
||||
|
||||
Package: python-requests
|
||||
Pin: release a=jessie-backports
|
||||
Pin-Priority: 900
|
||||
|
||||
Package: python-urllib3
|
||||
Pin: release a=jessie-backports
|
||||
Pin-Priority: 900
|
||||
|
||||
Package: python-cryptography
|
||||
Pin: release a=jessie-backports
|
||||
Pin-Priority: 900
|
||||
|
||||
Package: python-ndg-httpsclient
|
||||
Pin: release a=jessie-backports
|
||||
Pin-Priority: 900
|
||||
|
||||
Package: python-openssl
|
||||
Pin: release a=jessie-backports
|
||||
Pin-Priority: 900
|
||||
|
||||
Package: python-jwcrypto
|
||||
Pin: release a=jessie-backports
|
||||
Pin-Priority: 900
|
||||
|
||||
Package: python-setuptools
|
||||
Pin: release a=jessie-backports
|
||||
Pin-Priority: 900
|
||||
|
||||
Package: python-pkg-resources
|
||||
Pin: release a=jessie-backports
|
||||
Pin-Priority: 900
|
||||
|
||||
## Installation des paquets de base
|
||||
|
||||
Outillage utile pour l'installation et plus tard pour le support et la
|
||||
maintenance :
|
||||
|
||||
apt install postgresql-client # pour création utilisateurs et bases de données dans postgresql
|
||||
apt install bsd-mailx # pour test de l'envoi de mails
|
||||
apt install zip # pour la création du squelette de site w.c.s.
|
||||
apt install curl wget # pour les tests/debug locaux
|
||||
apt install ipython ltrace strace psmisc tcpdump tshark locate # pour des debug applicatifs
|
||||
apt install ca-certificates-entrouvert # connexion au LDAP EO
|
||||
|
||||
Composants additionnels nécessaires pour les applications :
|
||||
|
||||
apt install libreoffice # pour génération de documents dans wcs
|
||||
apt install publik-base-theme # système de thème
|
|
@ -0,0 +1,92 @@
|
|||
# Création des bases de données
|
||||
|
||||
## Vue générale
|
||||
|
||||
Chaque brique utilise une ou plusieurs bases de données PostgreSQL. Il
|
||||
est courant d’utiliser une installation à deux machines identiques en
|
||||
master/slave. Publik peut utiliser un système PostgreSQL existant, le
|
||||
cas échéant. Publik nécessite PostgreSQL en version 9 (>9.4 recommandée).
|
||||
|
||||
## Pré-requis : extensions PostgreSQL
|
||||
|
||||
Vérifier que les extensions PostgreSQL sont bien activées :
|
||||
|
||||
apt install postgresql-contrib
|
||||
|
||||
## Création des bases
|
||||
|
||||
Chaque composant Publik doit disposer :
|
||||
|
||||
- d'une base de données dédiée,
|
||||
- d'un accès spécifique à cette base via un usager postgreSQL dédié
|
||||
(avec un mot de passe SQL à créer pour chaque composant).
|
||||
|
||||
Principe pour le composant *combo :*
|
||||
|
||||
CREATE USER combo PASSWORD 'indiquer-ici-le-mot-de-passe-pour-combo';
|
||||
|
||||
CREATE DATABASE combo WITH OWNER = combo TEMPLATE = template0 LC_COLLATE = 'fr_FR.UTF_8' LC_CTYPE = 'fr_FR.UTF-8';
|
||||
|
||||
Remarque : template0 et LC_COLLATE et LC_CTYPE nécessaires parce que
|
||||
template1 est en en_US.UTF-8.
|
||||
|
||||
La même opération doit être répétée pour chaque brique logicielle (bien
|
||||
sûr à chaque fois il faut **noter le mot de passe** choisi, il sera
|
||||
nécessaire par la suite) :
|
||||
|
||||
- Combo
|
||||
- Hobo
|
||||
- Authentic
|
||||
- Passerelle
|
||||
- Fargo
|
||||
- Bijoe
|
||||
- Chrono
|
||||
- Corbo
|
||||
- Mandayejs
|
||||
- Welco
|
||||
|
||||
Une brique est spécifique : w.c.s.. Pour w.c.s., il n'y a pas besoin de
|
||||
création d'une base, elle sera effectuée lors de l'instanciation. En
|
||||
revanche, l'utilisateur w.c.s. sur PostgreSQL doit avoir le droit
|
||||
CREATEDB, donc :
|
||||
|
||||
*CREATE USER wcs PASSWORD 'indiquer-ici-le-mot-de-passe-pour-wcs'
|
||||
CREATEDB;*
|
||||
|
||||
## Création des utilisateurs avec UID identiques sur web1 et web2
|
||||
|
||||
Comme des fichiers vont être partagés en NFSv3, il faut que les UID des
|
||||
utilisateurs Unix concernés soient les mêmes sur les deux machines web1
|
||||
et web2.
|
||||
|
||||
Voici un script pour faire cela sur web1 et web2 :
|
||||
|
||||
#!/bin/sh
|
||||
|
||||
uid=2100
|
||||
|
||||
for user in hobo authentic-multitenant wcs wcs-au-quotidien passerelle combo fargo welco chrono corbo bijoe mandayejs
|
||||
do
|
||||
echo "create group $user ($uid)"
|
||||
addgroup --system --gid $uid $user
|
||||
echo "create user $user ($uid)"
|
||||
adduser --disabled-password --system --uid $uid --gecos "$user daemon" --ingroup $user --no-create-home --home /var/lib/$user $user uid=$(($uid+1))
|
||||
done
|
||||
|
||||
Résultat dans /etc/passwd:
|
||||
|
||||
hobo:x:2101:2101:hobo daemon,,,:/var/lib/hobo:/bin/false
|
||||
authentic-multitenant:x:2102:2102:authentic2-multitenant
|
||||
daemon,,,:/var/lib/authentic2-multitenant:/bin/false
|
||||
wcs:x:2103:2103:wcs daemon,,,:/var/lib/wcs:/bin/false
|
||||
wcs-au-quotidien:x:2104:2104:wcs-au-quotidien
|
||||
daemon,,,:/var/lib/wcs-au-quotidien:/bin/false
|
||||
passerelle:x:2105:2105:passerelle
|
||||
daemon,,,:/var/lib/passerelle:/bin/false
|
||||
combo:x:2106:2106:combo daemon,,,:/var/lib/combo:/bin/false
|
||||
fargo:x:2107:2107:fargo daemon,,,:/var/lib/fargo:/bin/false
|
||||
welco:x:2108:2108:welco daemon,,,:/var/lib/welco:/bin/false
|
||||
chrono:x:2109:2109:chrono daemon,,,:/var/lib/chrono:/bin/false
|
||||
corbo:x:2110:2110:corbo daemon,,,:/var/lib/corbo:/bin/false
|
||||
bijoe:x:2111:2111:bijoe daemon,,,:/var/lib/bijoe:/bin/false
|
||||
mandayejs:x:2112:2112:mandayejs daemon,,,:/var/lib/mandayejs:/bin/false
|
|
@ -0,0 +1,558 @@
|
|||
# Installation des composants
|
||||
|
||||
Publik est la somme de plusieurs composants qui communiquent entre eux
|
||||
via messages et webservices. Chaque composant est un paquet Debian qui
|
||||
s'installe depuis de dépôt Entr'ouvert.
|
||||
|
||||
Lors de leur installation les briques s’attendent à trouver un service
|
||||
postgres fonctionnel. Afin de les satisfaire nous renseignons ces
|
||||
paramètres de connexion avant leur installation.
|
||||
|
||||
## Installation RabbitMQ
|
||||
|
||||
# apt install rabbitmq-server
|
||||
|
||||
RabbitMQ sera utilisé uniquement en local (127.0.0.1) et n'a besoin
|
||||
d'aucune configuration particulière. Veiller cependant à vérifier son
|
||||
bon fonctionnement avant de continuer l'installation. RabbitMQ est assez
|
||||
sensible à la résolution DNS (présence de la machine locale dans
|
||||
/etc/hosts, par exemple) :
|
||||
|
||||
Vérifier que le service tourne :
|
||||
|
||||
service rabbitmq-server status
|
||||
|
||||
● rabbitmq-server.service - RabbitMQ broker
|
||||
|
||||
Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled)
|
||||
Active: active (running) since lun. 2017-07-17 10:09:57 CEST; 4 days
|
||||
ago
|
||||
Main PID: 580 (beam.smp)
|
||||
Status: "Initialized"
|
||||
|
||||
CGroup: /system.slice/rabbitmq-server.service
|
||||
├─ 580 /usr/lib/erlang/erts-6.2/bin/beam.smp -W w -A 64 -P 1048576 -t
|
||||
5000000 -stbt db -zdbbl 32000 -K true -- -root /usr/lib/erlang -progname
|
||||
erl -- -home...
|
||||
├─ 897 /usr/lib/erlang/erts-6.2/bin/epmd -daemon
|
||||
├─1780 inet_gethost 4
|
||||
└─1781 inet_gethost 4
|
||||
|
||||
Et absence d'erreur dans les logs, qui doivent ressembler à :
|
||||
|
||||
$journalctl -u rabbitmq-server.service
|
||||
|
||||
-- Logs begin at lun. 2017-07-17 10:09:46 CEST, end at ven. 2017-07-21 19:55:37 CEST. --
|
||||
|
||||
juil. 17 10:09:50 web1-preprod systemd[1]: Starting RabbitMQ broker...
|
||||
juil. 17 10:09:54 web1-preprod rabbitmq-server[580]: RabbitMQ 3.6.10. Copyright (C) 2007-2017 Pivotal Software, Inc.
|
||||
juil. 17 10:09:54 web1-preprod rabbitmq-server[580]: ## ## Licensed under the MPL. See http://www.rabbitmq.com/
|
||||
juil. 17 10:09:54 web1-preprod rabbitmq-server[580]: ## ##
|
||||
juil. 17 10:09:54 web1-preprod rabbitmq-server[580]: ########## Logs: /var/log/rabbitmq/rabbit@web1-preprod.log
|
||||
juil. 17 10:09:54 web1-preprod rabbitmq-server[580]: ###### ## /var/log/rabbitmq/rabbit@web1-preprod-sasl.log
|
||||
juil. 17 10:09:54 web1-preprod rabbitmq-server[580]: ##########
|
||||
juil. 17 10:09:54 web1-preprod rabbitmq-server[580]: Starting broker...
|
||||
juil. 17 10:09:57 web1-preprod rabbitmq-server[580]: systemd unit for activation check: "rabbitmq-server.service"
|
||||
juil. 17 10:09:57 web1-preprod systemd[1]: Started RabbitMQ broker.
|
||||
juil. 17 10:09:57 web1-preprod rabbitmq-server[580]: completed with 0 plugins.
|
||||
|
||||
(Note : bien sûr, ce n'est pas un composant créé par Entr'ouvert, c'est
|
||||
<https://www.rabbitmq.com/>)
|
||||
|
||||
## Installation Combo
|
||||
|
||||
On commence par renseigner les paramètres de connexion à la base de
|
||||
donnée :
|
||||
|
||||
L'accès à la base de données de Combo se décrit dans
|
||||
*/etc/combo/settings.d/*.py* :
|
||||
|
||||
# contenu de /etc/combo/settings.d/settings.py
|
||||
|
||||
DATABASES['default']['NAME'] = 'combo'
|
||||
DATABASES['default']['USER'] = 'combo'
|
||||
DATABASES['default']['PASSWORD'] = 'indiquer-ici-le-mot-de-passe-pour-combo'
|
||||
DATABASES['default']['HOST'] = 'sql-prod'
|
||||
DATABASES['default']['PORT'] = '5432'
|
||||
|
||||
Toujours dans */etc/combo/settings.d/macollectivite.py*,
|
||||
nous configurons l'envoi des traces d'erreur par l'ajout de ces lignes
|
||||
en fin de fichier :
|
||||
|
||||
ADMINS = (('Admin EO', 'admin+prod.macollectivite.combo@entrouvert.com'),)
|
||||
EMAIL_SUBJECT_PREFIX = '[prod macollectivite combo] '
|
||||
SERVER_EMAIL = ['admin+prod.](mailto:'admin+prod.maville.combo@entrouvert.com)macollectivite[.combo@entrouvert.com](mailto:'admin+prod.maville.combo@entrouvert.com)'
|
||||
|
||||
On installe ensuite le logiciel *combo* en (indiquant qu'il ne faut pas
|
||||
suivre la recommandation d'installer PostgreSQL) :
|
||||
|
||||
# apt install combo postgresql-
|
||||
|
||||
Vérification avec *service combo status* :
|
||||
|
||||
service combo status -l
|
||||
|
||||
● combo.service - Combo
|
||||
|
||||
Loaded: loaded (/lib/systemd/system/combo.service; enabled)
|
||||
Drop-In: /etc/systemd/system/combo.service.d
|
||||
└─wait-for-mnt-data.conf
|
||||
Active: active (running) since jeu. 2017-07-20 23:33:44 CEST; 19h ago
|
||||
Main PID: 16324 (gunicorn)
|
||||
|
||||
CGroup: /system.slice/combo.service
|
||||
├─16324 /usr/bin/python /usr/bin/gunicorn --bind unix:/run/combo/combo.sock --worker-class=sync --workers 5 --timeout=30 --name combo combo.wsgi:application
|
||||
├─16335 /usr/bin/python /usr/bin/gunicorn --bind unix:/run/combo/combo.sock --worker-class=sync --workers 5 --timeout=30 --name combo combo.wsgi:application
|
||||
├─16336 /usr/bin/python /usr/bin/gunicorn --bind unix:/run/combo/combo.sock --worker-class=sync --workers 5 --timeout=30
|
||||
├─16337 /usr/bin/python /usr/bin/gunicorn --bind unix:/run/combo/combo.sock --worker-class=sync --workers 5 --timeout=30 --name combo combo.wsgi:application
|
||||
├─16342 /usr/bin/python /usr/bin/gunicorn --bind unix:/run/combo/combo.sock --worker-class=sync --workers 5 --timeout=30 --name combo combo.wsgi:application
|
||||
└─16347 /usr/bin/python /usr/bin/gunicorn --bind unix:/run/combo/combo.sock --worker-class=sync --workers 5 --timeout=30 --name combo combo.wsgi:application
|
||||
|
||||
## Installation Passerelle
|
||||
|
||||
La procédure est la même que pour Combo
|
||||
|
||||
L'accès à la base de données de Passerelle se décrit dans */etc/passerelle/settings.d/*.py* :
|
||||
|
||||
# extrait de /etc/passerelle/settings.d/macollectivite.py
|
||||
|
||||
DATABASES['default']['NAME'] = 'passerelle'
|
||||
DATABASES['default']['USER'] = 'passerelle'
|
||||
DATABASES['default']['PASSWORD'] = 'indiquer-ici-le-mot-de-passe-pour-passerelle'
|
||||
DATABASES['default']['HOST'] = 'sql-prod'
|
||||
DATABASES['default']['PORT'] = '5432'
|
||||
|
||||
Toujours dans */etc/passerelle/settings.d/macollectivite.py*,
|
||||
configuration pour l'envoi des traces d'erreur par l'ajout de ces lignes
|
||||
en fin de fichier :
|
||||
|
||||
ADMINS = (('Admin EO', 'admin+prod.macollectivite.passerelle@entrouvert.com'),)
|
||||
EMAIL_SUBJECT_PREFIX = '[prod macollectivite passerelle] '
|
||||
SERVER_EMAIL = 'admin+prod.macollectivite.passerelle@entrouvert.com'
|
||||
|
||||
Nous pouvons ensuite installer le composant :
|
||||
|
||||
# apt install passerelle postgresql-
|
||||
|
||||
Et vérification avec *service passerelle status* qui doit montrer
|
||||
«active (running)»
|
||||
|
||||
## Installation Fargo
|
||||
|
||||
Reprendre la même procédure que pour les autres composants, en adaptant
|
||||
le nom de la brique, c'est-à-dire :
|
||||
|
||||
1. Configuration de l'accès SQL et du mail dans
|
||||
*/etc/fargo/settings.d/macollectivite.py*
|
||||
2. Installation du composant :
|
||||
|
||||
# apt install fargo postgresql-
|
||||
|
||||
3. Vérification avec *service fargo status* qui doit retourner « active
|
||||
(running) »
|
||||
|
||||
## Installation Hobo serveur
|
||||
|
||||
Reprendre la même procédure que pour les autres composants, en adaptant
|
||||
le nom de la brique, c'est-à-dire :
|
||||
|
||||
1. Configuration de l'accès SQL et du mail dans
|
||||
*/etc/hobo/settings.d/macollectivite.py*
|
||||
2. Installation du composant :
|
||||
|
||||
# apt install hobo postgresql-
|
||||
|
||||
3. Vérification avec *service hobo status* qui doit retourner « active
|
||||
(running) »
|
||||
|
||||
## Installation Hobo agent
|
||||
|
||||
Il s'agit d'un composant qui va écouter les ordres de déploiement (ou
|
||||
provisionning) envoyés par le serveur Hobo et les exécuter sur les
|
||||
autres composants.
|
||||
|
||||
Installation :
|
||||
|
||||
# apt install hobo-agent
|
||||
|
||||
Ce démon est piloté par supervisor, ce dernier a parfois du mal à se
|
||||
lancer dès la première installation. On remet donc tout à plat avec :
|
||||
|
||||
service supervisor stop
|
||||
service supervisor start
|
||||
|
||||
Et on vérifie que hobo-agent est bien lancé par supervisor :
|
||||
|
||||
service supervisor status
|
||||
|
||||
● supervisor.service - LSB: Start/stop supervisor
|
||||
|
||||
Loaded: loaded (/etc/init.d/supervisor)
|
||||
Active: active (running) since lun. 2017-07-17 10:09:52 CEST; 4 days ago
|
||||
CGroup: /system.slice/supervisor.service
|
||||
|
||||
├─1065 /usr/bin/python /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
|
||||
├─1208 python2.7 /usr/bin/celery worker --hostname=agent.%h --app=hobo.agent.worker --loglevel=INFO --concurrency=1
|
||||
└─1494 python2.7 /usr/bin/celery worker --hostname=agent.%h --app=hobo.agent.worker --loglevel=INFO --concurrency=1
|
||||
|
||||
## Installation Authentic
|
||||
|
||||
Le système Authentic, un peu plus ancien que les autres composants, ne
|
||||
suit pas exactement les mêmes principes et les mêmes nommages.
|
||||
|
||||
Le nom du paquet à installer est *authentic2-multitenant*, et on ajoute
|
||||
son plugin FranceConnect *python-authentic2-auth-fc* :
|
||||
|
||||
# apt install authentic2-multitenant python-authentic2-auth-fc postgresql-
|
||||
|
||||
La configuration de l'accès SQL et des mails se fait dans
|
||||
*/etc/authentic2-multitenant/config.py* (et non pas *settings.py* comme
|
||||
pour les autres) :
|
||||
|
||||
# extraits de /etc/authentic2-multitenant/config.py
|
||||
DATABASES['default']['NAME'] = 'authentic'
|
||||
DATABASES['default']['USER'] = 'authentic'
|
||||
DATABASES['default']['PASSWORD'] = 'le-mot-de-passe-de-authentic-cree-sur-postgresql'
|
||||
DATABASES['default']['HOST'] = 'sql-prod'
|
||||
DATABASES['default']['PORT'] = '5432'
|
||||
# ...
|
||||
|
||||
ADMINS = (('Admin EO', 'admin+prod.macollectivite.authentic@entrouvert.com'),)
|
||||
EMAIL_SUBJECT_PREFIX = '[prod macollectivite authentic] '
|
||||
SERVER_EMAIL = 'admin+prod.macollectivite.authentic@entrouvert.com'
|
||||
|
||||
Une fois ces configurations effectués, il faut remettre le service en
|
||||
place et lui demander de construire la base (update) :
|
||||
|
||||
# dpkg --configure -a
|
||||
# service authentic2-multitenant stop
|
||||
# service authentic2-multitenant update
|
||||
# service authentic2-multitenant restart
|
||||
|
||||
Vérification avec *service authentic2-multitenant status* :
|
||||
|
||||
# service authentic2-multitenant status
|
||||
● authentic2-multitenant.service - LSB: Authentic2 is a versatile identity provider
|
||||
Loaded: loaded (/etc/init.d/authentic2-multitenant)
|
||||
Active: active (running) since jeu. 2017-07-20 18:48:47 CEST; 24h ago
|
||||
CGroup: /system.slice/authentic2-multitenant.service
|
||||
├─21361 /usr/bin/python /usr/bin/gunicorn --pid /var/run/authentic2-multitenant/authentic2-multitenant.pid --user authentic-multitenant --group authentic-m...
|
||||
├─21372 /usr/bin/python /usr/bin/gunicorn --pid /var/run/authentic2-multitenant/authentic2-multitenant.pid --user authentic-multitenant --group authentic-m...
|
||||
├─21377 /usr/bin/python /usr/bin/gunicorn --pid /var/run/authentic2-multitenant/authentic2-multitenant.pid --user authentic-multitenant --group authentic-m...
|
||||
├─21380 /usr/bin/python /usr/bin/gunicorn --pid /var/run/authentic2-multitenant/authentic2-multitenant.pid --user authentic-multitenant --group authentic-m...
|
||||
└─25604 /usr/bin/python /usr/bin/gunicorn --pid /var/run/authentic2-multitenant/authentic2-multitenant.pid --user authentic-multitenant --group authentic-m...
|
||||
|
||||
## Installation w.c.s.
|
||||
|
||||
En pré-requis, LibreOffice est installé car w.c.s. l'utilise dans des
|
||||
fonctionnalités de production de documents :
|
||||
|
||||
# apt install libreoffice
|
||||
|
||||
Reprendre la même procédure que pour les autres composants, en adaptant
|
||||
le nom de la brique, c'est-à-dire :
|
||||
|
||||
1. Configuration de l'accès SQL et du mail dans
|
||||
*/etc/wcs/settings.d/macollectivite.py*
|
||||
2. Installation du composant :
|
||||
|
||||
# apt install wcs postgresql-
|
||||
|
||||
3. Vérification avec *service wcs status* qui doit retourner « active
|
||||
(running) »
|
||||
|
||||
|
||||
|
||||
## Installation de Nginx
|
||||
|
||||
# apt install nginx
|
||||
|
||||
... rien de plus. Nous installons la version de Debian 8, mais la
|
||||
version jessie-backports est possible aussi si nécessaire.
|
||||
|
||||
## Configuration de base
|
||||
|
||||
Mise en place d'un format de log avancé (qui affiche le tenant) dans
|
||||
*/etc/nginx/conf.d/log_formats.conf* :
|
||||
|
||||
# /etc/nginx/conf.d/log_formats.conf
|
||||
|
||||
log_format combined_full '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$host" [$request_time ms]';
|
||||
|
||||
log_format with_request_time '$remote_addr - $remote_user [$time_local] [$request_time ms] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"';
|
||||
|
||||
robots.txt et favicon communs dans
|
||||
*/etc/nginx/includes/macollectivite-common.conf* :
|
||||
|
||||
location /favicon.ico { alias /var/www/html/favicon-macollectivite.ico; }
|
||||
|
||||
location /robots.txt { alias /var/www/html/robots.txt; }
|
||||
|
||||
(le favicon.ico est un copie de
|
||||
[http://www.](http://www.nanterre.fr/uploads/Image/73/SIT_NANTERRE_603_favicon-.ico)macollectivite[.fr/uploads/Image/73/SIT_](http://www.nanterre.fr/uploads/Image/73/SIT_NANTERRE_603_favicon-.ico)macollectivitemacollectivite[_603_favicon-.ico](http://www.nanterre.fr/uploads/Image/73/SIT_NANTERRE_603_favicon-.ico),
|
||||
le robots.txt interdit toute indexation)
|
||||
|
||||
Pour résoudre [#18476](https://dev.entrouvert.org/issues/18476),
|
||||
ajouter ce fichier : */etc/nginx/conf.d/client-max-body-size.conf* avec
|
||||
ce contenu :
|
||||
|
||||
client_max_body_size 200M;
|
||||
|
||||
Il faut éventuellement adapter la configuration du HAProxy pour accepter
|
||||
les grosses requêtes.
|
||||
|
||||
## Mise en place des virtualhost (frontaux HTTP des tenants des composants Publik)
|
||||
|
||||
Le soin est laissé à l'installateur de décider comment poser les
|
||||
virtualhost ci-dessous dans nginx.
|
||||
|
||||
Au niveau de la preprod, le modèle classique a été adopté :
|
||||
|
||||
- un fichier par virtualhost dans */etc/nginx/sites-available/*
|
||||
- des liens symboliques dans */etc/nginx/sites-enabled/* avec un
|
||||
préfixe *10_* permettant un éventuel classement d'autres services
|
||||
avant ou après.
|
||||
|
||||
A noter que **ces fichiers **N**ginx de la **plate-forme de
|
||||
**pré-prod**uction** peuvent être copiés** pour la plate-forme de
|
||||
production, il faudra cependant veiller à la modification du
|
||||
server_name du portail usagers dans le virtualhost "combo".
|
||||
|
||||
### Combo
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name ~^moncompte.* # portail usagers ; selon le nom du site (attention, différent de la pré-prod)
|
||||
~^agents-.*; # portail agents ; selon le nom du site
|
||||
|
||||
include includes/macollectivite-common.conf;
|
||||
|
||||
access_log /var/log/nginx/combo-access.log combined_full;
|
||||
error_log /var/log/nginx/combo-error.log;
|
||||
|
||||
location ~ ^/static/(.+)$ {
|
||||
root /;
|
||||
try_files /var/lib/combo/tenants/$host/static/$1
|
||||
/var/lib/combo/tenants/$host/theme/static/$1
|
||||
/var/lib/combo/collectstatic/$1
|
||||
=404;
|
||||
add_header Access-Control-Allow-Origin *;
|
||||
}
|
||||
|
||||
location ~ ^/media/(.+)$ {
|
||||
alias /var/lib/combo/tenants/$host/media/$1;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://unix:/run/combo/combo.sock;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Forwarded-SSL on;
|
||||
proxy_set_header X-Forwarded-Protocol ssl;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
}
|
||||
|
||||
### Hobo
|
||||
|
||||
Même modèle que Combo :
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
|
||||
server_name ~^hobo-.*;
|
||||
include includes/macollectivite-common.conf;
|
||||
|
||||
access_log /var/log/nginx/hobo-access.log combined_full;
|
||||
error_log /var/log/nginx/hobo-error.log;
|
||||
|
||||
location ~ ^/static/(.+)$ {
|
||||
root /;
|
||||
try_files /var/lib/hobo/tenants/$host/static/$1
|
||||
/var/lib/hobo/tenants/$host/theme/static/$1
|
||||
/var/lib/hobo/collectstatic/$1
|
||||
=404;
|
||||
add_header Access-Control-Allow-Origin *;
|
||||
}
|
||||
|
||||
location ~ ^/media/(.+)$ {
|
||||
alias /var/lib/hobo/tenants/$host/media/$1;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://unix:/run/hobo/hobo.sock;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Forwarded-SSL on;
|
||||
proxy_set_header X-Forwarded-Protocol ssl;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
### Passerelle
|
||||
|
||||
Même modèle que Combo, mais aucune diffusion de /media (il s'agit de
|
||||
données privées dans Passerelle).
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
|
||||
server_name ~^passerelle-.*;
|
||||
include includes/macollectivite-common.conf;
|
||||
|
||||
access_log /var/log/nginx/passerelle-access.log combined_full;
|
||||
error_log /var/log/nginx/passerelle-error.log;
|
||||
|
||||
location ~ ^/static/(.+)$ {
|
||||
root /;
|
||||
try_files /var/lib/passerelle/tenants/$host/static/$1
|
||||
/var/lib/passerelle/tenants/$host/theme/static/$1
|
||||
/var/lib/passerelle/collectstatic/$1
|
||||
=404;
|
||||
add_header Access-Control-Allow-Origin *;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://unix:/run/passerelle/passerelle.sock;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Forwarded-SSL on;
|
||||
proxy_set_header X-Forwarded-Protocol ssl;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
}
|
||||
|
||||
### fargo
|
||||
|
||||
Même modèle que Combo, mais aucune diffusion de /media (il s'agit des
|
||||
fichiers usagers privés dans Fargo).
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
|
||||
server_name ~^portedoc-.*;
|
||||
include includes/macollectivite-common.conf;
|
||||
|
||||
access_log /var/log/nginx/fargo-access.log combined_full;
|
||||
error_log /var/log/nginx/fargo-error.log;
|
||||
|
||||
location ~ ^/static/(.+)$ {
|
||||
root /;
|
||||
try_files /var/lib/fargo/tenants/$host/static/$1
|
||||
/var/lib/fargo/tenants/$host/theme/static/$1
|
||||
/var/lib/fargo/collectstatic/$1
|
||||
=404;
|
||||
add_header Access-Control-Allow-Origin *;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://unix:/run/fargo/fargo.sock;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Forwarded-SSL on;
|
||||
proxy_set_header X-Forwarded-Protocol ssl;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
### Authentic
|
||||
|
||||
Comme Combo, sans diffusion des /media, et en utilisant le nom du
|
||||
service *authentic2-multitenant.*
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
|
||||
server_name ~^connexion-.*;
|
||||
include includes/macollectivite-common.conf;
|
||||
|
||||
access_log /var/log/nginx/authentic2-multitenant-access.log combined_full;
|
||||
error_log /var/log/nginx/authentic2-multitenant-error.log;
|
||||
|
||||
location ~ ^/static/(.+)$ {
|
||||
root /;
|
||||
try_files /var/lib/authentic2-multitenant/tenants/$host/static/$1
|
||||
/var/lib/authentic2-multitenant/tenants/$host/theme/static/$1
|
||||
/var/lib/authentic2-multitenant/collectstatic/$1
|
||||
=404;
|
||||
add_header Access-Control-Allow-Origin *;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://unix:/run/authentic2-multitenant/authentic2-multitenant.sock;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Forwarded-SSL on;
|
||||
proxy_set_header X-Forwarded-Protocol ssl;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
}
|
||||
|
||||
### w.c.s.
|
||||
|
||||
server {
|
||||
|
||||
listen 80;
|
||||
|
||||
server_name ~^demarches-.*;
|
||||
include includes/macollectivite-common.conf;
|
||||
|
||||
access_log /var/log/nginx/wcs-access.log combined_full;
|
||||
error_log /var/log/nginx/wcs-error.log;
|
||||
|
||||
location ~ ^/static/(.+)$ {
|
||||
root /;
|
||||
try_files /var/lib/wcs/$host/static/$1
|
||||
/var/lib/wcs/$host/theme/static/$1
|
||||
/var/lib/wcs/collectstatic/$1
|
||||
/var/lib/wcs-au-quotidien/collectstatic/$1
|
||||
=404;
|
||||
}
|
||||
|
||||
location /qo { alias /usr/share/wcs/qommon/; }
|
||||
location /apache-errors { alias /usr/share/auquotidien/apache-errors/; }
|
||||
|
||||
location /themes {
|
||||
root /;
|
||||
try_files /var/lib/wcs/$host$uri
|
||||
/var/lib/wcs-au-quotidien/$host$uri
|
||||
/usr/share/wcs/$uri
|
||||
=404;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://unix:/var/run/wcs/wcs.sock;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-SSL on;
|
||||
proxy_set_header X-Forwarded-Protocol ssl;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
}
|
||||
}
|
||||
|
||||
## Vérification des réponses de Nginx
|
||||
|
||||
Une fois les virtualhost en place, les sites doivent répondre par des
|
||||
erreurs 404 : ce sont les applications de Publik qui répondent qu'elles
|
||||
n'ont pas encore d'instance liés aux noms prévus.
|
||||
|
||||
C'est tout de même déjà le temps de vérifier :
|
||||
|
||||
- que les certificats HTTPS sont ok,
|
||||
- que haproxy envoie bien sur web1,
|
||||
- que les requêtes arrivent sur les bons virtualhost, par exemple pour
|
||||
fargo on vérifiera que l'accès à
|
||||
[https://portedoc-moncompte.](https://portedoc-moncompte.nanterre.fr/)macollectivite[.fr](https://portedoc-moncompte.nanterre.fr/)
|
||||
provoque une 404 dans */var/log/nginx/fargo-access.log* et aucun
|
||||
message dans */var/log/nginx/fargo-error.log* ; opération à répéter
|
||||
avec tous les autres sites installés.
|
||||
|
||||
|
|
@ -0,0 +1,202 @@
|
|||
# Déploiement des instances
|
||||
|
||||
****Attention le déploiement ne doit être lancé que si TOUS les services
|
||||
ont été testés et répondent des 404 aux adresses prévus
|
||||
****[**https://xxx-moncompte.**](https://xxx-moncompte.nanterre.fr/)**macollectivite**[**.fr/**](https://xxx-moncompte.nanterre.fr/)**.**
|
||||
|
||||
Si ce n'est pas le cas, le déploiement va échouer ; et la reprise sur
|
||||
ces erreurs n'est pas toujours simple.
|
||||
|
||||
## Préparation, création du fichier «recipe»
|
||||
|
||||
Installation des thèmes Publik (incluant le thème pour
|
||||
macollectivite) :
|
||||
|
||||
apt install publik-base-theme
|
||||
|
||||
Création d'un fichier de déploiement
|
||||
*/srv/nfs/publik/scripts/recipe-macollectivite-prod.json*
|
||||
(note : fichier déjà disponible sur l'infra de pré-prod); la ligne
|
||||
"password" est à compléter le mot de passe à communiquer à Entr'ouvert :
|
||||
|
||||
{
|
||||
"variables": {
|
||||
"hobo": "hobo-moncompte.macollectivite.fr",
|
||||
"authentic": "connexion-moncompte.macollectivite.fr",
|
||||
"combo": "moncompte.macollectivite.fr",
|
||||
"combo_agent": "agents-moncompte.macollectivite.fr",
|
||||
"passerelle": "passerelle-moncompte.macollectivite.fr",
|
||||
"wcs": "demarches-moncompte.macollectivite.fr",
|
||||
"fargo": "portedoc-moncompte.macollectivite.fr"
|
||||
},
|
||||
"steps": [
|
||||
{"create-hobo": {
|
||||
"url": "https://${hobo}/"
|
||||
}},
|
||||
{"create-superuser": {
|
||||
"email": "admin+macollectivite@entrouvert.com",
|
||||
"password": "..."
|
||||
}},
|
||||
{"create-authentic": {
|
||||
"url": "https://${authentic}/",
|
||||
"title": "Connexion"
|
||||
}},
|
||||
{"set-idp": { }},
|
||||
{"create-combo": {
|
||||
"url": "https://${combo}/",
|
||||
"title": "Compte citoyen",
|
||||
"template_name": "portal-user"
|
||||
}},
|
||||
{"create-combo": {
|
||||
"url": "https://${combo_agent}/",
|
||||
"slug": "portal-agent",
|
||||
"title": "Portail agent",
|
||||
"template_name": "portal-agent"
|
||||
}},
|
||||
{"create-wcs": {
|
||||
"url": "https://${wcs}/",
|
||||
"title": "Démarches",
|
||||
"template_name": "modele.zip"
|
||||
}},
|
||||
{"create-fargo": {
|
||||
"url": "https://${fargo}/",
|
||||
"title": "Porte-documents"
|
||||
}},
|
||||
{"create-passerelle": {
|
||||
"url": "https://${passerelle}/",
|
||||
"title": "Passerelle"
|
||||
}},
|
||||
{"set-theme": {
|
||||
"theme": "macollectivite"
|
||||
}}
|
||||
]
|
||||
}
|
||||
|
||||
## Lancement du déploiement
|
||||
|
||||
On utilise la commande «cook» proposée par le logiciel «hobo». Cette
|
||||
commande doit impérativement être exécutée par l'utilisateur «hobo», on
|
||||
utilise donc *sudo -u hobo … :*
|
||||
|
||||
# sudo -u hobo hobo-manage cook /srv/nfs/publik/scripts/recipe-macollectivite-prod.json -v 2
|
||||
|
||||
## Vérification du déploiement
|
||||
|
||||
A la fin du déploiement, les logiciels Publik Django packagés doivent
|
||||
avoir déployé les instances dans PostgreSQL (schémas visibles dans
|
||||
chaque base) mais surtout crée le répertoire contenant la configuration
|
||||
du site cible :
|
||||
|
||||
Ce qui est visible dans la plateforme de pré-production doit l'être sur
|
||||
la plate-forme de production, donc on doit voir ceci (en retirant les
|
||||
*preprod-*) :
|
||||
|
||||
# ls -ld /var/lib/*/tenants/*
|
||||
drwxr-xr-x 3 authentic-multitenant authentic-multitenant 120 Jul 12 15:19 /var/lib/authentic2-multitenant/tenants/connexion-preprod-moncompte.macollectivite.fr
|
||||
drwxr-xr-x 5 combo combo 156 Jul 21 00:25 /var/lib/combo/tenants/agents-preprod-moncompte.macollectivite.fr
|
||||
drwxr-xr-x 5 combo combo 4096 Jul 20 10:38 /var/lib/combo/tenants/preprod-moncompte.macollectivite.fr
|
||||
drwxr-xr-x 3 fargo fargo 107 Jul 10 18:19 /var/lib/fargo/tenants/portedoc-preprod-moncompte.macollectivite.fr
|
||||
drwxr-xr-x 3 hobo hobo 81 Apr 18 10:42 /var/lib/hobo/tenants/hobo-preprod-moncompte.macollectivite.fr
|
||||
drwxr-xr-x 3 passerelle passerelle 107 Jul 10 18:19 /var/lib/passerelle/tenants/passerelle-preprod-moncompte.macollectivite.fr
|
||||
|
||||
w.c.s. créé directement une base de données
|
||||
*wcs_demarches_moncompte_macollectivite_fr*
|
||||
accompagnée de son dossier dans */var/lib/wcs-au-quotidien*
|
||||
|
||||
# ls -ld /var/lib/wcs-au-quotidien/*
|
||||
drwxr-xr-x 7 root root 66 Apr 13 15:55 /var/lib/wcs-au-quotidien/collectstatic
|
||||
-rw------- 1 root root 50 Apr 13 15:55 /var/lib/wcs-au-quotidien/config.pck
|
||||
drwxr-xr-x 22 wcs-au-quotidien wcs-au-quotidien 4096 Jul 10 18:19 /var/lib/wcs-au-quotidien/demarches-preprod-moncompte.macollectivite.fr
|
||||
drwxr-xr-x 2 root root 47 Apr 13 15:59 /var/lib/wcs-au-quotidien/skeleton.invalid
|
||||
drwxr-xr-x 2 root root 23 Apr 13 16:00 /var/lib/wcs-au-quotidien/skeletons
|
||||
|
||||
Si un répertoire manque, le déploiement a rencontré un soucis :
|
||||
contacter le support Entr'ouvert
|
||||
|
||||
Si les répertoires sont présents, alors :
|
||||
|
||||
- https://moncompte.macollectivite.fr : doit afficher une page "Votre installation de Combo
|
||||
fonctionne (...) Le site est actuellement vide (…)",
|
||||
- https://agents-moncompte.macollectivite.fr même chose,
|
||||
- https://connexion-moncompte.macollectivite.fr : doit proposer une
|
||||
page de connexion avec un design proche de la pré-prod,
|
||||
- https://passerelle-moncompte.macollectivite.fr : doit re-diriger
|
||||
vers le site connexion-moncompte précédent,
|
||||
- https://hobo-moncompte.macollectivite.fr : même chose, redirection vers connexion-moncompte,
|
||||
- https://portedoc-moncompte.macollectivite.fr : même chose, redirection vers connexion-moncompte,
|
||||
- https://demarches-moncompte.macollectivite.fr : doit rediriger vers
|
||||
https://moncompte.macollectivite.fr/.
|
||||
|
||||
Si un des sites ne répond pas comme prévu : contacter le support
|
||||
Entr'ouvert.
|
||||
|
||||
## Configuration de la gestion des identités
|
||||
|
||||
### Configuration de l'authentification LDAP
|
||||
|
||||
Création d'un fichier
|
||||
*/var/lib/authentic2-multitenant/tenants/connexion-moncompte.macollectivite.fr/settings.json.*
|
||||
|
||||
(Conseil : prendre modèle sur le fichier identique en pré-prod et
|
||||
adapter les paramètres LDAP).
|
||||
|
||||
{
|
||||
"ACCOUNT_ACTIVATION_DAYS": 1,
|
||||
"PASSWORD_RESET_TIMEOUT_DAYS": 1,
|
||||
"A2_REGISTRATION_EMAIL_IS_UNIQUE": true,
|
||||
"A2_EMAIL_IS_UNIQUE": true,
|
||||
"LDAP_AUTH_SETTINGS": [
|
||||
{
|
||||
"realm": "mairie-macollectivite.fr",
|
||||
"url": ["ldap://v-dc1.vnan.intra/", "ldap://v-dc2.vnan.intra/"],
|
||||
"basedn": "OU=macollectivite,DC=vnan,DC=intra",
|
||||
"binddn": "xxxxx@vnan.intra",
|
||||
"bindpw": "xxxxx",
|
||||
"user_filter": "(&(objectClass=user)(sAMAccountType=805306368)(|(mail=%s)(samaccountname=%s))(|(memberOf=CN=.LD_Agents_BO,OU=macollectivite,DC=vnan,DC=intra)(memberOf=CN=.LD_Agents_Publik,OU=macollectivite,DC=vnan,DC=intra)))",
|
||||
"username_template": "{samaccountname[0]}@{realm}",
|
||||
"update_username": true,
|
||||
"active_directory": true,
|
||||
"attributes": [
|
||||
"mail",
|
||||
"sAMAccountName",
|
||||
"cn",
|
||||
"sn",
|
||||
"givenName",
|
||||
"userPrincipalName"
|
||||
],
|
||||
"external_id_tuples": [["samaccountname"],["dn:noquote"]],
|
||||
"shuffle_replicas": false,
|
||||
"require_cert": "never",
|
||||
"use_tls": false,
|
||||
"set_mandatory_roles": ["Agent"],
|
||||
"user_can_change_password": false
|
||||
},
|
||||
{
|
||||
"realm": "entrouvert.com",
|
||||
"url": "ldaps://ldap.entrouvert.org/",
|
||||
"basedn": "o=entrouvert,ou=companies,o=libre-entreprise",
|
||||
"user_filter": "uid=%s",
|
||||
"username_template": "{uid[0]}@{realm}",
|
||||
"groupsu": ["cn=ldapadmins,ou=groups,o=entrouvert,ou=companies,o=libre-entreprise"],
|
||||
"groupstaff": ["cn=ldapadmins,ou=groups,o=entrouvert,ou=companies,o=libre-entreprise"],
|
||||
"group_filter": "(&(uniqueMember={user_dn})(objectClass=legroup))",
|
||||
"create_group": true,
|
||||
"attributes": [ "uid" ],
|
||||
"set_mandatory_groups": ["LDAP Entrouvert"],
|
||||
"user_can_change_password": false
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Lancer un import manuel des comptes (pour ne pas attendre le cron)
|
||||
avec :
|
||||
|
||||
# sudo -u authentic-multitenant authentic2-multitenant-manage tenant_command sync-ldap-users -d connexion-moncompte.macollectivite.fr
|
||||
|
||||
Cette commande ne doit rien afficher (ce qui signifie que tout s'est
|
||||
bien déroulé), les comptes doivent être visibles dans
|
||||
[https://connexion-moncompte.](https://connexion-moncompte.nanterre.fr/manage/users/)macollectivite[.fr/manage/users/](https://connexion-moncompte.nanterre.fr/manage/users/)
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,193 @@
|
|||
# Paramétrage du partage de fichiers
|
||||
|
||||
|
||||
## Démarrer les services uniquement après le montage de /srv/nfs
|
||||
|
||||
Ajouter pour les services liés à Publik un supplément
|
||||
*RequiresMountsFor=* à la description du service
|
||||
|
||||
Exemple pour Combo :
|
||||
|
||||
cat /etc/systemd/system/combo.service.d/wait-for-mnt-data.conf
|
||||
|
||||
[Unit]
|
||||
|
||||
RequiresMountsFor=/srv/nfs
|
||||
|
||||
Faire de même avec :
|
||||
|
||||
- les services systemd-isés qui ont besoin de */srv/nfs* : Combo,
|
||||
Fargo, Passerelle.
|
||||
- les services bientôt systemd-isés (avant fin 2017, donc prévoir dès
|
||||
maintenant le supplément) : authentic2-multitenant, hobo,
|
||||
hobo-agent, wcs
|
||||
|
||||
|
||||
|
||||
# Mise en place de l’équilibrage de la charge
|
||||
|
||||
|
||||
## Vue générale
|
||||
|
||||
Le principe est de déplacer vers le partage de fichier (NFS) les
|
||||
éléments de configuration de web1 :
|
||||
|
||||
- les répertoires de configuration */etc/xxx* des composants Publik,
|
||||
copiés vers */srv/nfs/publik/etc/xxx,*
|
||||
- les données */var/lib/xxx* de ces mêmes composants, copiés vers
|
||||
*/srv/nfs/publik/var-lib/xxx,*
|
||||
- la configuration nginx ; copiés vers */srv/nfs/publik/etc/nginx/xxx*
|
||||
et */srv/nfs/publik/var-www/html.*
|
||||
|
||||
Sur **web1 et sur web2**, on utilise alors des liens symboliques :
|
||||
|
||||
- Configuration : */etc/xxx* → */srv/nfs/publik/etc/xxx,*
|
||||
- Données : */var/lib/xxx* → */srv/nfs/publik/var-lib/xxx,*
|
||||
- Configuration nginx.
|
||||
|
||||
### Détail des opérations
|
||||
|
||||
Création des répertoires partagés :
|
||||
|
||||
- configurations: */srv/nfs/publik/etc*,
|
||||
- données des tenants: */srv/nfs/publik/var-lib/,*
|
||||
- éléments web (favicon, robots.txt): */srv/nfs/publik/var-www/,*
|
||||
|
||||
Déplacement des configurations et données des services Publik
|
||||
|
||||
1. Service *wcs*
|
||||
|
||||
service wcs stop
|
||||
mv /etc/wcs /srv/nfs/publik/etc/
|
||||
ln -sf /srv/nfs/publik/etc/wcs /etc/wcs
|
||||
mv /var/lib/wcs /srv/nfs/publik/var-lib/
|
||||
ln -sf /srv/nfs/publik/var-lib/wcs /var/lib/wcs
|
||||
service wcs start
|
||||
|
||||
2. Service *combo*
|
||||
|
||||
service combo stop
|
||||
mv /etc/combo /srv/nfs/publik/etc/
|
||||
ln -sf /srv/nfs/publik/etc/combo /etc/combo
|
||||
mv /var/lib/combo /srv/nfs/publik/var-lib/
|
||||
ln -sf /srv/nfs/publik/var-lib/combo /var/lib/combo
|
||||
service combo start
|
||||
|
||||
3. Même procédure avec *fargo*
|
||||
4. Même procédure avec *passerelle*
|
||||
5. Même procédure avec *hobo*
|
||||
6. Même procédure avec *authentic2-multitenant*
|
||||
7. Configuration hobo-agent
|
||||
|
||||
service supervisor stop
|
||||
mv /etc/hobo-agent /srv/nfs/publik/etc/
|
||||
ln -sf /srv/nfs/publik/etc/hobo-agent /etc
|
||||
service supervisor start
|
||||
|
||||
Autres partages via NFS :
|
||||
|
||||
1. Configurations nginx
|
||||
|
||||
service nginx stop
|
||||
mkdir /srv/nfs/publik/etc/nginx
|
||||
cd /etc/nginx
|
||||
mv conf.d includes sites-available sites-enabled /srv/nfs/publik/etc/nginx/
|
||||
ln -sf /srv/nfs/publik/etc/nginx/* .
|
||||
service nginx start
|
||||
|
||||
2. Éléments web statiques
|
||||
|
||||
cd /var/www
|
||||
mv html /srv/nfs/publik/var-www/
|
||||
ln -sf /srv/nfs/publik/var-www/html .
|
||||
|
||||
3. APT : dépôts et préférences backports
|
||||
|
||||
mkdir /srv/nfs/publik/etc/apt
|
||||
cd /etc/apt
|
||||
mv sources.list.d preferences.d /srv/nfs/publik/etc/apt/
|
||||
ln -sf /srv/nfs/publik/etc/apt/* .
|
||||
|
||||
### Opérations sur web2
|
||||
|
||||
**Attention** : l'UID et le GUID de l'utilisateur "web" doit être
|
||||
identique.
|
||||
|
||||
On prépare les répertoires de configuration et de données des composants
|
||||
Publik **avant** leur installation :
|
||||
|
||||
1. Service wcs
|
||||
|
||||
ln -sf /srv/nfs/publik/etc/wcs /etc/wcs
|
||||
ln -sf /srv/nfs/publik/var-lib/wcs /var/lib/wcs
|
||||
|
||||
2. Service *combo*
|
||||
|
||||
ln -sf /srv/nfs/publik/etc/combo /etc/combo
|
||||
ln -sf /srv/nfs/publik/var-lib/combo /var/lib/combo
|
||||
|
||||
3. Même procédure avec *fargo*
|
||||
4. Même procédure avec *passerelle*
|
||||
5. Même procédure avec *hobo*
|
||||
6. Même procédure avec *authentic2-multitenant*
|
||||
7. Configuration hobo-agent
|
||||
|
||||
ln -sf /srv/nfs/publik/etc/hobo-agent /etc/hobo-agent
|
||||
|
||||
On utilise aussi les autres configurations partagées via NFS :
|
||||
|
||||
1. Configurations nginx
|
||||
|
||||
service nginx stop
|
||||
cd /etc/nginx
|
||||
rm -rf conf.d includes sites-available sites-enabled
|
||||
ln -sf /srv/nfs/publik/etc/nginx/* .
|
||||
service nginx start
|
||||
|
||||
2. Éléments web statiques
|
||||
|
||||
cd /var/www
|
||||
rm -rf html
|
||||
ln -sf /srv/nfs/publik/var-www/html .
|
||||
|
||||
3. APT : dépôts et préférences backports
|
||||
|
||||
cd /etc/apt
|
||||
rm -rf sources.list.d preferences.d
|
||||
ln -sf /srv/nfs/publik/etc/apt/* .
|
||||
|
||||
On peut alors lancer l'installation des composants packagés. Attention,
|
||||
lors de cette étape, toujours refuser les éventuelles demandes de
|
||||
modification des fichiers de configuration (on utilise ceux partagés par
|
||||
NFS) :
|
||||
|
||||
apt install wcs wcs-au-quotidien
|
||||
apt install combo
|
||||
apt install fargo
|
||||
apt install passerelle
|
||||
apt install hobo
|
||||
apt install authentic2-multitenant
|
||||
apt install hobo-agent
|
||||
|
||||
Nous comparons la liste des paquets installés entre web1 et web2
|
||||
(obtenue avec *dpkg -l*), et installons les paquets suivants :
|
||||
|
||||
- python-authentic2-auth-fc,
|
||||
- python-combo-plugin-macollectivite,
|
||||
- publik-base-theme,
|
||||
- gettext
|
||||
|
||||
## Désactivation des *crons* Publik sur web2
|
||||
|
||||
Il est **très important** de désactiver les crons de Publik sur web2,
|
||||
pour ne pas avoir de compétition/conflit avec ceux déjà en place sur
|
||||
web1, puisqu'ils agissent sur les mêmes données.
|
||||
|
||||
Il faut donc poser des # devant les lignes des crons suivants :
|
||||
|
||||
- */etc/cron.d/wcs,*
|
||||
- */etc/cron.d/authentic2-multitenant,*
|
||||
- */etc/cron.d/passerelle,*
|
||||
- */etc/cron.hourly/python-combo,*
|
||||
- */etc/cron.hourly/fargo.*
|
||||
|
1272
installation.md
1272
installation.md
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue