Outils pour utilisateurs

Outils du site


services:http:gurvant

Différences

Ci-dessous, les différences entre deux révisions de la page.


services:http:gurvant [2019/09/10 17:55] (Version actuelle) – créée - modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== HTTP sur gurvant ======
  
 +Implémentation utilisée : nginx
 +===== Sites servis =====
 +
 +Sauf exception, tout est servi en HTTPS par défaut. Voir [[::ssl]].
 +
 +==== Site principal de gifon ====
 +[[https://grifon.fr]] \\
 +
 +Il s’agit d’un wordpress. Il existe un utilisateur particulier permettant de le mettre à jour, nginx n’a pas le droit d’écrire dans le dossier de wordpress.
 +
 +=== Doc de déploiement ===
 +
 +On crée l’utilisateur voulu :
 +<code>useradd -rmd /var/www/wordpress wordpress</code>
 +
 +On rapatrie le wordpress de dev sur gurvant, là c’est laissé à la discrétion de l’admin, ça importe peu.
 +
 +On autorise wordpress à lire et écire, nginx à lire, et le reste à aller se faire voir. Notons que sous debian, nginx tourne sous l’utilisateur www-data.
 +<code>chown -R wordpress:www-data /var/www/wordpress/
 +chmod -R o-rwx /var/www/wordpress/
 +chmod -R g-rwx /var/www/wordpress/
 +chmod g+rX /var/www/wordpress/
 +</code>
 +
 +On installe wp-cli afin d’avoir un truc à peu près utilisable :
 +<code>
 +curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
 +php wp-cli.phar --info
 +chmod +x wp-cli.phar
 +mv wp-cli.phar /usr/local/bin/wp
 +</code>
 +
 +On crée l’utilisateur MySQL pour wordpress (évidemment, ce n’est pas le vrai mot de passe ;). Le mot de passe est à renseigner dans /var/www/wordpress/wp-config.php
 +<code>CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'password';
 +GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, INDEX, LOCK TABLES, REFERENCES, CREATE TEMPORARY TABLES, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, EXECUTE, ALTER ROUTINE ON wordpress.* TO 'wordpress'@'localhost';
 +CREATE DATABASE wordpress;
 +</code>
 +
 +On importe la DB de dev (la méthode de rapatriement est libre) :
 +<code>
 +mysql -u wordpress -p wordpress < /home/alarig/wordpress.sql 
 +</code>
 +
 +Wordpress fait un 301 (redirection permanante) si le domaine demandé ne correspond à celui dans la DB. On va donc changer ça.
 +<code>
 +root ~ # su - wordpress
 +$ wp option update siteurl https://grifon.fr
 +$ wp option update home https://grifon.fr
 +</code>
 +
 +Et enfin, on met à jour la conf nginx :
 +<code>
 +cp /etc/nginx/sites-available/www /etc/nginx/sites-available/www.git
 +vim /etc/nginx/sites-available/www
 +server {
 + listen 80;
 + listen [::]:80;
 + server_name grifon.fr www.grifon.fr;
 + access_log /var/log/nginx/grifon.fr.access.log;
 +
 +# return 301 https://grifon.fr$request_uri;
 + location / {
 + root /var/www/letsencrypt;
 + try_files $uri @redirect;
 + }
 +
 + location @redirect {
 + return 301 https://$server_name$request_uri;
 + }
 +}
 +
 +server {
 + listen 443 ssl;
 + listen [::]:443 ssl;
 + server_name www.grifon.fr;
 +
 + ssl_certificate /etc/ssl/nginx/grifon.fr.crt;
 + ssl_certificate_key /etc/ssl/nginx/grifon.fr.key;
 + include ssl/ssl-bourrin.conf;
 +
 + return 301 https://grifon.fr$request_uri;
 +}
 +
 +server {
 + listen 443 ssl;
 + listen [::]:443 ssl;
 + server_name grifon.fr;
 + access_log /var/log/nginx/grifon.fr.access.log;
 +
 + ssl_certificate /etc/ssl/nginx/grifon.fr.crt;
 + ssl_certificate_key /etc/ssl/nginx/grifon.fr.key;
 + include ssl/ssl-bourrin.conf;
 +
 + root /var/www/wordpress/;
 + index index.php index.html;
 +
 + location / {
 + try_files $uri $uri/ /index.php?$args;
 + }
 +
 +        # pass the PHP scripts to FastCGI server listening on /var/run/php5-fpm.sock
 +        location ~ \.php$ {
 +                #try_files $uri $uri/ /index.php?q=$uri&$args =404;
 +                fastcgi_pass unix:/var/run/php5-fpm.sock;
 +                fastcgi_index index.php;
 +                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 +                include fastcgi_params;
 +
 +        }
 +
 + location /config/ {
 + deny all;
 + return 403;
 + }
 +}
 +</code>
 +
 +=== Doc de mise à jour ===
 +== Sauvegarder le dossier ==
 +<code>cd /var/www
 +rsync -av --progress wordpress wordpress-$(date +%F)</code>
 +
 +== Sauvegarder la base de données ==
 +Pour avoir les informations de la base (utilisateur, hôte, mot de passe, etc.) :
 +<code>grep DB /var/www/wordpress/wp-config.php</code>
 +
 +Puis dump de la base :
 +<code>mysqldump -u wordpress -h constance.grif -p wordpress > /var/www/wordpress-$(date +%F)/wordpress-$(date +%F).sql</code>
 +
 +== Mise à jour en elle-même ==
 +<code># su - wordpress
 +$ wp core update
 +$ wp core update-db
 +$ wp core language update
 +$ wp plugin update --all</code>
 +
 +
 +
 +
 +==== vHost par défaut ====
 +[[https://gurvant.grifon.fr/]] \\
 +Sert pour afficher les stats [[https://gurvant.grifon.fr/awstats.pl|awstats]].
 +
 +=== Interface web de l’hyperviseur ===
 +[[https://hv-access.grifon.fr/#v1:0:18:4::::::]] \\
 +Reverse proxy vers erispoe avec authentification par x509
 +<file>
 + # on vérifie que le certificat est valide (date d'expiration, etc.)
 + # un code 412 sera retourné s'il y a une erreur sur le certificat (expiré)
 + if ( $ssl_client_verify != SUCCESS ) {
 + return 412;
 + }
 + # Si le code 403 est retourné, c'est qu'un certificat qui n'est pas géré par
 + # grifon qui a été envoyé
 + if ( $ssl_client_s_dn !~ /(O=GRIFON)/ ) {
 + return 403;
 + }
 + # Su le code 402 est retourné, c'est que le certificat ne permet pas l'accès à cette 
 + # interface précise. 
 + if ( $ssl_client_s_dn !~ /(OU=VM)/ ){
 + return 402;
 + }
 +</file>
 +Voir [[https://grifon.fr/adminsys/cacert-client.html]] pour la gestion des certificats clients.
 +
 +=== Interface web de gestion des adhérents ===
 +Idem interface hyperviseur (en cours de déploiement).
 +
 +[[https://adherents.grifon.fr]]
 +=== IPAM ===
 +[[https://ipam.grifon.fr/?page=login]] \\
 +[[https://github.com/phpipam/phpipam|phpIPAM]] pour la gestion des IPs.
 +
 +=== mirror ===
 +[[http://mirror.grifon.fr]] \\
 +vHost servi en HTTP seulement, cache pour les paquets debian et debian. \\
 +Voir également [[services:apt-cacher-ng]]
 +
 +Simple reverse proxy :
 +<file>
 + location / {
 + proxy_pass http://127.0.0.1:3142/;
 + proxy_set_header X-Forwarded-Proto $scheme;
 + proxy_set_header Host $http_x_forwarded_host;
 +        proxy_set_header Upgrade $http_upgrade;
 +         proxy_set_header Connection "upgrade";
 +        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 +         proxy_read_timeout 3m;
 +        proxy_send_timeout 3m;
 + }
 +</file>
 +
 +Il peut être intéressant d’empêcher l’accès à la page d’administration. Ça évitera par exemple qu’un petit malin vide tout le cache ; ce qui est dommage quand on met en place un cache…
 +<file>
 + location /acng-report.html {
 + deny all;
 + }
 +</file>
 +
 +=== listes ===
 +[[https://lists.grifon.fr]] \\
 +Interface web de mailman
 +
 +Fonctionne avec un mélange de cgi et d’aliases en fonction de la location :
 +<file>
 +        location / {
 +                rewrite ^/$ $1/listinfo permanent;
 +
 +                fastcgi_split_path_info ^(/[^/]*)(.*)$;
 +                fastcgi_pass unix:/var/run/fcgiwrap.socket;
 +                include /etc/nginx/fastcgi.conf;
 +                fastcgi_param PATH_INFO         $fastcgi_path_info;
 +                fastcgi_param PATH_TRANSLATED   $document_root$fastcgi_path_info;
 +        }
 +
 +        location /mailman {
 +                root    /usr/lib/cgi-bin;
 +                fastcgi_split_path_info (^/mailman/[^/]+)(/.*)$;
 +                fastcgi_pass            unix:/var/run/fcgiwrap.socket;
 +                include                 /etc/nginx/fastcgi.conf;
 +                fastcgi_param PATH_INFO $fastcgi_path_info;
 +                fastcgi_param SCRIPT_FILENAME   $document_root$fastcgi_script_name;
 +                if ($request_method = 'POST') {
 +                        add_header 'Access-Control-Allow-Origin' '*';
 +                }
 +        }
 +
 +        location /images/mailman {
 +                alias /var/lib/mailman/icons;
 +        }
 + 
 +        location /pipermail {
 +                alias /var/lib/mailman/archives/public;
 +                autoindex on;
 +        }
 +</file>
 +
 +=== monitoring ===
 +[[https://monitoring.grifon.fr/|shinken]], 
 +[[https://monitoring.grifon.fr/munin/|munin]] et [[https://monitoring.grifon.fr/librenms/|LibreNMS]].
 +
 +== shinken ==
 +Reverse proxy sur le daemon http de shinken :
 +<file>
 +        # Serve static content directly
 +        location /static/(.*\/)? {
 +                        try_files htdocs/$uri plugins/$1/htdocs/$uri @webui;
 +                }
 +
 +        location @webui {
 +                        #root /var/lib/shinken/modules/webui2/;
 +                        root /usr/share/shinken-mod-webui/;
 +                }
 +
 +
 +        # Redirection
 +        location / {
 +                # Set the adequate variables so that the WebUI will
 +                # know what hostname it has, this is useful for redirects
 +                proxy_set_header   X-Real-IP $remote_addr;
 +                proxy_set_header   Host      $http_host;
 +                proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
 +                proxy_set_header   X-Forwarded-Proto $scheme;
 +
 +                # Replace 7767 (default) by the port your shinken WebUI is listening on.
 +                proxy_pass http://localhost:7767;
 +                proxy_read_timeout  60;
 +
 +                proxy_redirect http://localhost:7767 https://monitoring.grifon.fr:443;
 +        }
 +</file>
 +
 +== munin ==
 +cgi vers le script de munin :
 +<file>
 +        # munin
 +        location /munin/ {
 +                alias /var/cache/munin/www/;
 +        }
 +
 +        location /munin/static/ {
 +                alias /etc/munin/static/;
 +                expires 31d;
 +        }
 +
 +        # spawn-fcgi -s /var/run/munin/fcgi-graph.sock -U www-data -u www-data -g www-data /usr/lib/munin/cgi/munin-cgi-graph
 +        location /munin-cgi/ {
 +                fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*);
 +                fastcgi_param PATH_INFO $fastcgi_path_info;
 +                fastcgi_pass unix:/var/run/munin/fcgi-graph.sock;
 +                include fastcgi_params;
 +        }
 +</file>
 +
 +== LibreNMS ==
 +
 +[[http://www.librenms.org/|LibreNMS]] est une application web en PHP qui sait prendre du SNMP d’un côté et sortir de jolis graphs de l’autre.
 +
 +Si on suit la doc officielle, il faut créer un vHost spécial pour LibreNMS, mais ça veut dire un certificat en plus et une redirection HTTP → HTTPS en plus. Et comme je suis feignant, j’ai pas envie. \\
 +J’ai donc légèrement modifié la conf nginx pour l’utiliser dans le vHost de monitoring. Le premier bloc pour PHP est à mettre avant celui déjà utilisé s’il y en a un.
 +
 +<file>
 +        # php configuration for librenms
 +        location ~ /librenms/(.*)\.php {
 +                fastcgi_pass unix:/var/run/php5-fpm.sock;
 +              fastcgi_index index.php;
 +              include fastcgi.conf;
 + fastcgi_split_path_info ^(.+\.php)(/.+)$;
 + proxy_intercept_errors on;
 + fastcgi_intercept_errors on;
 +       }
 + location ~ /\.ht {
 + deny all;
 + }
 +
 + location /librenms/ {
 + try_files $uri $uri/ @librenms;
 + }
 +
 + location @librenms {
 + rewrite api/v0(.*)$ /librenms/api_v0.php/$1 last;
 + rewrite ^(.+)$ /librenms/index.php/$1 last;
 + }
 +</file>
 +
 +
 +=== passbolt ===
 +[[https://passbolt.grifon.fr]] \\
 +Gestionnaire de mots de passes avec GPG en JS côté navigateur.
 +
 +=== travaux ===
 +[[https://travaux.grifon.fr]] \\
 +Flyspray pour la gestion des tâches
 +
 +=== wiki ===
 +Ce présent wiki. \\
 +Utilisation du paquet debian, configuration sans base de données.
services/http/gurvant.txt · Dernière modification : 2019/09/10 17:55 de 127.0.0.1