Mode d'emploi pour l'installation d'une machine Publik. Il s'agit d'installer la solution sur une seule machine (physique ou virtuelle).
Cependant, sur le canevas de cette documentation,chaque composant peut également être installé sur une machine dédiée : il faut alors ajuster les règles de pare-feu et les connexions AMQP (exercice laissé au lecteur à ce stade).
Système d'exploitation Debian 7.x (Wheezy) installé en mode minimal.
Sources APT:
deb http://httpredir.debian.org/debian/ wheezy main deb http://security.debian.org/ wheezy/updates main deb http://ftp.fr.debian.org/debian wheezy-updates main deb http://ftp.fr.debian.org/debian wheezy-backports main deb http://www.rabbitmq.com/debian/ testing main deb http://deb.entrouvert.org/ wheezy mainInstallation des paquets «couches basses» :
Dans la zone choisie :
portail A .... backoffice CNAME xxx connexion CNAME xxx demarches CNAME xxx passerelle CNAME xxx hobo CNAME xxx
Note : dans la suite du document, l'installation est faite dans la zone «example.net»
En tant qu'utilisateur postgres
:
postgres@xxx$ createuser -SDR hobo ; createdb -O hobo hobo postgres@xxx$ createuser -SDR authentic-multitenant ; createdb -O authentic-multitenant authentic2_multitenant postgres@xxx$ createuser -SDR combo ; createdb -O combo combo postgres@xxx$ createuser -SDR passerelle ; createdb -O passerelle passerelle postgres@xxx$ createuser -SdR wcs ; createdb -O wcs wcs_demarches_example_net
apt-get install -t wheezy-backports erlang-nox
Configuration nginx depuis ce modèle :
# nginx template hobo server { listen 443 ssl; server_name hobo.*; # indiquer ici le ou les noms des instances ssl_certificate /etc/ssl/certs/cert.pem; # un certificat couvrant tous les noms ssl_certificate_key /etc/ssl/private/cert.key; access_log /var/log/nginx/hobo-access.log combined; error_log /var/log/nginx/hobo-error.log; location ~ ^/static/(.+)$ { root /; try_files /var/lib/hobo/tenants/$host/static/$1 /var/lib/hobo/tnenats/$host/theme/static/$1 /var/lib/hobo/collectstatic/$1 =404; } location ~ ^/media/(.+)$ { alias /var/lib/combo/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; } } # catchall http → https server { listen 80; server_name hobo.*; # indiquer ici le ou les noms des instances access_log /var/log/nginx/hobo-access.log combined; error_log /var/log/nginx/hobo-error.log; return 301 https://$host$request_uri; }
Lancement de hobo (provoque l'initialisation de la base):
root@xxx# service hobo restart
rabbitmq
¶# zcat /usr/share/doc/hobo/rabbitmq.config.example.gz > /etc/rabbitmq/rabbitmq.config
Modifications SSL dans /etc/rabbitmq/rabbitmq.config:
… {ssl_options, [{certfile, "/etc/ssl/certs/wildcard.dev.entrouvert.org.pem"}, {keyfile, "/etc/ssl/private/wildcard.dev.entrouvert.org.key"}, {versions, ['tlsv1.2', 'tlsv1.1']}]} …
Puis relancer le service
root@xxx# service rabbitmq-server restart
Création d'un utilisateur hobo dans rabbitmq:
root@xxx# rabbitmqctl add_user hobo <password> root@xxx# rabbitmqctl set_permissions hobo ".*" ".*" ".*"
Configuration dans /etc/hobo-agent/settings.py
est laissée telle quelle:
BROKER_URL = 'amqp://' AGENT_HOST_PATTERNS = None
Lancement du processus authentic2:
# service authentic2-multitenant restart
Configuration nginx inspirée de celle de hobo : remplacer «hobo» par «authentic2-multitenant»
Désactivation de wcs au profit de wcs-au-quotidien
root@xxx# update-rc.d wcs disable root@xxx# update-rc.d wcs-au-quotidien enable root@xxx# service wcs stop root@xxx# service wcs-au-quotidien restart
Configuration nginx, sur modèle hobo mais en mode SCGI au lieu de proxy_pass
:
(...) location /qo { alias /usr/share/wcs/qommon/; } location /apache-errors { alias /usr/share/auquotidien/apache-errors/; } location /themes { root /; try_files /var/lib/wcs-au-quotidien/$host$uri /usr/share/wcs/$uri =404; } location / { include scgi_params; scgi_pass localhost:3001; scgi_param SCRIPT_NAME ''; scgi_param PATH_INFO $uri; scgi_param HTTPS yes; } (...)
Création des sites nginx (modèle hobo, s/hobo/combo/)
Démarrage:
root@xxx# service combo restart
Création un site nginx (modèle hobo, s/hobo/passerelle/)
Démarrage:
root@xxx# service passerelle restart
Créer un fichier «recipe-example.json» qui va décrire les instances à déployer (remplacer les «example») :
{ "variables": { "hobo": "hobo.example.net", "authentic": "connexion.example.net", "combo": "portail.example.net", "combo_agent": "backoffice.example.net", "passerelle": "passerelle.example.net", "wcs": "demarches.example.net" }, "steps": [ {"create-hobo": { "url": "https://${hobo}/" }}, {"create-superuser": { "email": "admin@example.net", "password": "example" }}, {"create-authentic": { "url": "https://${authentic}/", "title": "Connexion" }}, {"set-idp": { }}, {"create-combo": { "url": "https://${combo}/", "title": "Compte usager", "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" }}, {"create-passerelle": { "url": "https://${passerelle}/", "title": "Passerelle" }}, {"set-theme": { "theme": "publik" }} ] }
# sudo -u hobo hobo-manage cook /path/to/recipe-example.json
La commande «cook» attend 30 secondes après chaque déploiement : si le déploiement prend trop de temps (machine lente), il faut relancer la commande autant de fois que nécessaire.
Pour l'instant la création d'une instance wcs ne passe pas automatiquement en mode SQL. Pour l'activer :
[options]
de /var/lib/wcs-au-quotidien/demarches.example.net/site-options.cfg
:# extrait de /var/lib/wcs-au-quotidien/demarches.example.net/site-options.cfg [options] postgresql = true ... autre options ...
# sudo -u wcs-au-quotidien wcsctl -f /etc/wcs/wcs-au-quotidien.cfg convert-to-sql --dbname=wcs_demarches_example_net demarches.example.net