<?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; Développement web</title>
	<atom:link href="https://www.blog.florian-bogey.fr/category/developpement-web/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>PHP : Trier un tableau suivant la valeur d&#8217;une clé</title>
		<link>https://www.blog.florian-bogey.fr/php-trier-tableau-suivant-valeur-clef.html</link>
		<comments>https://www.blog.florian-bogey.fr/php-trier-tableau-suivant-valeur-clef.html#comments</comments>
		<pubDate>Mon, 20 May 2013 20:25:56 +0000</pubDate>
		<dc:creator><![CDATA[Florian]]></dc:creator>
				<category><![CDATA[Développement web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[sort]]></category>
		<category><![CDATA[tableau]]></category>
		<category><![CDATA[uasort]]></category>
		<category><![CDATA[usort]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.blog.florian-bogey.fr/?p=534</guid>
		<description><![CDATA[Aujourd&#8217;hui un petit billet concernant le PHP et plus particulièrement le tri au sein des tableaux. Nous allons voir comment trier un tableau suivant la valeur associée à une clef. L&#8217;objectif est ici de trier un tableau suivant la valeur d&#8217;une clé, cela s&#8217;adresse donc à un tableau multidimensionnel (deux dimensions pour être précis), pour [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Aujourd&rsquo;hui un petit billet concernant le PHP et plus particulièrement le tri au sein des tableaux. Nous allons voir comment trier un tableau suivant la valeur associée à une clef.</p>
<p><span id="more-534"></span></p>
<p>L&rsquo;objectif est ici de trier un tableau suivant la valeur d&rsquo;une clé, cela s&rsquo;adresse donc à un tableau multidimensionnel (deux dimensions pour être précis), pour ce faire nous utiliserons la fonction <strong>usort</strong>.</p>
<p>Prenons par exemple ce tableau et admettons que nous souhaitons le tirer par rapport aux valeurs de la clé &laquo;&nbsp;val&nbsp;&raquo;</p>
<pre class="brush: php; title: ; notranslate">
$a = array(
'0' =&gt; array('val' =&gt; 10, 'text' =&gt; 'mon texte 10'),
'1' =&gt; array('val' =&gt; 1, 'text' =&gt; 'mon texte 1'),
'2' =&gt; array('val' =&gt; 3, 'text' =&gt; 'mon texte 3'),
'3' =&gt; array('val' =&gt; -2, 'text' =&gt; 'mon texte -2'),
'4' =&gt; array('val' =&gt; 8, 'text' =&gt; 'mon texte 8'),
'5' =&gt; array('val' =&gt; 50, 'text' =&gt; 'mon texte 50'),
'6' =&gt; array('val' =&gt; 5, 'text' =&gt; 'mon texte 5'),
);
</pre>
<p>Nous allons donc utiliser la fonction <strong>usort</strong> qui permet de trier un tableau suivant une fonction que l&rsquo;on définit. Nous allons donc créer une fonction comparant les clés.</p>
<pre class="brush: php; title: ; notranslate">
	function fonctionComparaison($a, $b){
		return $a['val'] &gt; $b['val'];
	}
</pre>
<p>Puis nous l&rsquo;appelons de la manière suivante :</p>
<pre class="brush: php; title: ; notranslate">usort($a, 'fonctionComparaison');</pre>
<p>Pour la même utilisation au sein d&rsquo;une classe (si &laquo;&nbsp;fonctionComparaison&nbsp;&raquo; était une des méthodes de la classe), le second paramètre est alors un tableau :</p>
<pre class="brush: php; title: ; notranslate">usort($a, array($this,'fonctionComparaison'));</pre>
<p>Et voici le résultat :</p>
<p><img class="size-full wp-image-541" style="border: 0 none;" alt="PHP : Trier un tableau suivant la valeur d'une clé" src="http://www.blog.florian-bogey.fr/wp-content/uploads/2013/05/php-usort-array-uasort.jpg" width="393" height="450" /></p>
<p>A noter que les clés originales ont été remplacées par de nouvelles. Pour conserver les clés, il aurait fallu utiliser la fonction <strong>uasort</strong> qui fonctionne exactement de la même manière, mais qui conserve les clés.</p>
<p><a title="Photo" href="http://commons.wikimedia.org/wiki/File:ElePHPant_studying_notes_from_SugarCon_2007.jpg" target="_blank">Photo</a></p>
]]></content:encoded>
			<wfw:commentRss>https://www.blog.florian-bogey.fr/php-trier-tableau-suivant-valeur-clef.html/feed</wfw:commentRss>
		<slash:comments>3</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>Ambiance, un plugin jQuery de notifications simple et efficace</title>
		<link>https://www.blog.florian-bogey.fr/ambiance-un-plugin-de-notifications-simple-et-efficace.html</link>
		<comments>https://www.blog.florian-bogey.fr/ambiance-un-plugin-de-notifications-simple-et-efficace.html#comments</comments>
		<pubDate>Fri, 01 Mar 2013 20:23:08 +0000</pubDate>
		<dc:creator><![CDATA[Florian]]></dc:creator>
				<category><![CDATA[Développement web]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[ambiance]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[notification]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.blog.florian-bogey.fr/?p=386</guid>
		<description><![CDATA[Aujourd&#8217;hui, il existe des dizaines et des dizaines de plugins jQuery permettant d&#8217;afficher des notifications, un des plus connus et plus complet est certainement Noty. Aujourd&#8217;hui nous allons présenter Ambiance, un plugin simple, léger et rapide à mettre en place. La mise en place d&#8217;Ambiance est très simple il suffit d&#8217;inclure jQuery ainsi que le [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Aujourd&rsquo;hui, il existe des dizaines et des dizaines de plugins jQuery permettant d&rsquo;afficher des notifications, un des plus connus et plus complet est certainement <a title="Noty, jQuery plugin" href="needim.github.com/noty" target="_blank">Noty.</a> Aujourd&rsquo;hui nous allons présenter Ambiance, un plugin simple, léger et rapide à mettre en place.</p>
<p><span id="more-386"></span></p>
<p>La mise en place d&rsquo;Ambiance est très simple il suffit d&rsquo;inclure <a title="Jquery" href="http://www.jquery.com/" target="_blank">jQuery</a> ainsi que <a title="Ambiance, jQuery plugin" href="https://github.com/richardhsu/jquery.ambiance" target="_blank">le plugin</a></p>
<pre class="brush: xml; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot; src=&quot;/js/jquery-1.9.1.js&quot;&gt;&lt;/script&gt;
&lt;link href=&quot;/css/jquery.ambiance.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;/js/jquery.ambiance.js&quot;&gt;&lt;/script&gt;
</pre>
<p><br/>Pour l&rsquo;initialisation et l&rsquo;affichage des notifications, c&rsquo;est très simple, la seule information obligatoire est le message à afficher :</p>
<pre class="brush: jscript; title: ; notranslate">
$.ambiance({message: &quot;Texte à afficher à l'utilisateur.&quot;});
</pre>
<p><br/>Pour déterminer le temps d&rsquo;affichage de la notification il suffit d&rsquo;utiliser le paramètre timeout, qui définit la durée d&rsquo;affichage en secondes</p>
<pre class="brush: jscript; title: ; notranslate">
$.ambiance({message: &quot;Cette notification sera affichée 10 secondes.&quot;, &quot;&lt;code&gt;timeout&lt;/code&gt;&quot; : 10});
</pre>
<p><br/>Dernier point intéressant, la personnalisation des notifications, pour cela, il faudra utiliser le paramètre type, le plugin possède trois types à savoir :</p>
<ul>
<li><strong>default</strong> : Notification noire</li>
<li><strong>success</strong> : Notification verte</li>
<li><strong>error</strong> : Notification rouge</li>
</ul>
<pre class="brush: jscript; title: ; notranslate">
$.ambiance({message: &quot;Action réalisée avec succès.&quot;, &quot;type&quot;: &quot;success&quot;, &quot;&lt;code&gt;timeout&lt;/code&gt;&quot; : 10});
</pre>
<p><br/>Il est aussi possible de créer des types personnalisés en créant des classes CSS ayant comme nom &laquo;&nbsp;ambiance-nom_du_type&nbsp;&raquo;, il est aussi possible de changer complètement l&rsquo;apparence du plugin en éditant ou surchargeant les propriétés CSS.</p>
<p><a title="Ambiance, jQuery plugin" href="https://github.com/richardhsu/jquery.ambiance" target="_blank">Site officiel</a></p>
]]></content:encoded>
			<wfw:commentRss>https://www.blog.florian-bogey.fr/ambiance-un-plugin-de-notifications-simple-et-efficace.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpMyAdmin/Apache : Erreur Segmentation fault (11)</title>
		<link>https://www.blog.florian-bogey.fr/phpmyadminapache-erreur-segmentation-fault-11.html</link>
		<comments>https://www.blog.florian-bogey.fr/phpmyadminapache-erreur-segmentation-fault-11.html#comments</comments>
		<pubDate>Wed, 20 Feb 2013 20:13:41 +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[apache]]></category>
		<category><![CDATA[eAccelerator]]></category>
		<category><![CDATA[phpmyadmin]]></category>

		<guid isPermaLink="false">http://www.blog.florian-bogey.fr/?p=370</guid>
		<description><![CDATA[A la suite de l&#8217;installation d&#8217;un serveur web sur CentOS (avec Apache 2 et phpMyAdmin) en utilisant le dépôt EPEL, l&#8217;accès à phpMyAdmin était impossible. Le navigateur n&#8217;affichait aucun message d&#8217;erreur, uniquement une page blanche. Après plusieurs vérifications de la configuration de phpMyAdmin, l&#8217;analyse des logs Apache nous informe d&#8217;une erreur lors de l&#8217;accès : [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>A la suite de l&rsquo;installation d&rsquo;un serveur web sur <strong>CentOS</strong> (avec Apache 2 et phpMyAdmin) en utilisant le dépôt EPEL, l&rsquo;accès à <strong>phpMyAdmin</strong> était impossible. Le navigateur n&rsquo;affichait aucun message d&rsquo;erreur, uniquement une page blanche.</p>
<p><span id="more-370"></span></p>
<p>Après plusieurs vérifications de la configuration de <strong>phpMyAdmin</strong>, l&rsquo;analyse des logs Apache nous informe d&rsquo;une erreur lors de l&rsquo;accès :</p>
<pre class="brush: bash; title: ; notranslate">
[notice] child pid XXXX exit signal Segmentation fault (11)
</pre>
<p>Le problème viens d&rsquo;<strong>eAccelerator</strong>, un module de PHP permettant d’accélérer l’exécution des scripts. Pour corriger le problème, il suffit de<strong> désactiver eAccelerator</strong>. Pour ce fait, il faut éditer le fichier <em>eaccelerator.ini</em></p>
<pre class="brush: bash; title: ; notranslate">
vi /etc/php.d/eaccelerator.ini
</pre>
<p>Et commenter la ligne suivante (en ajoutant un dièse devant) :</p>
<pre class="brush: bash; title: ; notranslate">
#avant
extension=&quot;eaccelerator.so&quot;
#après
#extension=&quot;eaccelerator.so&quot;
</pre>
<p>Et pour finir, il ne faut pas oublier de redémarrer Apache :</p>
<pre class="brush: bash; title: ; notranslate">
service httpd restart
</pre>
]]></content:encoded>
			<wfw:commentRss>https://www.blog.florian-bogey.fr/phpmyadminapache-erreur-segmentation-fault-11.html/feed</wfw:commentRss>
		<slash:comments>0</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>
		<item>
		<title>Forcer les www devant un nom de domaine</title>
		<link>https://www.blog.florian-bogey.fr/forcer-les-www-devant-un-domaine.html</link>
		<comments>https://www.blog.florian-bogey.fr/forcer-les-www-devant-un-domaine.html#comments</comments>
		<pubDate>Sat, 26 Jan 2013 10:30:56 +0000</pubDate>
		<dc:creator><![CDATA[Florian]]></dc:creator>
				<category><![CDATA[Développement web]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[redirection]]></category>
		<category><![CDATA[référencement]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.blog.florian-bogey.fr/?p=222</guid>
		<description><![CDATA[Sur un serveur Apache, forcer la présence des www dans l&#8217;adresse de votre site est quelque chose de relativement facile. Le seul pré-requis est d&#8217;avoir le mod_rewrite d&#8217;activé. Forcer l’utilisation des www permet en plus de faire plus esthétique ou plus professionnel d&#8217;éviter le &#171;&#160;duplicate content&#160;&#187; (duplication de contenu) lors de votre référencement. Ainsi toutes vos pages seront référencées [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Sur un serveur Apache, forcer la présence des www dans l&rsquo;adresse de votre site est quelque chose de relativement facile. Le seul pré-requis est d&rsquo;avoir le mod_rewrite d&rsquo;activé.</p>
<p>Forcer l’utilisation des www permet en plus de faire plus esthétique ou plus professionnel d&rsquo;éviter le &laquo;&nbsp;duplicate content&nbsp;&raquo; (duplication de contenu) lors de votre référencement. Ainsi toutes vos pages seront référencées avec le www dans le nom de domaine.</p>
<p><span id="more-222"></span></p>
<p>Pour ce faire il suffit d&rsquo;ajouter les lignes suivantes en haut de votre fichier .htaccess</p>
<pre class="brush: plain; title: ; notranslate">
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mon-site.com [NC]
RewriteRule ^(.*)$ http://www.mon-site.com/$1 [L,R=301]
</pre>
<p>Ainsi, les personnes accédant à http://mon-site.com seront automatiquement redirigées vers http://www.mon-site.com</p>
<p>A noter que si vous utilisez déjà la <a title="Activer la réécriture (mod_rewrite) d’URL sous WAMP" href="http://www.blog.florian-bogey.fr/activer-la-reecriture-mod_rewrite-durl-sous-wamp.html">réécriture d&rsquo;URL</a> est déjà activée sur votre site, il sera alors inutile d&rsquo;ajouter la première ligne.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.blog.florian-bogey.fr/forcer-les-www-devant-un-domaine.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
