Bon, bah ça c'est fait. 75M€ (à la louche). Next.
rpcdebug : pratique pour debug du NFS (j'ai testé côté serveur seulement).
rpcdebug -m nfsd -s /flag/
où flag est dans "all auth export fh fileop lockd proc repcache sock svc xdr"
Après les infos sont dans les logs, ou tout simplement avec dmesg.
Occupation d'une soirée, d'une partie de matinée et d'une après-midi : passer de Drupal7 à Pelican. C'est fait. Ouf.
Petit outil livré avec apache pour benchmark un serveur web, avec stats assez lisibles à la fin.
Perso je l'ai attaqué comme ça (pour avoir une page avec accès BDD) :
ab -k -c 100 -n 1000 https://strasweb.fr/actualite/
Et puis à la fin pour nettoyer un peu les kilomètres de log, à coup de 1000 requêtes ça va vite :
sed -i -E '/(ApacheBench|server-status)/d' /var/log/apache2/access.log
EDIT: /!\ attention cela change le fichier (numéro d'inode en tous cas) et après apache a plus l'air de loguer… il faut le relancer a priori…
Création d'un réseau guest sur mon Netgear WNR3500L v2 flashé avec TomatoUSB, tout fonctionne (coupe deux fois les connexions, au VLAN car reboot comme prévu mais aussi au moment de créer le br1).
Je n'ai pas eu à jouer avec iptables comme demandé : ça fonctionne comme je veux de base (sortir vers l'extérieur autorisé, passer entre les réseaux internes bloqué). Ça se vérifie, les compteurs iptables augmentent bien un par seconde avec des ping de test (guest => principal, principal => guest, guest => dehors) :
355 29820 DROP all -- br1 br0 anywhere anywhere
=> le 355 augmente
46 3864 DROP all -- br0 br1 anywhere anywhere
=> le 46 augmente
40 3360 ACCEPT all -- br1 any anywhere anywhere
=> le 40 augmente
Voila voila, je suis prêt pour quand des gens viendront avec un win10 et que j'oserai pas dire que non mais je donne pas mon mot de passe à 'crosoft :P
Là j'en donnerai un autre…
Les expressions (if etc.) dans apache 2.4 ont changé (depuis 2.3.xx apparemment). Voici la nouvelle doc :)
Setup de php-fpm avec apache 2.4 : faisable mais pas immédiat.
En fait selon les sources on n'a pas les mêmes infos, en particulier concernant le lien entre apache et fpm : socket unix ou TCP ?
Ici (http://www.vincentliefooghe.net/content/configuration-apache-24-php-fpm) on lit que les socket unix sont pas dispo, dans la doc shaarliée que si. D'autres (https://bz.apache.org/bugzilla/show_bug.cgi?id=54101 en bas) disent qu'il faut donner le chemin du document_root à chaque vhost (donc chiant).
Au final en compilant avec encore une autre source (http://z-issue.com/wp/apache-2-4-the-event-mpm-php-via-mod_proxy_fcgi-and-php-fpm-with-vhosts/) on obtient quelque chose de satisfaisant :
La seule chose à faire donc, à part activer les modules apache, serait de créer une fichier /etc/apache2/conf-available/php5-fpm.conf en mettant :
<FilesMatch ".php$">
SetHandler "proxy:unix:///var/run/php5-fpm.sock|fcgi://www/"
</FilesMatch>
<Proxy fcgi://www/>
</Proxy>
et de l'activer : a2enconf php5-fpm
Ici, "www" est le nom du pool fpm, défini par défaut à l'installation du paquet.
En tous cas chez moi ça marche comme ça, avec le MPM event.
Apache 2.4 est supposé permettre d'utiliser le MPM event en prod' car stable. Ici une explication de ce que ce MPM a de mieux que worker.
En gros il y a un thread spécial qui réagit aux événements sur les socket en attente (connexions en mode keepalive etc. avec epoll ou kqueue), au lieu de laisser ça à chaque thread. Les thread ayant effectué les traitements sont donc libres de travailler à autre chose pendant les temps morts.
A priori ça se remarque avec un apache2ctl status, même avec des sessions en keepalive on ne voit plus de thread marqué 'K' : c'est le thread dédié qui attend, les autres sont dispos.
Tableau de comparaison de libc Linux écrit par l'auteur d'une d'elles, musl (donc pas forcément impartial). J'ai trouvé intéressant quand même, rien que pour la liste des points de comparaison choisis et les notes sur les tests effectués.
… or donc on apprend lors de sa première upgrade d'un postgres (install des paquets, wheezy ⇒ jessie) que c'est pas si simple, qu'il peut y avoir plusieurs versions qui tournent en même temps etc.
Entre la page liée ici, le readme du paquet (zless /usr/share/doc/postgresql-common/README.Debian.gz) et le message à l'upgrade, pour moi ça a donné ça :
apt-get install postgresql-9.4
pg_dropcluster 9.4 main --stop
service postgresql stop
pg_upgradecluster 9.1 main
(vérif que tout est ok)
aptitude purge postgresql-9.1 postgresql-client-9.1
On peut faire des "pg_lsclusters" à tout va pour savoir qu'est-ce qui est dispo et qui tourne, et sur quel port.
apt-cacher-ng (cache APT, pratique quand on est en ADSL et qu'on a plusieurs PC et/ou conteneurs/VM ou qu'on veut être gentil avec les dépôts) : il y a même un petit script interactif pour virer des release qu'on veut plus avoir dans le cache :)
Dans NGINX, les blocs "location" c'est un peu compliqué… pour savoir dans quel ordre est pris quoi, il faut s'accrocher un peu.
"To find location matching a given request, nginx first checks locations defined using the prefix strings (prefix locations). Among them, the location with the longest matching prefix is selected and remembered. Then regular expressions are checked, in the order of their appearance in the configuration file. The search of regular expressions terminates on the first match, and the corresponding configuration is used. If no match with a regular expression is found then the configuration of the prefix location remembered earlier is used."
Ce que je traduis par « le plus grand match sans regex (prefix location) est retenu puis on cherche dans les regex, on prend la première ; si pas de regex on prend le bloc retenu avant ».
J'ai pas tout essayé mais ça semble coïncider avec la réalité :P
En passant à nginx, ne pas oublier de réincorporer les blocages par htaccess à la config… ici un exemple pour dokuwiki.
Pour galette j'ai mis ça :
location ~ /(data|config|lib)/ {
deny all;
}
Besoin d'un dump partiel d'une base (pour réinjecter certaines modifications ailleurs par exemple) ? On peut donner une table et un where à mysqldump. On voudra aussi probablement -n et -t qui évitent d'avoir les CREATE de database et de table… sinon on perd tout le reste :)
Exemple pour sortir l'user 101 de galette :
mysqldump -n -t -u root -p galette galette_adherents --where="id_adh=101" > galette-adh.sql
J'ai enfin mis à jour ce shaarli pour utiliser le "community fork", devenu développement principal. Quand on utilise déjà une install via git, il suffit de :
git remote set-url origin https://github.com/shaarli/Shaarli.git
et bien sûr
git pull
J'ai dû supprimer les .htaccess des dossiers cache et data, créés par le setup je suppose, et maintenant intégrés au dépôt.
Je passe par un tunnel HE pour avoir de l'IPv6 chez moi (desktop et serveur, FAI en carton oblige). Pour les mails, au moins gmail râle si on n'a pas de reverse DNS. Chez HE c'est super simple, ils ont un service en Open Beta, lié directement avec tunnelbroker. On se connecte, on active la délégation sur leurs serveurs (un clic) et zou le reverse de notre /64 routé est prêt à être configuré. On peut aussi déléguer la zone vers des serveurs au choix (jusqu'à 5 ! :D).
Petit script python de déduplication de messages par IMAP. Marque juste les messages comme "deleted". Il y a relativement pas mal d'options, et un no-op (-n) assez explicite, avec lequel on peut tout contrôler avant de lancer définitivement (option -v pour tout avoir).
Perso j'ai utilisé :
./imapdedup.py -s 192.168.1.13 -u john -x -c -m ARN INBOX
Attention à l'ordre, il lit les dossier dans l'ordre, donc d'abord ARN puis INBOX. Donc les messages dupliqués/supprimés seront ceux d'INBOX.
Exemples de sorties :
Message INBOX_1905 is a duplicate of ARN_2642 and would be marked as deleted
If you had not selected the 'dry-run' option,
85 messages would now be marked as 'deleted'.
There are now 4679 messages marked as deleted and 1633 others in INBOX.
La commande de déduplication de dovecot ne fait qu'une partie du travail à la fois (genre 30 mails). J'ai pas trop compris pourquoi, mais un strace montre qu'il regarde /proc/meminfo avant de quitter. Ici quelqu'un d'autre a ce problème.
En regardant vite-fait dans les sources, on trouve :
pool = pool_alloconly_create("deduplicate", 10240);
Est-ce que ce pool est extensible ? Aucune idée. Mais effectivement, si la hash table utilisée pour retenir les références à comparer est limitée à ça, 10ko ça va être juste. Ce n'est qu'une hypothèse.
Perso j'ai bourriné :
for ((i=0; i<500; i++)); do doveadm deduplicate -m -u john mailbox INBOX; done
Dovecot a même une commande pour dédupliquer les messages d'une même boîte aux lettres (un seul dossier) directement. On peut l'utiliser si on a par exemple mis en place une réplication mais que les deux boîtes aux lettres avaient déjà été remplies auparavant.
Si on veut faire confiance à un certificat auto-signé, le mettre dans /usr/local/share/ca-certificates/ et lancer update-ca-certificates. Attention uniquement *.crt est pris en compte.