<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog de Florian Bogey &#187; serveur</title>
	<atom:link href="https://www.blog.florian-bogey.fr/tag/serveur/feed" rel="self" type="application/rss+xml" />
	<link>https://www.blog.florian-bogey.fr</link>
	<description>// Développeur Web - Administrateur système</description>
	<lastBuildDate>Mon, 03 Mar 2014 18:12:00 +0000</lastBuildDate>
	<language>fr-FR</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>Activer la réécriture (mod_rewrite) d’URL sous WAMP</title>
		<link>https://www.blog.florian-bogey.fr/activer-la-reecriture-mod_rewrite-durl-sous-wamp.html</link>
		<comments>https://www.blog.florian-bogey.fr/activer-la-reecriture-mod_rewrite-durl-sous-wamp.html#comments</comments>
		<pubDate>Fri, 08 Nov 2013 22:09:24 +0000</pubDate>
		<dc:creator><![CDATA[Florian]]></dc:creator>
				<category><![CDATA[Administration Windows]]></category>
		<category><![CDATA[Développement web]]></category>
		<category><![CDATA[Logiciels]]></category>
		<category><![CDATA[Systèmes et réseaux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[rewrite]]></category>
		<category><![CDATA[Rewriting]]></category>
		<category><![CDATA[Search Engine Optimization]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[URL]]></category>
		<category><![CDATA[url rewriting]]></category>
		<category><![CDATA[Wamp]]></category>

		<guid isPermaLink="false">http://www.blog.florian-bogey.fr/?p=557</guid>
		<description><![CDATA[Très utilisé en SEO (Search Engine Optimization) ou pour des raisons de sécurité, la réécriture d’URL est présente sur une grande majorité des projets Web. C’est pourquoi, dans ce petit tutoriel, nous allons voir comment activer la réécriture d’URL (mod_rewrite) sous WAMP. Bien que désactivé par défaut, la réécriture d’URL se met en place très [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Très utilisé en SEO (Search Engine Optimization) ou pour des raisons de sécurité, la réécriture d’URL est présente sur une grande majorité des projets Web. C’est pourquoi, dans ce petit tutoriel, nous allons voir comment activer la réécriture d’URL (mod_rewrite) sous WAMP.</p>
<p><span id="more-557"></span>Bien que désactivé par défaut, la réécriture d’URL se met en place très facilement, via l’activation du « <strong>Mod_rewrite</strong> » d’Apache.</p>
<p>Tout d’abord, commencez par exécuter <strong>Wamp</strong>. Puis, via un clic gauche sur l’icône Wamp dans la barre des tâches ouvrez le fichier «<strong> httpd.conf</strong> » qui se trouve dans le dossier « <strong>Apache</strong> ».</p>
<p>Dans ce fichier recherchez la ligne</p>
<pre class="brush: plain; title: ; notranslate">LoadModule rewrite_module modules/mod_rewrite.so</pre>
<p>Et décommettez la en enlevant le « # » (dièse) qui se trouve devant, sauvegardez puis fermez le fichier.</p>
<p>Il faut maintenant redémarrer les services, via clic gauche sur l’icône de Wamp dans la barre des tâches puis « <strong>Restart all services</strong> », et ce, afin que la modification soit prise en compte.</p>
<p>La dernière étape est de s’assurer que le module « <strong>mod_rewrite</strong> » est bien chargé.Pour ce faire cliquez gauche sur l’icône de Wamp dans la barre des tâches et se rendre dans le menu « <strong>Apache</strong> » puis « <strong>Apache Modules</strong> ».</p>
<p><img class="aligncenter" style="border: 0;" alt="Activer la réécriture (mod_rewrite) d’URL sous WAMP" src="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/11/apache_mod_rewrite_wamp.png" /></p>
<p>Descendez en bas de la liste, et si « <strong>Rewrite Module</strong> » n’est pas coché, cliquez dessus pour l’activer, puis redémarrer tous les services de Wamp.</p>
<p>Afin d’indiquer à Apache que nous souhaitons utiliser la réécriture d’URL sur un site, la ligne suivante doit être ajouté dans le <strong>.htaccess</strong> présent à la racine de ce dernier :</p>
<pre class="brush: plain; title: ; notranslate">RewriteEngine on</pre>
<p>La réécriture d&rsquo;URL peux maintenant être utilisée sur vos différents projets web tournant sous Wamp Server.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.blog.florian-bogey.fr/activer-la-reecriture-mod_rewrite-durl-sous-wamp.html/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Activer et configurer le server-status Apache (mod_status)</title>
		<link>https://www.blog.florian-bogey.fr/activer-et-configurer-le-server-status-apache-mod_status.html</link>
		<comments>https://www.blog.florian-bogey.fr/activer-et-configurer-le-server-status-apache-mod_status.html#comments</comments>
		<pubDate>Tue, 30 Apr 2013 12:01:41 +0000</pubDate>
		<dc:creator><![CDATA[Florian]]></dc:creator>
				<category><![CDATA[Systèmes et réseaux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mod_status]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[slot]]></category>
		<category><![CDATA[supervision]]></category>
		<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.blog.florian-bogey.fr/?p=507</guid>
		<description><![CDATA[Afin de connaitre l&#8217;état d&#8217;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&#8217;Apache nommé mod_status qui permet via une page HMTL de connaitre l&#8217;état du serveur à un instant T, sur cette page il sera [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Afin de connaitre l&rsquo;état d&rsquo;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&rsquo;Apache nommé <strong>mod_status</strong> qui permet via une page HMTL de connaitre l&rsquo;état du serveur à un instant T, sur cette page il sera possible en autre de voir : les &laquo;&nbsp;slots&nbsp;&raquo; Apache en mémoire, les requêtes, les temps d’exécution, la charge processeur, etc.</p>
<p>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 <strong>server-status</strong>.</p>
<p><span id="more-507"></span></p>
<h2 class="paddingTop">1 – Activation</h2>
<p>Par défaut sous les distributions basées sur <strong>Red Hat</strong> (CentOS, Fedora, RHEL), le module<strong> mod_status</strong> est chargé par défaut, pour activer l&rsquo;affichage de la page <strong>server-status</strong>, il suffit d&rsquo;éditer le fichier de configuration d&rsquo;Apache pour décommenter certaines lignes.</p>
<p>Éditer le fichier de configuration d&rsquo;Apache (le fichier peut se trouver à un autre emplacement suivant la distribution)</p>
<pre class="brush: plain; gutter: false; title: ; notranslate">vi /etc/httpd/conf/httpd.conf</pre>
<p>Rechercher et décommenter la ligne (qui permet d&rsquo;afficher un rapport détaillé)</p>
<pre class="brush: plain; gutter: false; title: ; notranslate">ExtendedStatus On</pre>
<p>Puis rechercher le bloc, pour décommenter certaines lignes</p>
<pre class="brush: plain; gutter: false; title: ; notranslate">
&lt;Location /server-status&gt;
     SetHandler server-status
     Order deny,allow
     Deny from all
     Allow from 127.0.0.1 92.XXX.XX.XX
&lt;/Location&gt;
</pre>
<p>La ligne <strong>Deny from all</strong> permet de refuser l&rsquo;accès à tout le monde et <strong>Allow from 127.0.0.1 92.XXX.XX.XX</strong> permet d&rsquo;autoriser l&rsquo;accès à certaines IP. Il est bien entendu possible de supprimer ces deux lignes, l&rsquo;accès sera alors autorisé pour tout le monde.</p>
<p>Il est ensuite nécessaire de recharger la configuration d&rsquo;<strong>Apache</strong></p>
<pre class="brush: plain; gutter: false; title: ; notranslate">service httpd reload</pre>
<p>Vous pouvez maintenant accéder à la page <strong>server-status</strong> via l&rsquo;adresse :</p>
<pre class="brush: plain; gutter: false; title: ; notranslate">http://votre-server/server-status</pre>
<p>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 :</p>
<pre class="brush: plain; gutter: false; title: ; notranslate">http://votre-server/server-status?refresh=10</pre>
<h2 class="paddingTop">2 – Rapport</h2>
<p><strong>Voici un exemple de rapport :</strong></p>
<p><a title="Exemple de rapport server-status via apache mod_status" href="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/04/rapport-server-status-apache-mod-status.jpg" target="_blank"><img alt="rapport server-status apache mod_status" src="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/04/rapport-server-status-apache-mod-status.jpg" width="500" /></a></p>
<p><strong>Dans la première partie</strong> du rapport on peut voir (outre la date) :</p>
<ul>
<li>Que le serveur a été redémarré il y a 13 minutes</li>
<li>L&rsquo;utilisation du processeur (moins de 1%)</li>
<li>Qu&rsquo;il y a en moyenne sur le serveur 0,172 requêtes/seconde</li>
<li>Que le trafic est de 975 octets/seconde</li>
<li>Une requête fait en moyenne 5,5Ko</li>
<li> Une requête en cours de traitement et 8 slots sont libres (pour des connexions futures).</li>
</ul>
<p>Nous pourrons ici détecter sur le serveur est surchargé.</p>
<p><strong>Ensuite, dans une deuxième partie</strong>, nous pouvons voir un tableau de caractère, chaque caractère représente l&rsquo;état d&rsquo;un slot Apache, soit :</p>
<ul>
<li>&laquo;&nbsp;<strong>_</strong>&nbsp;&raquo; : Slot en attente de connexion (prête à recevoir un client)</li>
<li>&laquo;&nbsp;<strong>S</strong>&nbsp;&raquo; : Slot en cours de démarrage</li>
<li>&laquo;&nbsp;<strong>R</strong>&nbsp;&raquo; : Le slot lit la requête du client</li>
<li>&laquo;&nbsp;<strong>W</strong>&nbsp;&raquo; : Le slot envoie le résultat de la requête au client</li>
<li>&laquo;&nbsp;<strong>K</strong>&nbsp;&raquo; : Le slot est en attente d&rsquo;une requête du même client (Keepalive)</li>
<li>&laquo;&nbsp;<strong>D</strong>&nbsp;&raquo; : Le slot effectue une requête DNS</li>
<li>&laquo;&nbsp;<strong>C</strong>&nbsp;&raquo; : Le slot ferme la connexion avec le client</li>
<li>&laquo;&nbsp;<strong>L</strong>&nbsp;&raquo; : Le slot écrit dans les fichiers de log (journaux)</li>
<li>&laquo;&nbsp;<strong>G</strong>&nbsp;&raquo; : Le slot &laquo;&nbsp;meurt&nbsp;&raquo; car inutile</li>
<li>&laquo;&nbsp;<strong>I</strong>&nbsp;&raquo; : Idle cleanup of worker</li>
<li>&laquo;&nbsp;<strong>.</strong>&nbsp;&raquo; : Aucune activité</li>
</ul>
<p><strong>La dernière partie du rapport</strong> 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) :</p>
<ul>
<li>&laquo;&nbsp;<strong>PID</strong>&nbsp;&raquo; : Le PID système du processus Apache</li>
<li>&laquo;&nbsp;<strong>M</strong>&nbsp;&raquo; : Le statut du slot (Voir précédemment).</li>
<li>&laquo;&nbsp;<strong>CPU</strong>&nbsp;&raquo; : Le temps d&rsquo;utilisation processeur pour exécuter la requête (en seconde)</li>
<li>&laquo;&nbsp;<strong>SS</strong>&nbsp;&raquo; : Le temps d&rsquo;inactivité du slot depuis la dernière requête (en seconde)</li>
<li>&laquo;&nbsp;<strong>Req</strong>&nbsp;&raquo; : Le temps d’exécution de la dernière requête (en milliseconde)</li>
<li>&laquo;&nbsp;<strong>Slot</strong>&nbsp;&raquo; : Le nombre de Ko transféré par ce slot</li>
<li>&laquo;&nbsp;<strong>Client</strong>&nbsp;&raquo; : L&rsquo;adresse IP du client (visiteur)</li>
<li>&laquo;&nbsp;<strong>VHost</strong>&nbsp;&raquo; : L&rsquo;adresse du site Internet pour lequel la requête est exécutée</li>
<li>&laquo;&nbsp;<strong>Request</strong>&nbsp;&raquo; : La requête exécutée</li>
</ul>
<p>Nous pourrons ici cibler précisément quel script tourne en boucle, connait des soucis de surconsommation de ressources, etc.</p>
<h2 class="paddingTop">3 – Configurations supplémentaires</h2>
<p><strong>Pour aller plus loin dans la configuration de server-status :</strong></p>
<p>Il est aussi possible de <strong>changer l&rsquo;adresse de la page</strong> en modifiant la ligne</p>
<pre class="brush: plain; gutter: false; title: ; notranslate">&lt;Location /server-status&gt;</pre>
<p>En</p>
<pre class="brush: plain; gutter: false; title: ; notranslate">&lt;Location /nouvelle-adresse&gt;</pre>
<p>Ainsi le rapport sera accessible via l&rsquo;adresse : http://votre-server/nouvelle-adresse</p>
<p>Si vous ne souhaitez pas mettre en place de <strong>filtrage IP</strong> pour l&rsquo;accès à la page (ou en complément), il est possible de protéger la page via un <strong>mot de passe</strong> en utilisant un htpasswd. Pour ce faire, il faut ajouter les lignes suivantes avant &lt;/Location&gt;</p>
<pre class="brush: plain; gutter: false; title: ; notranslate">
AuthUserFile &quot;/var/www/.htpasswd&quot;
AuthName &quot;Veuillez vous identifier&quot;
AuthType Basic
Require valid-user
</pre>
<p>Ensuite pour le contenu du fichier .htpasswd, vous pouvez utiliser un <a title="htpasswd" href="http://www.infowebmaster.fr/outils/crypter-htpasswd.php" target="_blank">générateur</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.blog.florian-bogey.fr/activer-et-configurer-le-server-status-apache-mod_status.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Empêcher les dépassements de mémoire sur un serveur Linux</title>
		<link>https://www.blog.florian-bogey.fr/empecher-les-depassements-de-memoire-sur-un-serveur-linux.html</link>
		<comments>https://www.blog.florian-bogey.fr/empecher-les-depassements-de-memoire-sur-un-serveur-linux.html#comments</comments>
		<pubDate>Sat, 20 Apr 2013 11:58:32 +0000</pubDate>
		<dc:creator><![CDATA[Florian]]></dc:creator>
				<category><![CDATA[Administration Linux]]></category>
		<category><![CDATA[Systèmes et réseaux]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[killer]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mémoire]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[Noyau]]></category>
		<category><![CDATA[oom]]></category>
		<category><![CDATA[oom-killer]]></category>
		<category><![CDATA[overcommit_memory]]></category>
		<category><![CDATA[overcommit_ratio]]></category>
		<category><![CDATA[ram]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[swap]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.blog.florian-bogey.fr/?p=491</guid>
		<description><![CDATA[Par défaut Linux possède un mécanisme complexe nommé OOM-Killer (pour Out-Of-Memory Killer), ce dernier est incorporé au noyau Linux et permettra en cas de dépassement de mémoire de tuer des processus inutiles afin d&#8217;éviter un plantage complet du serveur. OOM-Killer va donc être appelé lorsque le RAM et le SWAP sont entièrement utilisés et que [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Par défaut Linux possède un mécanisme complexe nommé OOM-Killer (pour Out-Of-Memory Killer), ce dernier est incorporé au noyau Linux et permettra en cas de dépassement de mémoire de tuer des processus inutiles afin d&rsquo;éviter un plantage complet du serveur.</p>
<p><span id="more-491"></span></p>
<p><strong>OOM-Killer</strong> va donc être appelé lorsque le <strong>RAM</strong> et le <strong>SWAP</strong> sont entièrement utilisés et que le système n&rsquo;a plus assez de mémoire à allouer aux processus. Ensuite <strong>OOM-Killer</strong> déterminera quel processus tuer suivant des heuristiques et ne terminera donc pas des processus système vitaux.</p>
<p>Les appels à <strong>OOM-Killer</strong> sont enregistrés dans les journaux systèmes (/var/log/messages) :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">httpd invoked oom-killer: gfp_mask=[...], order=[...], oomkilladj=[...]

[suivis de quelques ligne de debug &quot;Call Tace&quot;]</pre>
<p>Pour trouver tous les processus tués par <strong>OOM-Killer</strong> nous pourrons utiliser la commande suivante :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">grep oom-killer /var/log/messages</pre>
<p>Ici nous voyons qu&rsquo;<strong>OOM-Killer</strong> a terminé le processus httpd (soit Apache). Dans certains cas, par exemple lors de l&rsquo;utilisation d&rsquo;un moteur de base de données contenant beaucoup d&rsquo;enregistrements, ou si <strong>OOM-Killer</strong> à tendance à terminer les processus SSH, base de données, serveur web (ou autre), il sera utile de modifier le comportement de Linux avec la mémoire disponible.</p>
<p>Pour cela nous allons modifier le paramètre noyau <strong>overcommit_memory</strong>, ce paramètre peut prendre trois valeurs différentes :</p>
<ul>
<li>0 : Il s&rsquo;agit du comportement par défaut, les réservations de mémoire seront acceptées ou refusées selon un heuristique</li>
<li>1 : Toujours accepter</li>
<li>2 : Accepter les demandes, si elle ne dépasse pas la quantité de ressource déterminée dans le paramètre <strong>overcommit_ratio</strong></li>
</ul>
<p>Le paramètre <strong>overcommit_ratio</strong> (par défaut 50) détermine le pourcentage de mémoire physique que l&rsquo;on autorise à allouer en plus du swap. Pour connaitre la quantité de mémoire que l&rsquo;on autorise à allouer, le calcul est le suivant :  SWAP + ((RAM*<strong>overcommit_ratio</strong>)/100)</p>
<p>Pour éviter les dépassements de mémoire nous allons donc modifier les deux paramètres noyaux en mettant <strong>overcommit_memory</strong> à 2 et <strong>overcommit_ratio</strong> à 95 (Certains préconisent des valeurs plus basses telles que 75 ou 85, voir plus hautes). Les manipulations sont à effectuer en tant que root.</p>
<p>Pour modifier de façon temporaire (annulée au prochain redémarrage) :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
echo 2 &gt; /proc/sys/vm/overcommit_memory
echo 95 &gt; /proc/sys/vm/overcommit_ratio
</pre>
<p>Pour une modification définitive, il faut éditer le fichier /etc/sysctl.conf</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
vi /etc/sysctl.conf
</pre>
<p>Et ajouter/modifier les lignes suivantes :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
vm.overcommit_memory = 2
vm.overcommit_ratio = 95
</pre>
<p><a title="Photo" href="http://wallbase.cc/wallpaper/377152" target="_blank">Photo</a> et <a title="Référence" href="https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Performance_Tuning_Guide/s-memory-captun.html" target="_blank">Référence</a></p>
]]></content:encoded>
			<wfw:commentRss>https://www.blog.florian-bogey.fr/empecher-les-depassements-de-memoire-sur-un-serveur-linux.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cacher la version d&#8217;un serveur Apache</title>
		<link>https://www.blog.florian-bogey.fr/cacher-la-version-dapache.html</link>
		<comments>https://www.blog.florian-bogey.fr/cacher-la-version-dapache.html#comments</comments>
		<pubDate>Thu, 28 Mar 2013 22:32:54 +0000</pubDate>
		<dc:creator><![CDATA[Florian]]></dc:creator>
				<category><![CDATA[Administration Linux]]></category>
		<category><![CDATA[Développement web]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Systèmes et réseaux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Fingerprinting]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ServerSignature]]></category>
		<category><![CDATA[ServerTokens]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.blog.florian-bogey.fr/?p=444</guid>
		<description><![CDATA[Dans ce billet qui est le premier d&#8217;une série d&#8217;articles traitant de la sécurisation d&#8217;un serveur web, nous allons voir comment masquer les informations diffusées par Apache. Par défaut, Apache affichera son numéro de version ainsi que le système d&#8217;exploitation utilisé et dans certains cas d&#8217;autres informations telles que les modules installés sur le serveur. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Dans ce billet qui est le premier d&rsquo;une série d&rsquo;articles traitant de la sécurisation d&rsquo;un serveur web, nous allons voir comment masquer les informations diffusées par Apache. Par défaut, Apache affichera son numéro de version ainsi que le système d&rsquo;exploitation utilisé et dans certains cas d&rsquo;autres informations telles que les modules installés sur le serveur.</p>
<p><span id="more-444"></span></p>
<p>Il est en effet important de divulguer le moins d&rsquo;informations possible à un éventuel pirate, en effet ce dernier pourrait se servir de ces informations pour mieux cibler son attaque.</p>
<p>Pour ce faire nous allons utiliser les directives Apache <strong>ServerSignature</strong> et <strong>ServerTokens</strong>.</p>
<p>La première directive que nous allons modifier est <strong>ServerSignature</strong>, qui par défaut (On) affiche sur chacune des pages d&rsquo;erreur générée les informations concernant le serveur.</p>
<p><img style="border: 0 none;" alt="ServerSignature version apache" src="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/03/ServerSignature-version-apache.jpg" /></p>
<p>Une fois la directive <strong>ServerSignature</strong> <strong></strong>à Off, le serveur n&rsquo;affiche plus aucune information sur les pages d&rsquo;erreur.<br />
<img style="border: 0 none;" alt="ServerSignature version apache" src="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/03/ServerSignature-version-apache-2.jpg" /></p>
<p>La seconde directive est <strong>ServerTokens </strong>permet de modifier le contenu du champ &laquo;&nbsp;Server&nbsp;&raquo; qui se situe dans l&rsquo;entête de chaque réponse envoyée par le serveur. Nous pouvons voir très simplement cette réponse grâce à la commande Telnet. Nous voyons ici qu&rsquo;il s&rsquo;agit d&rsquo;un serveur Apache en version 2.2.15 installé sur une CentOS.</p>
<p><img style="border: 0 none;" alt="ServerTokens version apache" src="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/03/ServerTokens-version-apache.jpg" /></p>
<p>Une fois la directive <strong>ServerTokens </strong><strong></strong>à Prod (Pour Product Only), le champ &laquo;&nbsp;Server&nbsp;&raquo; contiendra uniquement le nom du serveur web utilisé.<br />
<img style="border: 0 none;" alt="ServerTokens version apache" src="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/03/ServerTokens-version-apache-2.jpg" /></p>
<p>Pour modifier ces deux directives, il suffit d&rsquo;éditer le fichier <strong>httpd.conf</strong></p>
<pre class="brush: bash; gutter: false; title: ; notranslate">vi /etc/httpd/conf/httpd.conf</pre>
<p>De rechercher les lignes contenant <strong>ServerSignature</strong> et <strong>ServerTokens</strong> pour les remplacer par</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">ServerSignature Off</pre>
<p>Et</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">ServerTokens Prod</pre>
<p>Pour valider le changement de configuration, il suffit de recharger la configuration d&rsquo;Apache</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">service httpd reload</pre>
<p><a title="Photo" href="http://wallbase.cc/wallpaper/98415" target="_blank">Photo</a></p>
]]></content:encoded>
			<wfw:commentRss>https://www.blog.florian-bogey.fr/cacher-la-version-dapache.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installer un certificat SSL sous WAMP</title>
		<link>https://www.blog.florian-bogey.fr/installer-un-certificat-ssl-sous-wamp.html</link>
		<comments>https://www.blog.florian-bogey.fr/installer-un-certificat-ssl-sous-wamp.html#comments</comments>
		<pubDate>Thu, 14 Mar 2013 09:26:12 +0000</pubDate>
		<dc:creator><![CDATA[Florian]]></dc:creator>
				<category><![CDATA[Administration Windows]]></category>
		<category><![CDATA[Développement web]]></category>
		<category><![CDATA[Logiciels]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Systèmes et réseaux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[certificat]]></category>
		<category><![CDATA[certificat ssl]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[Wamp]]></category>
		<category><![CDATA[Wampserver]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.blog.florian-bogey.fr/?p=411</guid>
		<description><![CDATA[Installer un certificat SSL sous un serveur Wamp (Sous Windows donc) est relativement simple et ne prend que quelques minutes, nous allons donc voir ici comment générer un certificat Auto-signé avec OpenSSL et comment l’installer. A noter que cette manipulation ne pourra remplacer un vrai certificat acheté auprès d’une autorité de certification. Une remarque avant [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Installer un certificat SSL sous un serveur Wamp (Sous Windows donc) est relativement simple et ne prend que quelques minutes, nous allons donc voir ici comment générer un certificat Auto-signé avec OpenSSL et comment l’installer. A noter que cette manipulation ne pourra remplacer un vrai certificat acheté auprès d’une autorité de certification.</p>
<p><span id="more-411"></span></p>
<p><strong>Une remarque</strong> avant de commencer, selon votre version d’Apache les chemins vers les différents fichiers/dossiers peuvent changer. <strong>Cette documentation a été écrite avec Apache2.2.21.</strong></p>
<p>Les premières étapes sont des commandes DOS, la première chose est donc d’ouvrir une invite de commande (Démarrer -&gt; Exécuter -&gt; cmd -&gt; OK)</p>
<h2>1 &#8211; Se rendre dans le répertoire de d’apache</h2>
<pre class="brush: bash; title: ; notranslate">cd C:\wamp\bin\apache\Apache2.2.21\bin</pre>
<h2>2 &#8211; Générer le la clef privé</h2>
<p>On va commencer par générer la clé privée, elle se trouvera dans le fichier &laquo;&nbsp;private.key&nbsp;&raquo; ici le chiffrage est de 2048bits.</p>
<pre class="brush: bash; title: ; notranslate">openssl genrsa -aes256 -out private.key 2048</pre>
<p>Si vous rencontrez l’erreur &laquo;&nbsp;L’ordinal 296 …. SSLEAY32.dll&nbsp;&raquo; :</p>
<p><img class="size-full wp-image-417" style="border: 0 none;" alt="openssl-erreur" src="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/03/openssl-erreur.jpg" /></p>
<p>La solution est de se rendre sur cette page : <a title="OpenSSL" href="http://slproweb.com/products/Win32OpenSSL.html" target="_blank">http://slproweb.com/products/Win32OpenSSL.html</a> et de télécharger <strong>Win32 OpenSSL v1.0.0k Light</strong> une fois installé il faut se déplacer dans le répertoire/sous-répertoires d’installation afin de copier les fichiers suivants :</p>
<ul>
<li>ssleay32.dll</li>
<li>libeay32.dll</li>
<li>openssl.exe</li>
</ul>
<p>Pour les coller dans le dossier C:\wamp\bin\apache\Apache2.2.21\bin (en confirmant les remplacements). Le problème devrait alors être corrigé et la commande précédente s’exécuter correctement.</p>
<h2>3 &#8211; Supprimer la passphrase</h2>
<p>On va <a title="Supprimer le mot de passe d’un certificat SSL" href="http://www.blog.florian-bogey.fr/supprimer-le-mot-de-passe-dun-certificat-ssl.html" target="_blank">libérer la clé privée</a> de la &laquo;&nbsp;passphrase&nbsp;&raquo; qui la protège.</p>
<pre class="brush: bash; title: ; notranslate">openssl rsa -in private.key -out private.key</pre>
<h2>4 &#8211; Générer le certificat auto-signé</h2>
<p>Nous allons ici générer le certificat auto-signé qui servira à certifier la connexion et à en chiffrer les échanges.</p>
<p>Ici le certificat sera valide 100 ans, remplacez donc 36500 par le nombre de jours de validité du certificat. Ensuite l’invite de commande vous demandera quelques informations libres à vous de les saisir. Notre certificat portera le nom : &laquo;&nbsp;certificat.crt&nbsp;&raquo;</p>
<pre class="brush: bash; title: ; notranslate">openssl req -new -x509 -nodes -sha1 -key private.key
-out certificat.crt -days 36500
-config C:\wamp\bin\apache\apache2.2.21\conf\openssl.cnf</pre>
<p><img class="size-full wp-image-420" style="border: 0 none;" alt="Générer un certificat avec openSSL" src="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/03/openssl-certificat.jpg" width="500px" /></p>
<h2>5 &#8211; Copier le certificat et la clef privée</h2>
<p>Maintenant que notre certificat et notre clef privée sont générés il nous faut les stocker sur le serveur. Pour ce faire rendez-vous dans le dossier C:\wamp\bin\apache\Apache2.2.21\conf et créez deux dossiers &laquo;&nbsp;cert&nbsp;&raquo; et &laquo;&nbsp;key&nbsp;&raquo;.</p>
<ul>
<li>Copier certificat.crt dans le dossier &laquo;&nbsp;cert&nbsp;&raquo;</li>
<li>Copier private.key dans le dossier &laquo;&nbsp;key&nbsp;&raquo;</li>
</ul>
<h2>6 &#8211; Édition des fichiers de configurations</h2>
<p>Afin d’installer notre certificat, nous devons éditer trois fichiers de configuration, les deux premiers permettrons d’activer SSL pour Apache et PHP et le troisième permettra d&rsquo;installer le certificat sur le serveur.</p>
<ul>
<li><strong>Editer C:\wamp\bin\apache\Apache2.2.21\conf\httpd.conf</strong></li>
</ul>
<p>Dé-commenter les lignes (enlever le &laquo;&nbsp;#&nbsp;&raquo;) suivantes :</p>
<pre class="brush: bash; title: ; notranslate">LoadModule ssl_module modules/mod_ssl.so</pre>
<p>et</p>
<pre class="brush: bash; title: ; notranslate">Include conf/extra/httpd-ssl.conf</pre>
<ul>
<li><strong>Editer C:\wamp\bin\php\php5.3.8\php.ini</strong></li>
</ul>
<p>Dé-commenter la ligne (enlever le &laquo;&nbsp;;&nbsp;&raquo;) suivante</p>
<pre class="brush: bash; title: ; notranslate">extension=php_openssl.dll</pre>
<ul>
<li><strong>Editer C:\wamp\bin\apache\Apache2.2.21\conf\extra\httpd-ssl.conf</strong></li>
</ul>
<p>Rechercher la ligne : <strong>&lt;VirtualHost _default_:443&gt;</strong></p>
<p>Sous cette ligne, effectuer les recherche/remplacement suivant :</p>
<ul>
<li>Remplacer la ligne &laquo;&nbsp;DocumentRoot …&nbsp;&raquo; par :</li>
</ul>
<pre class="brush: bash; gutter: false; title: ; notranslate">DocumentRoot &quot;c:/wamp/www/&quot;</pre>
<ul>
<li>Remplacer la ligne &laquo;&nbsp;ServerName …&nbsp;&raquo; par :</li>
</ul>
<pre class="brush: bash; gutter: false; title: ; notranslate">ServerName localhost:443</pre>
<ul>
<li>Remplacer la ligne &laquo;&nbsp;ErrorLog …&nbsp;&raquo; par :</li>
</ul>
<pre class="brush: bash; gutter: false; title: ; notranslate">ErrorLog &quot;c:/wamp/bin/apache/Apache2.2.21/logs/ssl_error.log&quot;</pre>
<ul>
<li>Remplacer la ligne &laquo;&nbsp;TransferLog …&nbsp;&raquo; par :</li>
</ul>
<pre class="brush: bash; gutter: false; title: ; notranslate">TransferLog &quot;c:/wamp/bin/apache/Apache2.2.21/logs/ssl_access.log&quot;</pre>
<ul>
<li>Remplacer la ligne &laquo;&nbsp;SSLCertificateFile …&nbsp;&raquo; par :</li>
</ul>
<pre class="brush: bash; gutter: false; title: ; notranslate">SSLCertificateFile &quot;c:/wamp/bin/apache/Apache2.2.21/conf/cert/certificat.crt&quot;</pre>
<ul>
<li>Remplacer la ligne &laquo;&nbsp;SSLCertificateKeyFile …&nbsp;&raquo; par :</li>
</ul>
<pre class="brush: bash; gutter: false; title: ; notranslate">SSLCertificateKeyFile &quot;c:/wamp/bin/apache/Apache2.2.21/conf/key/private.key&quot;</pre>
<ul>
<li>Remplacer la ligne &laquo;&nbsp;&lt;Directory &#8230;&gt;&nbsp;&raquo; par :</li>
</ul>
<pre class="brush: bash; gutter: false; title: ; notranslate">&lt;Directory &quot;c:/wamp/www/&quot;&gt;</pre>
<ul>
<li>Remplacer la ligne &laquo;&nbsp;CustomLog …&nbsp;&raquo; par :</li>
</ul>
<pre class="brush: bash; gutter: false; title: ; notranslate">CustomLog &quot;C:/wamp/bin/apache/Apache2.2.21/logs/ssl_request.log&quot; \</pre>
<p>Voici quelques explication concernant les paramètres que l&rsquo;on viens de modifier :</p>
<ul>
<li><strong>DocumentRoot</strong> : définit le dossier racine du serveur</li>
<li><strong>ServerName</strong> : définit le nom du serveur et son port d’écoute (443 étant le port SSL par défaut)</li>
<li><strong>ErrorLog</strong> : définit l’emplacement du journal d’erreur</li>
<li><strong>TransferLog</strong> : définit l’emplacement du journal des accès</li>
<li><strong>SSLCertificateFile</strong> : définit l’emplacement du certificat</li>
<li><strong>SSLCertificateKeyFile</strong> : définit l’emplacement de la clef privée</li>
<li><strong>&lt;Directory &#8230;&gt; </strong>: définit les propriétés sur dossier racine</li>
<li><strong>CustomLog</strong> : définit l’emplacement du journal des requêtes</li>
</ul>
<h2>7 &#8211; Vérifier la configuration</h2>
<p>Dans une invite de commande tapez la commande suivante</p>
<pre class="brush: bash; title: ; notranslate">httpd -t</pre>
<p>Ce dernier doit retourner &laquo;&nbsp;Syntax OK&nbsp;&raquo;, si tel n’est pas le cas, il doit y avoir une erreur dans le fichier &laquo;&nbsp;httpd-ssl.conf&nbsp;&raquo;, il faut donc retourner à l’étape précédente et vérifier la configuration.</p>
<h2>8 &#8211; Redémarrer Wamp</h2>
<p>Il faut redémarrer Wamp afin que les différentes modifications soient prises en compte.</p>
<h2>9 &#8211; L’accès à https://localhost/ doit être possible</h2>
<p>Le message suivant nous indique que la connexion n’est pas certifiée, il faut accepter les risques, c’est normal puisque notre certificat est auto-signé. Cette erreur n’apparaîtrait pas si le certificat aurait été acheté auprès d’une autorité de certification.</p>
<p><img class="size-full wp-image-425" style="border: 0 none;" alt="firefox erreur certificat SSL" src="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/03/firefox-erreur-certificat.jpg" width="500" /></p>
<p>Voilà, le certificat est installé avec succès.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.blog.florian-bogey.fr/installer-un-certificat-ssl-sous-wamp.html/feed</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
		<item>
		<title>Effectuer des tests de montée en charge avec Tsung (Partie 3 &#8211; Le test)</title>
		<link>https://www.blog.florian-bogey.fr/tutoriel-tests-montee-charge-tsung-partie-3.html</link>
		<comments>https://www.blog.florian-bogey.fr/tutoriel-tests-montee-charge-tsung-partie-3.html#comments</comments>
		<pubDate>Wed, 13 Feb 2013 21:08:58 +0000</pubDate>
		<dc:creator><![CDATA[Florian]]></dc:creator>
				<category><![CDATA[Administration Linux]]></category>
		<category><![CDATA[Développement web]]></category>
		<category><![CDATA[Systèmes et réseaux]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[charge]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[montée en charge]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[stress]]></category>
		<category><![CDATA[stress test]]></category>
		<category><![CDATA[Tsung]]></category>
		<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.blog.florian-bogey.fr/?p=325</guid>
		<description><![CDATA[Cet article est la dernière partie d&#8217;un tutoriel en trois phases, consacré à Tsung. Après nous être intéressé à l&#8217;installation de Tsung, puis à sa configuration nous allons dans cette troisième partie effectuer le test sur notre plateforme et générer le rapport. Sommaire du tutoriel Effectuer des tests de montée en charge avec Tsung (Partie [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Cet article est la dernière partie d&rsquo;un tutoriel en trois phases, consacré à <strong>Tsung</strong>. Après nous être intéressé à l&rsquo;<a title="Effectuer des tests de montée en charge avec Tsung (Partie 1 – Installation)" href="http://www.blog.florian-bogey.fr/tutoriel-tests-montee-charge-tsung-partie-1.html">installation de Tsung</a>, puis à sa <a title="Effectuer des tests de montée en charge avec Tsung (Partie 2 – Configuration)" href="http://www.blog.florian-bogey.fr/tutoriel-tests-montee-charge-tsung-partie-2.html">configuration</a> nous allons dans cette troisième partie effectuer le test sur notre plateforme et générer le rapport.</p>
<p><span id="more-325"></span></p>
<p><strong>Sommaire du tutoriel</strong></p>
<ol>
<li><a title="Effectuer des tests de montée en charge avec Tsung (Partie 1 – Installation)" href="http://www.blog.florian-bogey.fr/tutoriel-tests-montee-charge-tsung-partie-1.html">Effectuer des tests de montée en charge avec Tsung (Partie 1 – Installation)</a></li>
<li><a title="Effectuer des tests de montée en charge avec Tsung (Partie 2 – Configuration)" href="http://www.blog.florian-bogey.fr/tutoriel-tests-montee-charge-tsung-partie-2.html">Effectuer des tests de montée en charge avec Tsung (Partie 2 – Configuration</a>)</li>
<li><strong>Effectuer des tests de montée en charge avec Tsung (Partie 3 – Le test)</strong></li>
</ol>
<h2 class="paddingTop">1 &#8211; Lancer le test</h2>
<p>Nous pouvons ensuite<strong> lancer le test</strong> avec la commande (qui par défaut chargera le fichier de configuration ~/.tsung/tsung.xml) :</p>
<pre class="brush: bash; auto-links: false; gutter: true; title: ; notranslate">
tsung start
</pre>
<p>Pour utiliser un autre fichier de configuration, il faut passer le chemin de ce dernier à la commande, soit :</p>
<pre class="brush: bash; auto-links: false; gutter: true; title: ; notranslate">
tsung -f ~/.tsung/tsung-second-test.xml start
</pre>
<p>Au lancement du test, <strong>Tsung</strong> crée un dossier contenant les logs, que nous utiliserons plus tard pour générer le rapport.</p>
<p><a title="Résultat de la commande Tsung start" href="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/02/tsung-start.jpg" rel="lightbox"><img alt="Tsung start" src="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/02/tsung-start.jpg" /></a></p>
<p>La montée en charge est maintenant lancée vous pouvez à tout moment l&rsquo;arrêter en tapant la commande « Tsung stop » ou la combinaison de touche ctrl+c</p>
<h2 class="paddingTop">2 &#8211; Générer le rapport</h2>
<p>Une fois le test terminé, il faut se rendre dans le dossier contenant les logs :</p>
<pre class="brush: bash; auto-links: false; gutter: true; title: ; notranslate">
Cd ~/.tsung/log/20130201-2348
</pre>
<p>Et ensuite<strong> générer le rapport</strong> avec la commande (notez qu’il sera plus pratique de créer un alias nommé par exemple « tsung-repport » que d’exécuter cette commande).</p>
<pre class="brush: bash; auto-links: false; gutter: true; title: ; notranslate">
/usr/lib/tsung/bin/tsung_stats.pl
</pre>
<p>Le rapport se trouvera alors dans le même dossier que les logs, et se nommera «<strong> repport.html</strong> »</p>
<p>L’ouverture du rapport peut se faire entre autre avec la commande (A condition d’utiliser l’option –X de ssh)</p>
<pre class="brush: bash; auto-links: false; gutter: true; title: ; notranslate">
firefox report.html
</pre>
<p>Le rapport possède deux parties, la première étant composée de <strong>statistiques</strong>,</p>
<p><a title="Rapport de montée en charge Tsung" href="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/02/tsung-rapport-1-1024x615.png" rel="lightbox"><img alt="Rapport tsung" src="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/02/tsung-rapport-1-1024x615.png" width="500px" /></a></p>
<p>et la seconde de <strong>graphiques</strong>.</p>
<p><a title="Rapport de montée en charge Tsung" href="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/02/tsung-rapport-2-1024x615.png" rel="lightbox"><img alt="Rapport tsung" src="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/02/tsung-rapport-2-1024x615.png" width="500px" /></a></p>
<p><a title="Rapport de montée en charge Tsung" href="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/02/tsung-rapport-3-1024x615.png" rel="lightbox"><img alt="Rapport tsung" src="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/02/tsung-rapport-3-1024x615.png" width="500px" /></a></p>
<p>Il ne reste maintenant plus qu’à analyser le rapport afin de tirer les conclusions de cette montée en charge. A noter que le rapport ci-dessus a été généré en quelques secondes de tests (d’où le peu d’informations qu’il contient).</p>
]]></content:encoded>
			<wfw:commentRss>https://www.blog.florian-bogey.fr/tutoriel-tests-montee-charge-tsung-partie-3.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Effectuer des tests de montée en charge avec Tsung (Partie 2 &#8211; Configuration)</title>
		<link>https://www.blog.florian-bogey.fr/tutoriel-tests-montee-charge-tsung-partie-2.html</link>
		<comments>https://www.blog.florian-bogey.fr/tutoriel-tests-montee-charge-tsung-partie-2.html#comments</comments>
		<pubDate>Wed, 13 Feb 2013 21:05:53 +0000</pubDate>
		<dc:creator><![CDATA[Florian]]></dc:creator>
				<category><![CDATA[Administration Linux]]></category>
		<category><![CDATA[Développement web]]></category>
		<category><![CDATA[Systèmes et réseaux]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[charge]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[montée en charge]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[stress]]></category>
		<category><![CDATA[stress test]]></category>
		<category><![CDATA[Tsung]]></category>
		<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.blog.florian-bogey.fr/?p=302</guid>
		<description><![CDATA[Cet article est la seconde partie d&#8217;un tutoriel en trois phases, consacré à Tsung. Après nous être intéressé à l&#8217;installation de Tsung, nous allons dans cette seconde partie détailler la configuration de l&#8217;outil (tout en restant dans le cadre du test d&#8217;une application web) ainsi que l&#8217;enregistrement de scénarios. Sommaire du tutoriel Effectuer des tests [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Cet article est la seconde partie d&rsquo;un tutoriel en trois phases, consacré à <strong>Tsung</strong>. Après nous être intéressé à l&rsquo;<a title="Effectuer des tests de montée en charge avec Tsung (Partie 1 – Installation)" href="http://www.blog.florian-bogey.fr/tutoriel-tests-montee-charge-tsung-partie-1.html">installation de Tsung</a>, nous allons dans cette seconde partie détailler la configuration de l&rsquo;outil (tout en restant dans le cadre du test d&rsquo;une application web) ainsi que l&rsquo;enregistrement de scénarios.</p>
<p><span id="more-302"></span></p>
<p><strong>Sommaire du tutoriel</strong></p>
<ol>
<li><a title="Effectuer des tests de montée en charge avec Tsung (Partie 1 – Installation)" href="http://www.blog.florian-bogey.fr/tutoriel-tests-montee-charge-tsung-partie-1.html">Effectuer des tests de montée en charge avec Tsung (Partie 1 – Installation)</a></li>
<li><strong>Effectuer des tests de montée en charge avec Tsung (Partie 2 – Configuration)</strong></li>
<li><a title="Effectuer des tests de montée en charge avec Tsung (Partie 3 – Le test)" href="http://www.blog.florian-bogey.fr/tutoriel-tests-montee-charge-tsung-partie-3.html">Effectuer des tests de montée en charge avec Tsung (Partie 3 – Le test)</a></li>
</ol>
<h2 class="paddingTop">1 &#8211; Copier un exemple basique dans ~/.tsung</h2>
<p><strong>Tsung</strong> propose plusieurs fichiers d’exemples de configuration, et nous allons ici en prendre un simple afin de l’adapter à notre application. Il faut tout d’abord vérifier l’existence du répertoire ~/.tsung qui est l’emplacement des fichiers de configuration et de journaux de Tsung.</p>
<pre class="brush: bash; auto-links: false; gutter: true; title: ; notranslate">
Mkdir ~/.tsung
</pre>
<p>Copier ensuite le fichier d’exemple.</p>
<pre class="brush: bash; auto-links: false; gutter: true; title: ; notranslate">
cp  /usr/share/doc/tsung/examples/http_simple.xml ~/.tsung/tsung.xml
</pre>
<h2 class="paddingTop">2 &#8211; Enregistrement d’un scénario</h2>
<p>A cette étape nous allons utiliser la commande « <strong>Tsung-recorder</strong> » pour enregistrer un scénario de navigation, c’est-à-dire l’activité d’un internaute sur notre application. Cette étape est néanmoins optionnelle puisqu’il sera possible d’écrire notre scénario directement dans le fichier de configuration de <strong>Tsung</strong> (un scénario peut être juste le chargement d’une page, un fichier etc.).</p>
<p>Pour lancer l’enregistrement d’un scénario il suffit de taper la commande :</p>
<pre class="brush: bash; auto-links: false; gutter: true; title: ; notranslate">
tsung-recorder start
</pre>
<p><strong>Tsung-recorder</strong> lancera un proxy qui écoutera sur le port 8090 et enregistrera la navigation dans un fichier. Il suffira ensuite de paramétrer un navigateur internet afin qu’il utilise ce proxy.</p>
<p><strong>Tsung recorder</strong> nous indiquera aussi le nom du fichier généré.</p>
<p><a title="Résultat de la commande Tsung-recorder start" href="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/02/tsung-recorder.jpg" rel="lightbox"><img alt="Tsung recorder" src="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/02/tsung-recorder.jpg" width="500" /></a></p>
<p>L’étape suivante est de lancer le navigateur (ici Firefox) installé sur le serveur. Si vous ne possédez pas d’interface graphique sur le serveur, il faudra rediriger la sortie graphique avec l’option –X de ssh.</p>
<p>Pour ce faire, il faut tout d’abord installer les paquets X Window.</p>
<pre class="brush: bash; auto-links: false; gutter: true; title: ; notranslate">
yum groupinstall 'X Window System'
</pre>
<p>Ouvrir une nouvelle session SSH.</p>
<pre class="brush: bash; auto-links: false; gutter: true; title: ; notranslate">
ssh –X utilisateur@serveur
</pre>
<p>Puis lancer Firefox via la commande.</p>
<pre class="brush: bash; auto-links: false; gutter: true; title: ; notranslate">
Firefox
</pre>
<p>Votre navigateur doit alors s’ouvrir. Il suffit maintenant de configurer le proxy et de naviguer sur l’application que l’on souhaite tester.</p>
<p><a title="Configurer le proxy de Firefox pour Tsung" href="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/02/proxy-firefox.png" rel="lightbox"><img alt="Tsung recorder" src="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/02/proxy-firefox.png" width="500" /></a></p>
<p>Une fois terminé, taper la commande suivante pour arrêter l’enregistrement :</p>
<pre class="brush: bash; auto-links: false; gutter: true; title: ; notranslate">
tsung-recorder stop
</pre>
<p>Nous pouvons visualiser l’enregistrement en ouvrant le fichier :</p>
<pre class="brush: bash; auto-links: false; gutter: true; title: ; notranslate">
cat  ~/.tsung/tsung_recorder20130201-2335.xml
</pre>
<p>Voici un extrait du contenu :</p>
<pre class="brush: xml; auto-links: false; gutter: true; title: ; notranslate">
&lt;request&gt;&lt;http url='/index.html' version='1.1' method='GET'&gt;&lt;/http&gt;&lt;/request&gt;
&lt;request&gt;&lt;http url='/contact.html' version='1.1' method='GET'&gt;&lt;/http&gt;&lt;/request&gt;
</pre>
<h2 class="paddingTop">3 &#8211; Configuration du test</h2>
<p>Maintenant que tout est installé et que notre scénario est enregistré, nous allons éditer la configuration de notre test afin de renseigner tous les paramètres de la montée en charge. Pour cela il faut éditer le fichier<strong> tsung.xml</strong></p>
<p>Dans le XML de configuration, quatre nœuds vont nous intéresser :</p>
<ul>
<li><strong>&lt;Clients&gt;</strong> : Il s’agit de définir les clients utilisés par Tsung. Il est possible de définir les IP, nombre d’utilisateurs maximum, nombre de processeurs etc.</li>
<li><strong>&lt;Servers&gt;</strong> : Défini le serveur cible (notre plateforme à tester).</li>
<li><strong>&lt;Load&gt;</strong> : Défini la/les phase(s) d’arrivée(s) de nos visiteurs, c’est-à-dire les étapes de notre montée en charge. Le nœud Load est donc composé d’un ou plusieurs nœuds <strong>arrivalphase</strong>.
<ul>
<li><strong>&lt;Arrivalphase&gt;</strong> : Contient les détails d’une phase d’arrivée : durée, nombre d’utilisateurs à simuler, fréquence d’arrivée des visiteurs …</li>
<li>Généralement, plusieurs phases seront définies en accentuant la montée en charge, jusqu’à arriver à un stress intensif.</li>
</ul>
</li>
<li><strong>&lt;Sessions&gt;</strong> : Contient les scénarios d’utilisation possible. Chaque scénario équivaut à un nœud « Session », et est composé de « Request ». A noter qu’il est possible de définir des probabilités pour les scénarios (le total des probabilités doit toujours être égal à 100).
<ul>
<li><strong>Les boucles</strong> : permettent d’augmenter le nombre de requêtes à effectuer sur l’application. Tsung nous permet de boucler sur les balises <strong>&lt;request&gt;</strong>, via l’utilisation de <strong>&lt;For&gt;</strong> …</li>
<li>&lt;for from=&nbsp;&raquo;1&Prime; to=&nbsp;&raquo;10&Prime; var=&nbsp;&raquo;i&nbsp;&raquo;&gt;&lt;request&gt;&#8230;&lt;/request&gt;&lt;/for&gt; : Pour boucler 10 fois sur les &lt;<strong>Request&gt;</strong>, de façon à générer encore plus de requêtes sur notre plateforme.</li>
</ul>
</li>
</ul>
<p>Maintenant que nous avons présenté rapidement les principaux points du fichier de configuration, nous allons passer à l’édition. Pour ce faire, il suffit d’ouvrir le fichier<strong> ~/.tsung/tsung.xml</strong>, et de le modifier afin de créer la configuration de test idéale pour votre architecture, vos besoins, etc.</p>
<pre class="brush: bash; auto-links: false; gutter: true; title: ; notranslate">
vi ~/.tsung/tsung.xml
</pre>
<p>Voici un exemple de fichier XML :</p>
<pre class="brush: xml; auto-links: false; gutter: true; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!DOCTYPE tsung SYSTEM &quot;/usr/share/tsung/tsung-1.0.dtd&quot;&gt;
&lt;tsung loglevel=&quot;notice&quot; version=&quot;1.0&quot;&gt;

	&lt;!-- Configuration du client --&gt;
	&lt;clients&gt;
		&lt;client host=&quot;localhost&quot; use_controller_vm=&quot;true&quot;/&gt;
	&lt;/clients&gt;

	&lt;!-- Configuration du serveur --&gt;
	&lt;servers&gt;
		&lt;server host=&quot;192.168.1.11&quot; port=&quot;80&quot; type=&quot;tcp&quot;&gt;&lt;/server&gt;
	&lt;/servers&gt;

	&lt;!-- phases d'arrivée, 3 paliers de 10 minutes où l'on augmente la fréquence d'arrivée de 1 puis 10 puis 30 visiteurs par seconde --&gt;
    &lt;load&gt;
        &lt;arrivalphase phase=&quot;1&quot; duration=&quot;10&quot; unit=&quot;minute&quot;&gt;
            &lt;users arrivalrate=&quot;1&quot; unit=&quot;second&quot;&gt;&lt;/users&gt;
        &lt;/arrivalphase&gt;
        &lt;arrivalphase phase=&quot;2&quot; duration=&quot;10&quot; unit=&quot;minute&quot;&gt;
            &lt;users arrivalrate=&quot;10&quot; unit=&quot;second&quot;&gt;&lt;/users&gt;
        &lt;/arrivalphase&gt;
        &lt;arrivalphase phase=&quot;3&quot; duration=&quot;10&quot; unit=&quot;minute&quot;&gt;
            &lt;users arrivalrate=&quot;30&quot; unit=&quot;second&quot;&gt;&lt;/users&gt;
        &lt;/arrivalphase&gt;
    &lt;/load&gt;

	&lt;!-- Les scénarios --&gt;
	&lt;sessions&gt;
		&lt;!-- Scénarios 1 avec 70% de probabilité, l'internaute charge successivement 3 pages --&gt;
		&lt;session name=&quot;scenario1&quot; probability=&quot;70&quot; type=&quot;ts_http&quot;&gt;
			&lt;request&gt;&lt;http url='/page1.html' version='1.1' method='GET'&gt;&lt;/http&gt;&lt;/request&gt;
			&lt;request&gt;&lt;http url='/page2.html' version='1.1' method='GET'&gt;&lt;/http&gt;&lt;/request&gt;
			&lt;request&gt;&lt;http url='/page3.html' version='1.1' method='GET'&gt;&lt;/http&gt;&lt;/request&gt;
		&lt;/session&gt;
		&lt;!-- Scénarios 2 avec 30% de probabilité, l'internaute charge 10 fois la page 1 --&gt;
		&lt;session name=&quot;scenario2&quot; probability=&quot;30&quot; type=&quot;ts_http&quot;&gt;
			&lt;for from=&quot;1&quot; to=&quot;10&quot; var=&quot;i&quot;&gt;
				&lt;request&gt;&lt;http url='/page1.html' version='1.1' method='GET'&gt;&lt;/http&gt;&lt;/request&gt;
			&lt;/for&gt;
		&lt;/session&gt;
	&lt;/sessions&gt;
&lt;/tsung&gt;
</pre>
<p>Dans la troisième et dernière partie de ce tutoriel nous verrons comment <a title="Effectuer des tests de montée en charge avec Tsung (Partie 3 – Le test)" href="http://www.blog.florian-bogey.fr/tutoriel-tests-montee-charge-tsung-partie-3.html">lancer le test de montée en charge et générer un rapport</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.blog.florian-bogey.fr/tutoriel-tests-montee-charge-tsung-partie-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Effectuer des tests de montée en charge avec Tsung (Partie 1 &#8211; Installation)</title>
		<link>https://www.blog.florian-bogey.fr/tutoriel-tests-montee-charge-tsung-partie-1.html</link>
		<comments>https://www.blog.florian-bogey.fr/tutoriel-tests-montee-charge-tsung-partie-1.html#comments</comments>
		<pubDate>Wed, 13 Feb 2013 21:00:09 +0000</pubDate>
		<dc:creator><![CDATA[Florian]]></dc:creator>
				<category><![CDATA[Administration Linux]]></category>
		<category><![CDATA[Développement web]]></category>
		<category><![CDATA[Systèmes et réseaux]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[charge]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[montée en charge]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[stress]]></category>
		<category><![CDATA[stress test]]></category>
		<category><![CDATA[Tsung]]></category>
		<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.blog.florian-bogey.fr/?p=268</guid>
		<description><![CDATA[Cet article est la première partie d&#8217;un tutoriel en trois phases, consacré à Tsung, un outil de test de montées charge multi-protocoles. Dans cette première partie nous ferons une brève introduction concernant l&#8217;outil et les tests de montée en charge, puis nous verrons comment installer Tsung sur une distribution Linux. Tsung est un outil permettant [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Cet article est la première partie d&rsquo;un tutoriel en trois phases, consacré à <strong>Tsung</strong>, un outil de test de montées charge multi-protocoles. Dans cette première partie nous ferons une brève introduction concernant l&rsquo;outil et les tests de montée en charge, puis nous verrons comment installer Tsung sur une distribution Linux.</p>
<p><span id="more-268"></span></p>
<p><strong>Tsung</strong> est un outil permettant d’effectuer des tests de montée en charge sur une architecture. Une de ses particularités, est qu’il ne se limite pas au protocole <strong>HTTP</strong>, mais gère aussi WebDAV, SOAP, PostgreSQL, <strong>MySQL</strong> ou encore LDAP. Tsung est gratuit, distribué sous licence GPLv2 et dispose d’une <a title="Documentation Tsung" href="http://tsung.erlang-projects.org/user_manual.html" target="_blank">documentation </a>relativement claire.</p>
<p>Le principe est relativement simple : l’application va simuler l’arrivée de nombreux utilisateurs sur la plateforme. Le plus de <strong>Tsung</strong> par rapport à ses concurrent est de pouvoir créer des scénarios d’utilisation (et propose même un utilitaire d’enregistrement de scénario). Cela signifie que l’application ne se contente pas de charger une page à intervalle régulier, mais de simuler la navigation sur la plateforme.</p>
<p>Une fois le test terminé, <strong>Tsung</strong> nous permettra de générer un rapport contenant une série de graphiques ; l’analyse sera donc relativement simple.</p>
<p>L’utilisation d’utilitaires de montée en charge comme Tsung permet :</p>
<ul>
<li>De connaître la charge qu’une plateforme peut supporter</li>
<li>Vérifier que la capacité d’accueil de la plateforme est conforme aux spécifications (et donc aux demandes d’un client par exemple)</li>
</ul>
<p>Avant d’utiliser cet outil, il est bon de s’assurer de deux choses :</p>
<ul>
<li>Que le réseau est suffisamment dimensionné : en effet un réseau sous dimensionné créera un goulot d’étranglement en amont de notre plateforme.</li>
<li>La plateforme doit vous appartenir. Dans le cas contraire, vous devez avoir un accord de l’hébergeur.</li>
</ul>
<p>Nous allons ici nous intéresser à la mise en place d’un test simple sur une application web. Nous effectuerons les manipulations sous <strong>CentOS</strong>, les commandes seront donc identiques sous <strong>Fedora</strong> et <strong>Red Hat</strong> (RHEL). Pour les autres distributions, seuls les noms des paquets devraient changer ainsi que deux ou trois commandes.</p>
<p><strong>Sommaire du tutoriel</strong></p>
<ol>
<li><strong>Effectuer des tests de montée en charge avec Tsung (Partie 1 – Installation)</strong></li>
<li><a title="Effectuer des tests de montée en charge avec Tsung (Partie 2 – Configuration)" href="http://www.blog.florian-bogey.fr/tutoriel-tests-montee-charge-tsung-partie-2.html">Effectuer des tests de montée en charge avec Tsung (Partie 2 – Configuration)</a></li>
<li><a title="Effectuer des tests de montée en charge avec Tsung (Partie 3 – Le test)" href="http://www.blog.florian-bogey.fr/tutoriel-tests-montee-charge-tsung-partie-3.html">Effectuer des tests de montée en charge avec Tsung (Partie 3 – Le test)</a></li>
</ol>
<h2 class="paddingTop">1 &#8211; Installer CentOS</h2>
<p>Comme dit précédemment, nous utiliserons <strong>CentOS</strong>, la version 6.3 minimale. Pour le téléchargement, c’est par <a title="Télécharger CentOS" href="http://www.centos.org/modules/tinycontent/index.php?id=31" target="_blank">ici</a>.</p>
<p>La première étape sera donc l’installation de la distribution.</p>
<h2 class="paddingTop">2 &#8211; Ajouter les dépôts additionnels</h2>
<p>Nous installons ici les dépôts <strong>RPMForge</strong>, <strong>EPEL</strong> et <strong>Remi</strong> qui nous servirons à installer les paquets requis pour l’installation de <strong>Tsung</strong>.</p>
<pre class="brush: bash; auto-links: false; gutter: true; title: ; notranslate">
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
</pre>
<h2 class="paddingTop">3 &#8211; Mise à jour de la distribution et installation des paquets utiles</h2>
<p>Nous allons maintenant mettre à jour la distribution et installer les paquets Man, Locate, Bash-Completion, Make et Wget.</p>
<pre class="brush: bash; auto-links: false; title: ; notranslate">
yum update
yum install man mlocate bash-completion make wget
</pre>
<h2 class="paddingTop">4 &#8211; Installer les pré-requis</h2>
<p>Nous allons maintenant installer les paquets requis pour l’installation de <strong>Tsung</strong>. Il s’agit d’<strong>Erlang</strong>, <strong>Perl</strong>, Gnuplot ainsi que certains modules de Perl.</p>
<pre class="brush: bash; auto-links: false; title: ; notranslate">
yum install erlang perl gnuplot perl-RRD-Simple.noarch perl-Log-Log4perl-RRDs.noarch perl-Template-Toolkit
</pre>
<p>Nous installerons aussi Firefox car il nous servira pour la visualisation des rapports.</p>
<pre class="brush: bash; auto-links: false; title: ; notranslate">
yum --enablerepo=remi install Firefox
</pre>
<h2 class="paddingTop">5 &#8211; Installation de Tsung</h2>
<p>Nous allons maintenant passer à l’installation de <strong>Tsung</strong> à proprement parler. A l’heure de l’écriture de ce guide, Tsung est en version 1.4.2. La dernière version se trouve sur <a title="Télécharger Tsung" href="http://tsung.erlang-projects.org" target="_blank">le site officiel</a>.</p>
<p>Pour le téléchargement :</p>
<pre class="brush: bash; auto-links: false; title: ; notranslate">
cd /tmp
wget http://tsung.erlang-projects.org/dist/tsung-1.4.2.tar.gz
</pre>
<p>Ensuite il faut décompresser l’archive et compiler Tsung. Cette dernière opération peut être un peu longue.</p>
<pre class="brush: bash; auto-links: false; title: ; notranslate">
tar zxfv  tsung-1.4.2.tar.gz
cd tsung-1.4.2
./configure &amp;&amp; make &amp;&amp; make install
</pre>
<p><a title="Effectuer des tests de montée en charge avec Tsung (Partie 2 – Configuration)" href="http://www.blog.florian-bogey.fr/tutoriel-tests-montee-charge-tsung-partie-2.html">Partie 2 : La configuration de Tsung</p>
<p></a></p>
]]></content:encoded>
			<wfw:commentRss>https://www.blog.florian-bogey.fr/tutoriel-tests-montee-charge-tsung-partie-1.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
