Wednesday, March 23, 2016

Activer et configurer le server-status apache

Source:
http://www.blog.florian-bogey.fr/activer-et-configurer-le-server-status-apache-mod_status.html


Afin de connaitre l’état d’un serveur Apache en temps réel, il est possible de mettre en place des solutions de supervision telles que Nagios ou encore MRTG. Cependant, il existe un module d’Apache nommé mod_status qui permet via une page HMTL de connaitre l’état du serveur à un instant T, sur cette page il sera possible en autre de voir : les « slots » Apache en mémoire, les requêtes, les temps d’exécution, la charge processeur, etc.
Cet outil sera aussi très pratique pour suivre les soucis de surconsommation de mémoire ainsi que les scripts demandant trop de ressources. Dans ce petit tutoriel, nous allons voir comment activer, configurer et comprendre la page server-status.

1 – Activation

Par défaut sous les distributions basées sur Red Hat (CentOS, Fedora, RHEL), le module mod_status est chargé par défaut, pour activer l’affichage de la page server-status, il suffit d’éditer le fichier de configuration d’Apache pour décommenter certaines lignes.
Éditer le fichier de configuration d’Apache (le fichier peut se trouver à un autre emplacement suivant la distribution)
vi /etc/httpd/conf/httpd.conf
Rechercher et décommenter la ligne (qui permet d’afficher un rapport détaillé)
ExtendedStatus On
Puis rechercher le bloc, pour décommenter certaines lignes
<Location /server-status>
     SetHandler server-status
     Order deny,allow
     Deny from all
     Allow from 127.0.0.1 92.XXX.XX.XX
</Location>
La ligne Deny from all permet de refuser l’accès à tout le monde et Allow from 127.0.0.1 92.XXX.XX.XX permet d’autoriser l’accès à certaines IP. Il est bien entendu possible de supprimer ces deux lignes, l’accès sera alors autorisé pour tout le monde.
Il est ensuite nécessaire de recharger la configuration d’Apache
service httpd reload
Vous pouvez maintenant accéder à la page server-status via l’adresse :
Pour une actualisation automatique de la page, il faut utiliser le paramètre refresh (en seconde), ici la page sera automatiquement rechargée toutes les 10 secondes :

2 – Rapport

Voici un exemple de rapport :
rapport server-status apache mod_status
Dans la première partie du rapport on peut voir (outre la date) :
  • Que le serveur a été redémarré il y a 13 minutes
  • L’utilisation du processeur (moins de 1%)
  • Qu’il y a en moyenne sur le serveur 0,172 requêtes/seconde
  • Que le trafic est de 975 octets/seconde
  • Une requête fait en moyenne 5,5Ko
  •  Une requête en cours de traitement et 8 slots sont libres (pour des connexions futures).
Nous pourrons ici détecter sur le serveur est surchargé.
Ensuite, dans une deuxième partie, nous pouvons voir un tableau de caractère, chaque caractère représente l’état d’un slot Apache, soit :
  • « _ » : Slot en attente de connexion (prête à recevoir un client)
  • « S » : Slot en cours de démarrage
  • « R » : Le slot lit la requête du client
  • « W » : Le slot envoie le résultat de la requête au client
  • « K » : Le slot est en attente d’une requête du même client (Keepalive)
  • « D » : Le slot effectue une requête DNS
  • « C » : Le slot ferme la connexion avec le client
  • « L » : Le slot écrit dans les fichiers de log (journaux)
  • « G » : Le slot « meurt » car inutile
  • « I » : Idle cleanup of worker
  • « . » : Aucune activité
La dernière partie du rapport contient la liste des tâches effectuées par les slots Apache, la correspondance des colonnes est la suivante (seul  les plus importantes seront détaillées) :
  • « PID » : Le PID système du processus Apache
  • « M » : Le statut du slot (Voir précédemment).
  • « CPU » : Le temps d’utilisation processeur pour exécuter la requête (en seconde)
  • « SS » : Le temps d’inactivité du slot depuis la dernière requête (en seconde)
  • « Req » : Le temps d’exécution de la dernière requête (en milliseconde)
  • « Slot » : Le nombre de Ko transféré par ce slot
  • « Client » : L’adresse IP du client (visiteur)
  • « VHost » : L’adresse du site Internet pour lequel la requête est exécutée
  • « Request » : La requête exécutée
Nous pourrons ici cibler précisément quel script tourne en boucle, connait des soucis de surconsommation de ressources, etc.

3 – Configurations supplémentaires

Pour aller plus loin dans la configuration de server-status :
Il est aussi possible de changer l’adresse de la page en modifiant la ligne
<Location /server-status>
En
<Location /nouvelle-adresse>
Ainsi le rapport sera accessible via l’adresse : http://votre-server/nouvelle-adresse
Si vous ne souhaitez pas mettre en place de filtrage IP pour l’accès à la page (ou en complément), il est possible de protéger la page via un mot de passe en utilisant un htpasswd. Pour ce faire, il faut ajouter les lignes suivantes avant </Location>
AuthUserFile "/var/www/.htpasswd"
AuthName "Veuillez vous identifier"
AuthType Basic
Require valid-user
Ensuite pour le contenu du fichier .htpasswd, vous pouvez utiliser un générateur.

Monday, March 21, 2016

Symfony 2 How To Disable CSRF on a Per Form Basis

Here are two ways to disable the CSRF in Symfony 2 Forms:
public function getDefaultOptions(array $options)
   {
       return array(
           'data_class'      => 'Acme\TaskBundle\Entity\Task',
           'csrf_protection' => false,  // <---- set this to false on a per Form Type basis
           //'csrf_field_name' => '_token',
           // a unique key to help generate the secret token
           //'intention'       => 'task_item',
       );
   }
And while creating the form:
$form = $this->createFormBuilder($users, array(
    'csrf_protection' => false,  // <---- set this to false on a per Form Instance basis
))->add(...)
;
If this has been helpful please donate, thanks!
http://www.craftitonline.com/2011/08/symfony-2-how-to-disable-csrf-on-a-per-form-basis/