<?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>Astuces de Webmaster &#187; Architecture</title>
	<atom:link href="http://www.astucesdewebmaster.com/tag/:/www.astucesdewebmaster.com/tag/architecture/feed" rel="self" type="application/rss+xml" />
	<link>http://www.astucesdewebmaster.com</link>
	<description></description>
	<lastBuildDate>Fri, 03 Feb 2012 11:12:16 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Mon site est lent, que faire (serveurs dédiés)</title>
		<link>http://www.astucesdewebmaster.com/architecture/mon-site-est-lent-que-faire-serveurs-dedies-391</link>
		<comments>http://www.astucesdewebmaster.com/architecture/mon-site-est-lent-que-faire-serveurs-dedies-391#comments</comments>
		<pubDate>Thu, 24 Nov 2011 17:04:15 +0000</pubDate>
		<dc:creator>Rom's</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[DSI]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[serveurs]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://www.astucesdewebmaster.com/?p=391</guid>
		<description><![CDATA[Si votre site est lent, il peut y avoir plusieurs raisons : - ça peut être un problème serveur, un problème de connexion Internet ou une lenteur d&#8217;affichage Pour les problèmes de connexion Internet, on ne peut pas faire grand chose Pour les problèmes de lenteur d&#8217;affichage, les outils Yslow et PageSpeed (en ligne via [...]]]></description>
			<content:encoded><![CDATA[<p>Si votre site est lent, il peut y avoir plusieurs raisons :<br />
- ça peut être un problème serveur, un problème de connexion Internet ou une lenteur d&#8217;affichage</p>
<p>Pour les <strong>problèmes de connexion Internet</strong>, on ne peut pas faire grand chose<br />
Pour les <strong>problèmes de lenteur d&#8217;affichage</strong>, les outils Yslow et PageSpeed (en ligne via gtmetrix.com ou couplés à Firebug pour Firefox) vous donneront toutes les informations utiles pour optimiser votre site, la CSS, les images, etc.<br />
On s&#8217;intéressera ici à la <strong>partie Serveur</strong>, les raisons sont souvent parmi les suivantes :<br />
- des <strong>requêtes trop lourdes</strong> ou trop fréquentes, ou les deux<br />
- des <strong>processus (tâches, générations de fichiers) trop longs</strong> (parfois à cause des requêtes)<br />
- des <strong>serveurs &laquo;&nbsp;extérieurs&nbsp;&raquo; qui appellent vos scripts/images trop souvent</strong> (un gros site qui appelle vos images fera planter votre serveur si vous n&#8217;êtes pas dimensionné pour son trafic)</p>
<h2>Requêtes trop lourdes</h2>
<p>Connectez-vous en ligne de commande (SSH) à votre console MySQL (ou via phpMyAdmin dans l&#8217;onglet processus sur l&#8217;accueil) et regardez les processus en cours (commande SQL &laquo;&nbsp;SHOW FULL PROCESSLIST;&nbsp;&raquo;), vous en verrez peut-être des récurrentes, ou des longues. Maintenant, vous savez quoi optimiser.</p>
<p>Si votre processlist est souvent vide ou pleine de &laquo;&nbsp;sleep&nbsp;&raquo;, tout va bien. S&#8217;il y a trop de sleep avec une durée trop longue, réduisez votre timeout ou utilisez mysql_connect plutôt que mysql_pconnect. 2mn peut être une durée honnête pour un timeout.</p>
<h2>Identifier les scripts consommateurs</h2>
<p>Pour identifier les scripts consommateurs, il est intéressant d&#8217;utiliser un petit programme : <em>Apachetop</em> (<em>apt-get install apachetop</em> sous debian &#8211; <a href="http://www.tux-planet.fr/statistiques-apache-en-live-avec-apachetop/">comment installer</a> ?)<br />
<a href="http://www.astucesdewebmaster.com/wp-content/uploads/2011/11/apachetop.png"><img src="http://www.astucesdewebmaster.com/wp-content/uploads/2011/11/apachetop-300x84.png" alt="" title="apachetop" width="300" height="84" class="size-medium wp-image-392" /></a></p>
<p>Pour voir l&#8217;état du serveur, il est bon d&#8217;utiliser <em>htop</em> (<em>apt-get install htop</em> sous Debian),<br />
<a href="http://www.astucesdewebmaster.com/wp-content/uploads/2011/11/htop-screen1.jpg"><img src="http://www.astucesdewebmaster.com/wp-content/uploads/2011/11/htop-screen1-300x164.jpg" alt="" title="htop-screen[1]" width="300" height="164" class="size-medium wp-image-393" /></a></p>
<h2>Identifier les extérieurs</h2>
<p>Pour voir les extérieurs qui appellent vos scripts, rien de tel qu&#8217;un bon vieux <code>tail -f /var/log/apache2/error.log</code> (à modifier par votre nom de fichier d&#8217;erreur)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.astucesdewebmaster.com/architecture/mon-site-est-lent-que-faire-serveurs-dedies-391/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Optimiser MySQL et Apache (orienté Debian)</title>
		<link>http://www.astucesdewebmaster.com/architecture/optimiser-mysql-et-apache-356</link>
		<comments>http://www.astucesdewebmaster.com/architecture/optimiser-mysql-et-apache-356#comments</comments>
		<pubDate>Fri, 17 Jun 2011 09:28:56 +0000</pubDate>
		<dc:creator>Rom's</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[optimisation]]></category>

		<guid isPermaLink="false">http://www.astucesdewebmaster.com/?p=356</guid>
		<description><![CDATA[Optimiser mySQL : Identifiez-vous en root sur le Shell du serveur considéré Pour optimiser MySQL, on va s&#8217;intéresser principalement au fichier /etc/mysql/my.cnf (généralement ainsi situé, notamment sur les distributions Debian, mais n&#8217;hésitez pas à faire un # locate my.cnf pour identifier la localisation de ce fichier et vérifier s&#8217;il n&#8217;y a pas de doublon) nano [...]]]></description>
			<content:encoded><![CDATA[<h2>Optimiser mySQL :</h2>
<ul>
<li>Identifiez-vous en root sur le Shell du serveur considéré</li>
<li>Pour optimiser MySQL, on va s&#8217;intéresser principalement au fichier /etc/mysql/my.cnf (généralement ainsi situé, notamment sur les distributions Debian, mais n&#8217;hésitez pas à faire un # locate my.cnf pour identifier la localisation de ce fichier et vérifier s&#8217;il n&#8217;y a pas de doublon)</li>
<li>nano /etc/mysql/my.cnf     (éditons la configuration)</li>
</ul>
<p><code><br />
<strong>[mysqld]</strong><br />
     port            = 3306<br />
     socket          = /var/lib/mysql/mysql.sock<br />
     skip-locking<br />
     key_buffer = 16K<br />
     max_allowed_packet = 1M<br />
     table_cache = 4<br />
     sort_buffer_size = 64K<br />
     read_buffer_size = 256K<br />
     read_rnd_buffer_size = 256K<br />
     net_buffer_length = 2K<br />
     thread_stack = 64K<br />
<strong><em>          # pour utiliser moins de mémoire, si on n'utilise pas Berkeley DB on ajoute cette ligne </em></strong><br />
     skip-bdb<br />
<strong><em>          # idem si on n'utilise pas InnoDB</em></strong><br />
     skip-innodb<br />
<strong><em>          # de la même façon, si on n'utilise pas InnoDB, on peut commenter les lignes suivantes</em></strong><br />
     #innodb_data_home_dir = /var/lib/mysql/<br />
     #innodb_data_file_path = ibdata1:10M:autoextend<br />
     #innodb_log_group_home_dir = /var/lib/mysql/<br />
     #innodb_log_arch_dir = /var/lib/mysql/<br />
<strong><em>          # Vous pouvez définir .._buffer_pool_size entre 50 et 80 %</em></strong><br />
<strong><em>          # de la RAM mais attention à ce que l'utilisation globale de RAM par MySQL ne soit pas trop important (à suivre)</em></strong><br />
     #innodb_buffer_pool_size = 16M<br />
     #innodb_additional_mem_pool_size = 2M<br />
<strong><em>          # Définissez .._log_file_size à 25% du buffer pool size</em></strong><br />
     #innodb_log_file_size = 5M<br />
     #innodb_log_buffer_size = 8M<br />
     #innodb_flush_log_at_trx_commit = 1<br />
     #innodb_lock_wait_timeout = 50<br />
<strong>     [mysqldump]</strong><br />
     quick<br />
     max_allowed_packet = 16M<br />
<strong>     [mysql]</strong><br />
     no-auto-rehash<br />
<strong><em>          # Décommentez la ligne suivante si vous n'êtes pas familier avec SQL</em></strong><br />
     #safe-updates<br />
<strong>     [isamchk]</strong><br />
     key_buffer = 8M<br />
     sort_buffer_size = 8M<br />
<strong>     [myisamchk]</strong><br />
     key_buffer = 8M<br />
     sort_buffer_size = 8M<br />
<strong>     [mysqlhotcopy]</strong><br />
     interactive-timeout</code></p>
<p>Quelques paramètres qui nécessitent attention</p>
<h3>query_cache_size</h3>
<p>MySQL fournit une fonctionnalité qui peut s&#8217;avérer très pratique : un cache de requêtes. Lorsqu&#8217;une même requête est exécutée plusieurs fois, et retourne les mêmes résultats à chaque fois, MySQL peut mettre en cache le résultat, ce qui décharge assez le serveur.</p>
<h3>key_buffer</h3>
<p>La valeur de <em>key_buffer_size</em> est la taille du buffer utilisé pour les index. Plus il y a de mémoire tampon, et plus rapidement la commande SQL se termine et un résultat sera retourné. La règle de base est de régler le <em>key_buffer_size</em> à au moins un quart, mais pas plus de la moitié de la quantité totale de mémoire sur le serveur. Idéalement, il sera assez grand pour contenir tous les index (la taille totale de tous les fichiers .MYI sur le serveur).</p>
<h3>table_cache</h3>
<p>La valeur par défaut est 64. Chaque fois que MySQL accède à une table, il la place dans le cache. Si le système accède à de nombreuses tables, il est plus efficace d&#8217;avoir ces tables dans le cache. MySQL, étant multi-thread, peut exécuter de nombreuses requêtes sur une table au même moment, et chacune de ces requête va ouvrir une connexion avec la table. Examinez la valeur de <em>open_tables</em> aux heures de pointe. Si vous trouvez qu&#8217;il reste à la même valeur que la valeur de votre table_cache, puis que le nombre de <em>opened_tables</em> commence à augmenter rapidement, il faut augmenter la taille du <em>table_cache</em> si vous avez suffisamment de mémoire disponible.</p>
<h3>sort_buffer</h3>
<p>Le sort_buffer est très utile pour accélérer les opérations myisamchk (c&#8217;est pourquoi il est défini beaucoup plus haut dans les fichiers de configuration par défaut), mais il peut aussi être utile lors de l&#8217;exécution quotidienne un grand nombre de classements (fonctions comme sort(),&#8230;).</p>
<h3>thread_cache</h3>
<p>Si vous avez un serveur surchargé à force de recevoir un grand nombre de connexions rapides, définissez votre <em>thread_cache</em> suffisamment haut pour que la valeur threads_created de SHOW STATUS (commande SQL) cesse d&#8217;augmenter. Cela devrait décharger un peu le CPU.</p>
<h3>Autres optimisations MySQL</h3>
<p>Bien souvent, c&#8217;est sur les jointures que se jouent les lenteurs. Utilisez les jointures à bon escient, vérifiez que pour chaque clé utilisée dans les jointures, il existe bien un index sur ce champ clé, sinon créez-le tout de suite et ça fera une grande différence.</p>
<p>Les chiffres pèsent moins lourd dans les index que les lettres, par conséquent, préférez les clés numériques pour vos jointures de grosses tables pour éviter de trop surcharger vos index.</p>
<h2>Apache</h2>
<p>Le principal problème avec Apache est la quantité de RAM qu&#8217;il utilise. Nous allons voir comment baisser la quantité de RAM utilisée par Apache.</p>
<ul>
<li>Charger moins de modules </li>
<li>Faire moins de demandes simultanées</li>
<li>Recycler les processus Apache </li>
<li>Utiliser les KeepAlive, mais pas pour trop longtemps </li>
<li>Réduire vos timeout </li>
<li>Créer moins de logs </li>
<li> ne pas résoudre pas les Hostname </li>
<li> N&#8217;utilisez pas les .htaccess </li>
</ul>
<h3Charger moins de modules :</h3>
<p>Première chose, faites table rase de tous les modules non nécessaires.  Regardez vos fichiers de configuration et regardez ce que vos modules utilisent vraiment. Si vous n&#8217;utilisez pas certains modules, ne les chargez pas, cela libère de l&#8217;espace sur la mémoire vive (RAM).</p>
<h3>Faire moins de demandes simultanées</h3>
<p>Dans le fichier apache2.conf (anciennement httpd.conf) :</p>
<p>StartServers         5<br />
MinSpareServers      5<br />
MaxSpareServers     10<br />
MaxClients          20<br />
MaxRequestsPerChild  0</p>
<p>Essayez de définir certaines valeurs aussi bas que ci-dessus</p>
<h3>Réduire vos timeout</h3>
<p>Vous souhaitez limiter le nombre de processus simultanés, donc vous ne voulez pas de résidus de processus qui restent trop longtemps actifs, donc définissez votre timeout au plus bas.</p>
<p>On a tous eu des problèmes avec le timeout sur des processus coûteux en mémoire et en temps d&#8217;exécution&#8230; essayez de les faire fonctionner soit sur d&#8217;autres plateformes (hors Apache, JAVA étant situé sur une couche plus basse que PHP par exemple, il exécutera un même code beaucoup plus rapidement), soit en d&#8217;autres temps (la nuit, sur un VHOST à part avec une configuration particulière).</p>
<h3>&Eacute;viter l&#8217;utilisation des .htaccess</h3>
<p>Vous avez probablement vu la commande <em>AlowOverride None</em> qui dit grosso modo “ne cherchez pas les fichiers .htaccess”. Utiliser ces fichiers demandera à Apache de :</p>
<ul>
<li>rechercher ces fichiers fréquemment</li>
<li>parser le fichier .htaccess à chaque requête !</li>
</ul>
<p>Donc si vous avez des besoins spécifiques, déterminez-les dans la configuration de votre Virtual Host (VHOST &#8211; souvent dans /etc/apache2/apache2.conf ou dans /etc/apache2/sites-available/MONVHOST.conf)</p>
<p>(tout ceci provient en grande partie d&#8217;une traduction de http://blog.ecvps.com/?p=242)</p>
<p>Autres lectures :</p>
<ul>
<li><a href="http://ronaldbradford.com/blog/monitoring-mysql-the-error-log-2009-09-16/">[EN] Configuration des logs d&#8217;erreur de MySQL</a></li>
<li><a href="http://ronaldbradford.com/blog/the-correct-approach-to-rolling-mysql-logs-2010-02-22/">[EN] Approche des rotations de logs MySQL</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.astucesdewebmaster.com/architecture/optimiser-mysql-et-apache-356/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recevoir un e-mail ou SMS si votre serveur est down/tombé (plus de ping) &#8211; Debian</title>
		<link>http://www.astucesdewebmaster.com/architecture/recevoir-un-e-mail-ou-sms-si-votre-serveur-est-down-plus-de-ping-debian-348</link>
		<comments>http://www.astucesdewebmaster.com/architecture/recevoir-un-e-mail-ou-sms-si-votre-serveur-est-down-plus-de-ping-debian-348#comments</comments>
		<pubDate>Mon, 09 May 2011 09:42:14 +0000</pubDate>
		<dc:creator>Rom's</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[check]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[down]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[sms]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://www.astucesdewebmaster.com/?p=348</guid>
		<description><![CDATA[Qui n&#8217;a pas eu son serveur down alors qu&#8217;il était chez IKEA&#8230; je viens de mettre en place un simple script qui me permettra de recevoir un e-mail ou un SMS en cas de problème. Cela nécessite d&#8217;avoir deux serveurs, puisque l&#8217;un doit faire un &#171;&#160;ping&#160;&#187; sur l&#8217;autre qui doit répondre (&#171;&#160;pong&#160;&#187;). Appelons le serveur [...]]]></description>
			<content:encoded><![CDATA[<p>Qui n&#8217;a pas eu son serveur down alors qu&#8217;il était chez IKEA&#8230; je viens de mettre en place un simple script qui me permettra de recevoir un e-mail ou un SMS en cas de problème.</p>
<p>Cela nécessite d&#8217;avoir deux serveurs, puisque l&#8217;un doit faire un &laquo;&nbsp;ping&nbsp;&raquo; sur l&#8217;autre qui doit répondre (&laquo;&nbsp;pong&nbsp;&raquo;). Appelons le serveur à tester Frodon et celui qui le teste Gandalf.</p>
<p>Sur Gandalf, créez un script sh :<br />
<code>touch /home/checkFrodon.sh<br />
chown u+rwx /home/checkFrodon.sh</code></p>
<p>Editez ensuite checkFrodon.sh (<code>apt-get install nano</code> si nano n&#8217;est pas installé) :<br />
<code>nano /home/checkFrodon.sh</code></p>
<p>Mettez-y ceci :<br />
<code><br />
ping -c 1 "monsiteatester.fr" > /dev/null 2>&#038;1<br />
if [ $? -eq 0 ] ; then<br />
  echo "=> running"<br />
else<br />
  echo "=> not running"<br />
mutt -s "[MONSITE] Ping monsisteatester.fr nok - serveur down ?" monemail@gmail.com < /home/checkFrodon.sh<br />
fi<br />
</code></p>
<p>Testez le script en question :<br />
<code>/home/checkFrodon.sh</code><br />
Cela vous affichera dans le shell suivant les cas "=> running" ou "=> not running". Et si ça vous affiche not running, ça vous enverra un e-mail contenant le contenu du script SHELL pour rappel.</p>
<p>Pour l'automatiser, il vous suffit de créer un cron faisant appel au script en question toutes les minutes, toutes les 5 minutes, toutes les heures, comme vous voulez.</p>
<p>Enjoy !</p>
<p>Surtout, si vous avez mieux, n'hésitez pas !</p>
<p>Oh, je parlais de SMS également, parce qu'il suffit dans la condition de faire appel grâce à la commande wget à la requête explicitée ici : <a href="http://api.orange.com/fr/api/sms-api/imprimer">http://api.orange.com/fr/api/sms-api/imprimer</a></p>
<p><code>wget http://run.orangeapi.com/sms/sendSMS.xml?id=[votre API Access Key]&#038;from=[numéro court d'émission]&#038;to=[numéro de téléphone]&#038;content=[votre message à envoyer]&#038;long_text=[activer ou non le SMS long]&#038;max_sms=[nombre maximum de "parties" d'un SMS long]&#038;ack=[activer ou non l'accusé de réception]</code></p>
<p>8,36€ le crédit de 1000 SMS... ça se regarde ! (Cf <a href="http://api.orange.com/fr/api/sms-api/tarifs">grille tarifaire Orange</a>)</p>
<p>Bonus : si vous voulez tester qu'une chaine apparaît bien sur une page web (car auparavant, on ne teste que le ping, et un serveur ping même si le serveur web est tombé, il vaut donc mieux tester que le rendu Web se fait bien). Ici, on teste que l'identifiant Google Analytics existe bien dans le code source de la page, mais ça pourrait être autre chose :</p>
<p><code>cd /tmp/<br />
rm -f /tmp/index.html*<br />
wget monsite.fr<br />
if [ "$(cat /tmp/index.html | grep "UA-XXXXXX-1" )"  =  ""  ] ; then<br />
  mutt -s "[MONSITE] apache or mysql down ?" monadresse@gmail.com < /home/checkFrodon.sh<br />
  echo "monsite.fr web not running"<br />
else<br />
  echo "monsite.fr web running"<br />
fi</p>
<p></code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.astucesdewebmaster.com/architecture/recevoir-un-e-mail-ou-sms-si-votre-serveur-est-down-plus-de-ping-debian-348/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Synchronisez vos serveurs !</title>
		<link>http://www.astucesdewebmaster.com/architecture/synchronisez-vos-serveurs-346</link>
		<comments>http://www.astucesdewebmaster.com/architecture/synchronisez-vos-serveurs-346#comments</comments>
		<pubDate>Tue, 29 Mar 2011 11:02:55 +0000</pubDate>
		<dc:creator>Rom's</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[checklist]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[heure]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://www.astucesdewebmaster.com/?p=346</guid>
		<description><![CDATA[Lorsque vous vous échangez des fichiers avec des partenaires, etc. il est plutôt de bon ton d&#8217;être synchro. Pour cela, rien de plus simple, une commande vous permet de vous synchroniser avec un serveur donné. Exemple : ntpdate ntp.univ-lyon1.fr Après, il vous suffit de programmer un cron (automate) tous les jours à 2, 3 et [...]]]></description>
			<content:encoded><![CDATA[<p>Lorsque vous vous échangez des fichiers avec des partenaires, etc. il est plutôt de bon ton d&#8217;être synchro.</p>
<p>Pour cela, rien de plus simple, une commande vous permet de vous synchroniser avec un serveur donné.</p>
<p>Exemple :<br />
	<code>ntpdate ntp.univ-lyon1.fr </code></p>
<p>Après, il vous suffit de programmer un cron (automate) tous les jours à 2, 3 et 4h et vous êtes relativement tranquilles.</p>
<p>Pour rappel, vous pouvez souvent programmer un cron grâce au webmin de votre serveur, rubrique Système > taches cron (si vous n&#8217;avez pas webmin, installez-le !) ou en ligne de commande (<code>man crontab</code> si ça vous amuse)</p>
<p>Pour vérifier l&#8217;heure de votre serveur, il vous suffit d&#8217;afficher la date courante :</p>
<p><code>echo $(date '+%H.%M.%S')</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.astucesdewebmaster.com/architecture/synchronisez-vos-serveurs-346/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Créer un serveur FTP sous Debian (2011)</title>
		<link>http://www.astucesdewebmaster.com/architecture/creer-un-serveur-ftp-sous-debian-2011-333</link>
		<comments>http://www.astucesdewebmaster.com/architecture/creer-un-serveur-ftp-sous-debian-2011-333#comments</comments>
		<pubDate>Thu, 03 Mar 2011 13:07:07 +0000</pubDate>
		<dc:creator>Rom's</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[tutoriel]]></category>

		<guid isPermaLink="false">http://www.astucesdewebmaster.com/?p=333</guid>
		<description><![CDATA[Je connais pas mal de développeurs plus ou moins bons qui ne savent pas commenter monter un FTP, j&#8217;ai décidé de suivre les étapes de bout en bout en suivant des tutoriels déjà rédigés, qui posent tous des problèmes du fait qu&#8217;ils sont datés. J&#8217;ai ici remis à jour tout ce qu&#8217;il faut avec les [...]]]></description>
			<content:encoded><![CDATA[<p>Je connais pas mal de développeurs plus ou moins bons qui ne savent pas commenter monter un FTP, j&#8217;ai décidé de suivre les étapes de bout en bout en suivant des tutoriels déjà rédigés, qui posent tous des problèmes du fait qu&#8217;ils sont datés. J&#8217;ai ici remis à jour tout ce qu&#8217;il faut avec les bonnes versions, etc. Vous devriez avoir dans cette page tout ce qu&#8217;il faut pour créer FTP à partir de rien. J&#8217;ai mis les tutoriels source par respect pour les auteurs. J&#8217;ai modifié les tutoriels d&#8217;origine en ajoutant des informations qui m&#8217;ont semblé utiles.</p>
<p><strong>ATTENTION pour les débutants, si les commandes que vous faites ne fonctionnent pas, certaines nécessitent d&#8217;être connecté en &laquo;&nbsp;root&nbsp;&raquo;. Pour ce faire, tapez la commande &laquo;&nbsp;su&nbsp;&raquo; et tapez le mot de passe root pour avoir les pleins pouvoirs</strong>.</p>
<p>Nous allons utiliser Very Secure FTPd (autrement appelé vsftpd qui équipe des serveurs FTP tels que ceux Red Hat, Suse, OpenBSD, kernel.org et bien (bien sûr) Debian.</p>
<p>Loggez vous en root et tapez :<br />
<code># apt-get install vsftpd</code></p>
<p>Une fois vsftpd installé, il faudra remplacer le fichier de configuration /etc/vsftpd.conf par le suivant :</p>
<blockquote><p>    # Nous voulons que le serveur fonctionne en mode standalone<br />
    listen=YES<br />
    #<br />
    # On ne veut surtout pas de connexions en mode anonymous<br />
    anonymous_enable=NO<br />
    #<br />
    # On veut que les utilisateurs locaux puissent se connecter<br />
    local_enable=YES<br />
    #<br />
    # On veut que les utilisateurs puissent remonter des fichiers sur le serveur<br />
    write_enable=YES<br />
    #<br />
    # On fixe le masque local a 022 (les fichiers remontés auront des droits en 755)<br />
    local_umask=022<br />
    #<br />
    # On interdit l’upload anonyme<br />
    anon_upload_enable=NO<br />
    #<br />
    # Idem pour la creation de repertoires<br />
    anon_mkdir_write_enable=NO<br />
    #<br />
    # On demande a ce que les actions des utilisateurs soient loggees<br />
    xferlog_enable=YES<br />
    #<br />
    # On verifie que la commande PORT provienne bien du port 20 de la machine cliente<br />
    connect_from_port_20=YES<br />
    #<br />
    # Les logs seront enregistres dans le fichier /var/log/vsftpd.log<br />
    xferlog_file=/var/log/vsftpd.log<br />
    #<br />
    # On declare les valeurs de timeout. Celles fournies par defaut sont ok pour notre utilisation<br />
    idle_session_timeout=300<br />
    data_connection_timeout=120<br />
    connect_timeout=60<br />
    accept_timeout=60<br />
    #<br />
    # Par securite, on interdit la commande ABOR<br />
    async_abor_enable=NO<br />
    #<br />
    # Les transferts en ASCII sont souvent source de confusions<br />
    ascii_upload_enable=NO<br />
    ascii_download_enable=NO<br />
    #<br />
    # Par securite, on change la banniere<br />
    ftpd_banner=Bienvenue sur le serveur Debian Addict<br />
    #<br />
    # On veut limiter les utilisateurs a leur repertoire<br />
    chroot_local_user=YES<br />
    chroot_list_enable=NO<br />
    #<br />
    # Les heures d’enregistrement des fichiers seront affichees a l’heure locale<br />
    use_localtime=YES</p></blockquote>
<p>Une fois le fichier de configuration remplacé, on relance le serveur FTP en tapant en root :<br />
<code># /etc/init.d/vsftpd restart</code></p>
<p>A partir de ce moment, les utilisateurs ont accès à leurs répertoires personnels via FTP et leurs actions sont enregistrées dans le fichier /var/log/vsftpd.log.</p>
<p>Il nous reste donc à créer un répertoire commun auquel chacun aura accès. Pour cela, on crée un utilisateur lambda que l’on appellera &laquo;&nbsp;commun&nbsp;&raquo; [1]. En root, tapez :<br />
<code># adduser identifiantutilisateur</code></p>
<p>Le système demande ensuite le mot de passe de l’utilisateur puis différents renseignements qui sont à passer. Ce n&#8217;est PAS le mot de passe FTP, juste le mot de passe de l&#8217;utilisateur.</p>
<p>NB : Pour connaître les utilisateurs existants, en faisant <code>cat /etc/passwd</code> ou <code>cat /etc/group</code>, cela affiche les utilisateurs et les groupes qui existent dans ces fichiers, à savoir que les commandes <code>getent passwd</code> et <code>getent group</code> affichent en plus les utilisateurs de tous les annuaires connus.</p>
<p>Définition des droits sur le<br />
<code># chmod -R 755 /home/identifiantutilisateur<br />
# chown identifiantutilisateur:identifiantutilisateur -R /home/identifiantutilisateur</code></p>
<p>A ce stade, si on essaie de s&#8217;identifier avec un utilitaire FTP, le client arrivera à se connecter au serveur mais il proposera une belle erreur 530 vsftpd FAIL LOGIN: Client<br />
Il faut donc continuer et préciser les utilisateurs/mots de passe que l&#8217;on veut pour le FTP</p>
<p>Nous allons utiliser une base de données pour les noms et mots de passe des utilisateurs virtuels.</p>
<p>On a besoin d&#8217;un utilitaire de base de données qui nous servira à hasher les couples identifiant/mot de passe.</p>
<p>Dans le répertoire /etc/vsftpd/ nous allons créer un fichier login.txt contenant les infos de login, il est formé sous cette forme :</p>
<p><code><br />
user1<br />
pass1<br />
user2<br />
pass2<br />
user3<br />
pass3<br />
</code></p>
<p>Attention, ici, l&#8217;éditeur de Winscp par exemple rajoute une ligne à la fin, même si on n&#8217;en a pas l&#8217;impression, ce qui affiche le message &laquo;&nbsp;<em>db4.6_load: odd number of key/data pairs</em>&laquo;&nbsp;, il suffit alors de vérifier en SSH en utilisant la fonction <em>nano</em> par exemple :</p>
<p><code> nano /etc/vsftpd/login.txt</code><br />
une fois la dernière ligne vide supprimée s&#8217;il y en a une, faites Ctrl+X pour quitter, et confirmer avec un O majuscule puis entrée</p>
<p>Une fois le fichier fait, nous créons la base de données qui serat utilisé par PAM :<br />
Installez db4.6 :<br />
<code> apt-get install db4.6-util</code><br />
puis hashez les données du fichier login.txt dans un format sécurisé et compréhensible par vsftpd :</p>
<p><code>db4.6_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db</code></p>
<p>On sécurise les fichiers</p>
<p><code>    chmod 600 /etc/vsftpd/login.db<br />
    sudo chmod 600 /etc/vsftpd/login.txt</code></p>
<p>Il faut informer le module PAM, dans le fichier etc/pam.d/vsftpd :</p>
<p><code>    auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login<br />
    account required /lib/security/pam_userdb.so db=/etc/vsftpd/login</code></p>
<p>Et voilà, vous pouvez vous connecter via le port 21 normalement.</p>
<p><strong>Merci pour vos retours !</strong></p>
<p>Sources :<br />
<a href="http://www.debianaddict.org/article47.html">http://www.debianaddict.org/article47.html</a><br />
<a href="http://olange.developpez.com/articles/debian/installation-serveur-dedie/?page=page_5">http://olange.developpez.com/articles/debian/installation-serveur-dedie/?page=page_5</a><br />
<a href="http://www.cpasdemoi.fr/securisation-ssl-et-utilisateurs-pour-le-serveur-ftp-vsftpd-sur-debian-lenny/">http://www.cpasdemoi.fr/securisation-ssl-et-utilisateurs-pour-le-serveur-ftp-vsftpd-sur-debian-lenny/</a><br />
<a href="http://doc.fedora-fr.org/wiki/Vsftpd_:_Installation_et_configuration">http://doc.fedora-fr.org/wiki/Vsftpd_:_Installation_et_configuration</a><br />
<a href="http://www.developpez.net/forums/d744109/systemes/linux/reseau/vsftpd-serveur-dedie/">http://www.developpez.net/forums/d744109/systemes/linux/reseau/vsftpd-serveur-dedie/</a></p>
<p>ATTENTION : vérifiez bien les droits d&#8217;accès autres que SSH aux utilisateurs que vous créez !!<br />
Lire ceci : <a href="http://knowledgelayer.softlayer.com/questions/295/How+do+I+permit+specific+users+SSH+access%3F">Autorisations SSH pour les utilisateurs (compatible Debian)</a><br />
En deux mots :<br />
1. précisez grâce à un AllowUsers monutilisateur1 monutilisateur2 dans /etc/ssh/sshd_config qui est autorisé<br />
2. vous pouvez faire idem avec les groupes (AllowGroups group1 group2)<br />
3. redémarrez ssh avec /etc/init.d/ssh restart<br />
4. Faites des tests !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.astucesdewebmaster.com/architecture/creer-un-serveur-ftp-sous-debian-2011-333/feed</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>MySQLDump &#8211; Sauvegarder sa base MySQL dans un fichier (Debian ou autre)</title>
		<link>http://www.astucesdewebmaster.com/architecture/mysqldump-sauvegarder-sa-base-mysql-dans-un-fichier-debian-ou-autre-309</link>
		<comments>http://www.astucesdewebmaster.com/architecture/mysqldump-sauvegarder-sa-base-mysql-dans-un-fichier-debian-ou-autre-309#comments</comments>
		<pubDate>Wed, 06 Oct 2010 09:31:41 +0000</pubDate>
		<dc:creator>Rom's</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[dump]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[sauvegarde]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://www.astucesdewebmaster.com/?p=309</guid>
		<description><![CDATA[MySQL est une des bases de données les plus utilisées sur Linux aujourd&#8217;hui, et une des problématiques les plus récurrentes est d&#8217;exporter sa base pour une raison ou une autre (exports sur d&#8217;autres serveurs, sauvegardes,&#8230;) Une bonne commande pour faire cela est mysqldump, Pour faire cela, vous devez utiliser le shell (via putty par exemple) [...]]]></description>
			<content:encoded><![CDATA[<p>MySQL est une des bases de données les plus utilisées sur Linux aujourd&#8217;hui, et une des problématiques les plus récurrentes est d&#8217;exporter sa base pour une raison ou une autre (exports sur d&#8217;autres serveurs, sauvegardes,&#8230;)</p>
<p>Une bonne commande pour faire cela est mysqldump, Pour faire cela, vous devez utiliser le shell (via putty par exemple) pour vous connecter sur votre serveur dédié ou sur votre poste de travail sous linux. Si vous êtes sur un serveur mutualisé, il faut que vous voyez avec votre hébergeur, pourquoi pas dans votre interface d&#8217;administration si vous en avez une.</p>
<p>MySQLDump prépare le script pour (re-)créer les tables et le contenu de celles-ci, prêt à être importé plus tard.</p>
<p>La commande au plus simple : </p>
<blockquote><p>mysqldump -u [nomUtilisateur] -p [motDePasse] -B [nomBDD] > [fichierSauvegarde].dump</p></blockquote>
<p>Si vous ne saisissez pas le mot de passe mais laissez -p il vous demandera de donner le mot de passe. Si vous souhaitez éviter de dévoiler le mot de passe dans l&#8217;historique, c&#8217;est mieux.</p>
<p>Vous pouvez également ajouter une option pour optimiser la requête.</p>
<blockquote><p>mysqldump &#8211;opt -u [nomUtilisateur] -p [nomBDD] > [fichierSauvegarde].dump</p></blockquote>
<p>Ceci permettra de supprimer les tables (DROP) avant qu&#8217;elles ne soient recréées puis remplies de leur contenu.</p>
<p>Pour des raisons évidentes de taille de base de données, il est parfois bien de compresser (gzipper) le fichier extrait :</p>
<blockquote><p>mysqldump &#8211;opt -u [nomUtilisateur] -p [nomBDD] | gzip > [fichierSauvegarde].dump.gz</p></blockquote>
<p>Le jour où vous souhaitez réimporter votre base, il suffit d&#8217;inverser la flèche. (Attention à dézipper le fichier au préalable &#8211; gunzip &#8211; s&#8217;il était gzippé)</p>
<blockquote><p>mysql [nomBDD] < [fichierSauvegarde].dump</p></blockquote>
<p>Pour savoir où sont les fichiers : commande pwd pour voir où vous êtes</p>
<p>La documentation Man de MysqlDump avec toutes les options :</p>
<p><a href="http://www.manpagez.com/man/1/mysqldump/">http://www.manpagez.com/man/1/mysqldump/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.astucesdewebmaster.com/architecture/mysqldump-sauvegarder-sa-base-mysql-dans-un-fichier-debian-ou-autre-309/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Optimiser sa base de données MySQL</title>
		<link>http://www.astucesdewebmaster.com/architecture/optimiser-sa-base-de-donnees-mysql-307</link>
		<comments>http://www.astucesdewebmaster.com/architecture/optimiser-sa-base-de-donnees-mysql-307#comments</comments>
		<pubDate>Mon, 04 Oct 2010 15:23:53 +0000</pubDate>
		<dc:creator>Rom's</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[requêtes]]></category>

		<guid isPermaLink="false">http://www.astucesdewebmaster.com/?p=307</guid>
		<description><![CDATA[Je viens de tomber sur un petit recueil d&#8217;astuces pour optimiser ses requêtes et sa base de données MySQL que j&#8217;aimerais partager avec vous. Tout est ici : http://www.lephpfacile.com/manuel-mysql/mysql-optimization.php#tips - vérifier les index / créés vs qui devraient exister - types de tables (MyISAM,&#8230;) - éviter les varchar et blob pour ce qui est régulièrement [...]]]></description>
			<content:encoded><![CDATA[<p>Je viens de tomber sur un petit recueil d&#8217;astuces pour optimiser ses requêtes et sa base de données MySQL que j&#8217;aimerais partager avec vous.</p>
<p>Tout est ici : <a href="http://www.lephpfacile.com/manuel-mysql/mysql-optimization.php#tips">http://www.lephpfacile.com/manuel-mysql/mysql-optimization.php#tips</a></p>
<p>- vérifier les index / créés vs qui devraient exister<br />
- types de tables (MyISAM,&#8230;)<br />
- éviter les varchar et blob pour ce qui est régulièrement modifié<br />
- pas forcément utile de scinder les grosses tables en plus petites<br />
-&#8230;</p>
<p>Une petite check-list à se faire de temps en temps !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.astucesdewebmaster.com/architecture/optimiser-sa-base-de-donnees-mysql-307/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ETL Kettle &#8211; Découverte de l&#8217;outil d&#8217;ETL de Pentaho Data Integration</title>
		<link>http://www.astucesdewebmaster.com/astuces/etl-kettle-decouverte-de-loutil-detl-275</link>
		<comments>http://www.astucesdewebmaster.com/astuces/etl-kettle-decouverte-de-loutil-detl-275#comments</comments>
		<pubDate>Tue, 24 Aug 2010 10:52:24 +0000</pubDate>
		<dc:creator>Rom's</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[etl]]></category>
		<category><![CDATA[kettle]]></category>
		<category><![CDATA[pentaho data integration]]></category>

		<guid isPermaLink="false">http://www.astucesdewebmaster.com/?p=275</guid>
		<description><![CDATA[Kettle est un outil d&#8217;ETL (Extract, Transform, Load) de la suite BI de Pentaho Data Integration. Son principal intérêt est de récupérer diverses sources dans divers formats, de les traiter, de les transformer, et de former un résultat puis d&#8217;exporter dans le format souhaité vers une destination souhaitée. Tout ceci se fait de façon visuelle [...]]]></description>
			<content:encoded><![CDATA[<p>Kettle est un outil d&#8217;ETL (Extract, Transform, Load) de la suite BI de Pentaho Data Integration. Son principal intérêt est de récupérer diverses sources dans divers formats, de les traiter, de les transformer, et de former un résultat puis d&#8217;exporter dans le format souhaité vers une destination souhaitée.</p>
<p>Tout ceci se fait de façon visuelle en créant des étapes et en éditant le détail de chaque étape. (je sais, ça dépasse.. mais comme ça on peut tout voir <img src='http://www.astucesdewebmaster.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> )<br />
<div id="attachment_279" class="wp-caption alignnone" style="width: 1034px"><a href="http://www.astucesdewebmaster.com/wp-content/uploads/2010/08/visuel_kettle.jpg"><img src="http://www.astucesdewebmaster.com/wp-content/uploads/2010/08/visuel_kettle-1024x371.jpg" alt="" title="visuel_kettle" width="1024" height="371" class="size-large wp-image-279" /></a><p class="wp-caption-text">Visuel de la préparation de scripts avec Kettle</p></div></p>
<p>Il est possible de faire des scripts personnalisés sous forme de script java (javascript)</p>
<p>Exemples de sources et exports possibles :</p>
<ul>
<li>Bases de données (37 bases de données disponibles dont MySQL, Oracle, SQLite, PostgreSQL, MS Access, MS SQL Server, Sybase, Firebird SQL, AS/400,&#8230;)</li>
<li>Fichiers (XML, TXT, CSV, PSV, TSV ou autres séparateurs, instructions SQL dans fichier,</li>
<li>Flux SOAP, REST</li>
<li>Récupération ou envoi depuis ou vers des FTP/SFTP/FTPS/over SSH2</li>
<li>Possibilité de dézipper ou zipper des fichiers en entrée ou en sortie</li>
<li>Envoi / récupération depuis ou vers des e-mails / courriels (suivant sensibilité)</li>
</ul>
<p>Comme les exemples sont souvent plus parlants, je vais vous donner quelques exemples bien pratiques de choses que l&#8217;on peut faire avec un ETL :</p>
<ul>
<li>récupérer un fichier XML à 10 niveaux de données depuis un FTP, l&#8217;aplatir sous forme de tableau, mettre à jour les données dans une table MySQL puis l&#8217;exporter sous forme de fichier CSV et l&#8217;envoyer par e-mail</li>
<li>joindre trois fichiers excel (format XLS) et les entrées en base de données en comparant les sources, en dédoublonnant, et en faisant un fichier par type d&#8217;erreur possible</li>
<li>prendre tout simplement un fichier, renommer des colonnes, en rajouter, normaliser la longueur des champs et le nombre de décimales, enlever les espaces vides et réexporter le tout dans un format souhaité</li>
</ul>
<p>Les scripts réalisés visuellement sont exportables et installables comme tâches planifiées sur un serveur.</p>
<p>Bon, pour tout ça, je vous conseille de télécharger la version Pentaho Data Integration Spoon 4.0 (<a href="http://www.google.com/search?sourceid=chrome&#038;ie=UTF-8&#038;q=spoon+3.2">http://www.google.com/search?sourceid=chrome&#038;ie=UTF-8&#038;q=spoon+4.0</a>) </p>
<p>Je vous mets ici bientôt quelques exemples de scripts que vous puissiez jouer avec. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.astucesdewebmaster.com/astuces/etl-kettle-decouverte-de-loutil-detl-275/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Itinéraire et Distance via HTTP (PHP par ex) : l&#8217;API de Google Maps a évolué !</title>
		<link>http://www.astucesdewebmaster.com/dsi/itineraire-et-distance-via-http-php-par-ex-lapi-de-google-maps-a-evolue-253</link>
		<comments>http://www.astucesdewebmaster.com/dsi/itineraire-et-distance-via-http-php-par-ex-lapi-de-google-maps-a-evolue-253#comments</comments>
		<pubDate>Thu, 20 May 2010 07:43:14 +0000</pubDate>
		<dc:creator>Rom's</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[DSI]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[distance]]></category>
		<category><![CDATA[duree]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google maps]]></category>
		<category><![CDATA[itinéraire]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[scripts]]></category>

		<guid isPermaLink="false">http://www.astucesdewebmaster.com/?p=253</guid>
		<description><![CDATA[L&#8217;exemple en PHP est ici : PHP : distance en kilomètres, durée et étapes du trajet grâce à Google Maps API Directions Il était amusant de voir que cette fonctionnalité était possible mais qu&#8217;elle était juste refusée au niveau de la requête par Google : si vous lisiez via le navigateur le flux JSON, vous [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;exemple en PHP est ici : <a href="http://www.astucesdewebmaster.com/developpement-web/php-distance-en-km-grace-a-google-maps-api-directions-261"><strong>PHP : distance en kilomètres, durée et étapes du trajet grâce à Google Maps API Directions</strong></a></p>
<p>Il était amusant de voir que cette fonctionnalité était possible mais qu&#8217;elle était juste refusée au niveau de la requête par Google : si vous lisiez via le navigateur le flux JSON, vous y voyiez des informations intéressantes telles que la distance et l&#8217;itinéraire pour aller d&#8217;un point A à un point B, qu&#8217;on aurait tout à fait pu parser. Mais Google le refusait.</p>
<p>Cette annonce n&#8217;a l&#8217;air de rien : <a href="http://googlegeodevelopers.blogspot.com/2010/05/directions-web-service-arrives-at.html">http://googlegeodevelopers.blogspot.com/2010/05/directions-web-service-arrives-at.html</a> mais c&#8217;est une révolution pour ceux qui souhaitent intégrer des calculs de distance, ou faire des PDF avec des itinéraires ou ce genre de choses.</p>
<p>Concrètement, le flux que vous recevez ressemble à ceci :</p>
<blockquote><p>
{<br />
  &laquo;&nbsp;status&nbsp;&raquo;: &laquo;&nbsp;OK&nbsp;&raquo;,<br />
  &laquo;&nbsp;routes&nbsp;&raquo;: [ {<br />
    &laquo;&nbsp;summary&nbsp;&raquo;: &laquo;&nbsp;Massachusetts Ave, Massachusetts 2A W et Lexington Rd&nbsp;&raquo;,<br />
    &laquo;&nbsp;legs&nbsp;&raquo;: [ {<br />
      &laquo;&nbsp;steps&nbsp;&raquo;: [ {<br />
        &laquo;&nbsp;travel_mode&nbsp;&raquo;: &laquo;&nbsp;DRIVING&nbsp;&raquo;,<br />
        &laquo;&nbsp;start_location&nbsp;&raquo;: {<br />
          &laquo;&nbsp;lat&nbsp;&raquo;: 42.3585300,<br />
          &laquo;&nbsp;lng&nbsp;&raquo;: -71.0600700<br />
        },<br />
        &laquo;&nbsp;end_location&nbsp;&raquo;: {<br />
          &laquo;&nbsp;lat&nbsp;&raquo;: 42.3580200,<br />
          &laquo;&nbsp;lng&nbsp;&raquo;: -71.0604300<br />
        },<br />
        &laquo;&nbsp;polyline&nbsp;&raquo;: {<br />
          &laquo;&nbsp;points&nbsp;&raquo;: &laquo;&nbsp;ycpaGl|upLdBfA&nbsp;&raquo;,<br />
          &laquo;&nbsp;levels&nbsp;&raquo;: &laquo;&nbsp;BB&nbsp;&raquo;<br />
        },<br />
        &laquo;&nbsp;duration&nbsp;&raquo;: {<br />
          &laquo;&nbsp;value&nbsp;&raquo;: 4,<br />
          &laquo;&nbsp;text&nbsp;&raquo;: &laquo;&nbsp;1 minute&nbsp;&raquo;<br />
        },<br />
(&#8230;)
</p></blockquote>
<p>(<a href="http://maps.google.com/maps/api/directions/json?origin=Boston,MA&#038;destination=Concord,MA&#038;waypoints=Charlestown,MA|Lexington,MA&#038;sensor=false">http://maps.google.com/maps/api/directions/json?origin=Boston,MA&#038;destination=Concord,MA&#038;waypoints=Charlestown,MA|Lexington,MA&#038;sensor=false</a><br />
Enjoy !</p>
<p>Source : <a href="https://mail.google.com/mail/?hl=fr&#038;shva=1#inbox/128b3a8d28ec3fd6">https://mail.google.com/mail/?hl=fr&#038;shva=1#inbox/128b3a8d28ec3fd6</a><br />
Autres API qui viennent de sortir : <a href="http://www.zorgloob.com/2010-05/google-fait-le-plein-dapi/">http://www.zorgloob.com/2010-05/google-fait-le-plein-dapi/</a></p>
<p>Le script PHP permettant de calculer l&#8217;itinéraire est ici : <a href="http://www.astucesdewebmaster.com/developpement-web/php-distance-en-km-grace-a-google-maps-api-directions-261"><strong>PHP : distance en kilomètres, durée et étapes du trajet grâce à Google Maps API Directions</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.astucesdewebmaster.com/dsi/itineraire-et-distance-via-http-php-par-ex-lapi-de-google-maps-a-evolue-253/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Être alerté si le trafic augmente rapidement</title>
		<link>http://www.astucesdewebmaster.com/architecture/etre-alerte-si-le-trafic-augmente-rapidement-238</link>
		<comments>http://www.astucesdewebmaster.com/architecture/etre-alerte-si-le-trafic-augmente-rapidement-238#comments</comments>
		<pubDate>Wed, 02 Dec 2009 12:28:23 +0000</pubDate>
		<dc:creator>Rom's</dc:creator>
				<category><![CDATA[Architecture]]></category>

		<guid isPermaLink="false">http://www.astucesdewebmaster.com/?p=238</guid>
		<description><![CDATA[Il est important pour tout responsable technique d&#8217;être rapidement informé, malgré lui, d&#8217;un changement important dans le trafic, notamment à la hausse. Google Analytics a mis en bêta un système d&#8217;alertes qui permet d&#8217;être notifié (uniquement par e-mail pour l&#8217;instant) lorsque les conditions de ces alertes sont remplies. il s&#8217;agit de définir des critères et [...]]]></description>
			<content:encoded><![CDATA[<p>Il est important pour tout responsable technique d&#8217;être rapidement informé, malgré lui, d&#8217;un changement important dans le trafic, notamment à la hausse.</p>
<p>Google Analytics a mis en bêta un système d&#8217;alertes qui permet d&#8217;être notifié (uniquement par e-mail pour l&#8217;instant) lorsque les conditions de ces alertes sont remplies. il s&#8217;agit de définir des critères et de remplir un seuil.</p>
<p>Ce qui permet par exemple de dire &laquo;&nbsp;si mon nombre de visiteurs uniques par jour est supérieur à X, me prévenir par e-mail&nbsp;&raquo;.</p>
<p>Tout simplement.</p>
<p>Reste à faire évoluer le système en fonction, pourvu qu&#8217;il soit agile !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.astucesdewebmaster.com/architecture/etre-alerte-si-le-trafic-augmente-rapidement-238/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monitoring SMS (script PHP) : mettre en place en 20 minutes un système de suivi efficace</title>
		<link>http://www.astucesdewebmaster.com/dsi/monitoring-sms-script-php-mettre-en-place-en-20-minutes-un-systeme-de-suivi-efficace-198</link>
		<comments>http://www.astucesdewebmaster.com/dsi/monitoring-sms-script-php-mettre-en-place-en-20-minutes-un-systeme-de-suivi-efficace-198#comments</comments>
		<pubDate>Thu, 30 Apr 2009 23:30:36 +0000</pubDate>
		<dc:creator>Rom's</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[DSI]]></category>
		<category><![CDATA[infogérance]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[sms]]></category>

		<guid isPermaLink="false">http://www.astucesdewebmaster.com/?p=198</guid>
		<description><![CDATA[Voici le système que j&#8217;utilise aujourd&#8217;hui pour le suivi de mes serveurs dédiés. Il s&#8217;agit d&#8217;un système très simple composé des briques suivantes : - Dernière version de PHPWatch (voir le site) - API SMS &#8211; Bêta &#8211; By Orange (Accéder à l&#8217;API Manager &#8211; voir notamment le lien dans le menu de gauche API [...]]]></description>
			<content:encoded><![CDATA[<p>Voici le système que j&#8217;utilise aujourd&#8217;hui pour le suivi de mes serveurs dédiés. Il s&#8217;agit d&#8217;un système très simple composé des briques suivantes :<br />
- Dernière version de <strong>PHPWatch</strong> (<a href="http://aaron-rosenfeld.com/2008/08/28/phpwatch-release-announcement/">voir le site</a>)<br />
- <strong>API SMS</strong> &#8211; Bêta &#8211; By Orange (<a href="http://www.orangepartner.com/site/frfr/access_orange_apis/instant_apis/api_manager/p_api_manager.jsp">Accéder à l&#8217;API Manager</a> &#8211; voir notamment le lien dans le menu de gauche API SMS)<br />
- Quelques modifications sur le cron pour l&#8217;envoi d&#8217;e-mails.</p>
<p>De base, cela ne monitore que si les services Apache (si on regarde le port 80 / http) sont up ou down et non si les pages sont fonctionnelles (on ne verra pas les erreurs PHP mais on va pouvoir trouver des solutions pour cela.. bientôt)</p>
<p>Chaque SMS envoyé coûtera 10 centimes débités sur le compte. Soit le prix d&#8217;un SMS que vous envoyez avec n&#8217;importe quel mobile.</p>
<p>0. Allez sur l&#8217;<a href="http://www.orangepartner.com/site/frfr/access_orange_apis/instant_apis/api_manager/p_api_manager.jsp">interface API SMS d&#8217;Orange</a>, inscrivez-vous, créditez votre compte de 10€ pour le test (cochez éventuellement la case renouvellement automatique) et dans l&#8217;onglet &laquo;&nbsp;key&nbsp;&raquo;, notez bien votre clé API.<br />
1. Mettez en ligne le script (<a href="http://sourceforge.net/projects/phpwatch/">cliquez ici pour télécharger</a>) sur un serveur autre que celui que vous souhaitez monitorer et allez à son adresse en ajoutant /install/ à la fin et suivez les instructions (attention, il n&#8217;y a pas d&#8217;espaces de nom sur les tables&#8230;)<br />
2. Allez dans la table &laquo;&nbsp;logs&nbsp;&raquo; et ajoutez une colonne &laquo;&nbsp;message&nbsp;&raquo;. Elle servira à reccueillir lors d&#8217;un problème un arrêté de l&#8217;e-mail envoyé. Cela peut toujours servir.<br />
3. Ouvrez le fichier cron.php qui se trouve à la racine du répertoire PHPWatch et insérez le code suivant en lieu et place de l&#8217;existant :</p>
<blockquote><p>
&lt;?php<br />
// A qui on envoie des SMS en cas de problème ?<br />
$contactsMonitoringSMS=Array(<br />
				&#8216;RomainMobile&#8217;=>&#8217;33679241180&#8242;,<br />
				&#8216;CollegueMobile&#8217;=>&#8217;336XXXXXX&#8217;,</p>
<p>				);<br />
// A qui on envoie un mail en cas de problème ? (en parallèle)<br />
$contactsMonitoringEMAIL=Array(<br />
				&#8216;RomainPerso&#8217;=>&#8217;monemail@gmail.com&#8217;<br />
				,&#8217;ServiceInformatique&#8217;=>&#8217;monemailpro@maboite.com&#8217;<br />
				);</p>
<p>define(&#8216;PATH_TO&#8217;, &#8216;./&#8217;);<br />
require_once(PATH_TO . &#8216;common.php&#8217;);</p>
<p>$all = ServiceChecker::getReport();</p>
<p>foreach($all as $monitors)<br />
{<br />
	foreach($monitors as $monitor)<br />
	{<br />
		$monitor['derniereFoisOffline']=date(&laquo;&nbsp;d/m/Y H:i:s&nbsp;&raquo;,$monitor['last_offline']);<br />
//		print_r($monitor);<br />
		if(!$monitor['online'])<br />
		{<br />
			$message = $monitor['host'] . &#8216; HORS LIGNE. NOTIFICATIONS ENVOYEES. (/!\\ PHASE DE TEST, A VOIR SI C FIABLE)&#8217;;<br />
			echo $message;</p>
<p>			foreach($contactsMonitoringSMS as $prenom=>$numero) {<br />
				$phone_number = $numero;<br />
				$contactsEmail=&nbsp;&raquo;"; foreach($contactsMonitoringEMAIL as $prenom=>$email) $contactsEmail.=&nbsp;&raquo; [".$prenom."] &laquo;&nbsp;;<br />
				$contactsSMS=&nbsp;&raquo;"; foreach($contactsMonitoringSMS as $prenom=>$numero) $contactsSMS.=&nbsp;&raquo; [".$prenom."] &laquo;&nbsp;;</p>
<p>				// attention, on coupe le message à 155 caractères<br />
				$sms=$monitor['host'].&nbsp;&raquo; HS &#8211; SMS : &laquo;&nbsp;.$contactsSMS.&nbsp;&raquo; &#8211; @ : &laquo;&nbsp;.$contactsEmail;<br />
				if(strlen($sms)>159) $sms=substr($sms,0,154).&#8217;[...]&#8216;;<br />
				$text_message = urlencode($sms);<br />
				$api_access_key = &#8216;dexxxx5ac&#8217;; // Mettez votre clé API &#8211; disponible sur l&#8217;<a href="http://www.orangepartner.com/site/frfr/access_orange_apis/instant_apis/api_manager/p_api_manager.jsp">API Manager</a><br />
				$url = &laquo;&nbsp;http://sms.alpha.orange-api.net/sms/sendSMS.xml?id=$api_access_key&#038;to=$phone_number&#038;content=$text_message&nbsp;&raquo;;<br />
					$response = file_get_contents($url);<br />
					$xml = simplexml_load_string($response);<br />
					echo &laquo;&nbsp;Status: &laquo;&nbsp;,$xml->status->status_msg;</p>
<p>			}<br />
			foreach($contactsMonitoringEMAIL as $prenom=>$email) {<br />
				$to = $email;<br />
				$subject = $message;<br />
				ob_start();<br />
				echo $message;<br />
				echo &laquo;&nbsp;\nE-mails envoyes a :\n&nbsp;&raquo;;<br />
				print_r($contactsMonitoringEMAIL);<br />
				echo &laquo;&nbsp;\nSMS envoyes a :\n&nbsp;&raquo;;<br />
				print_r($contactsMonitoringSMS);<br />
				echo &laquo;&nbsp;\nDetails Erreur :\n&nbsp;&raquo;;<br />
				print_r($monitor);<br />
				$msg=ob_get_contents();<br />
				ob_end_clean();<br />
				$headers = &#8216;From: Roms Monitoring <xxxx@gmail.com>&#8216;.&nbsp;&raquo;\r\n&nbsp;&raquo;;<br />
				//$headers .= &#8216;Bcc: Moi <moi@server.com>; lui <lui@server2.com>&#8216;.&nbsp;&raquo;\r\n&nbsp;&raquo;;<br />
				$headers .= &laquo;&nbsp;\r\n&nbsp;&raquo;;<br />
				mail($to, $subject, $msg, $headers);<br />
			}<br />
			NotificationHandler::sendNotifications($monitor);<br />
		}</p>
<p>		$requete=&#8217;INSERT INTO logs (monitor, timestamp, online, message) VALUES<br />
			(&#8216; . $monitor['id'] . &#8216;, &#8216; . time() . &#8216;, &#8216; . ($monitor['online'] ? 1 : 0) . &#8216;, \&nbsp;&raquo;.addslashes($msg).&#8217;\')&#8217;;<br />
		$GLOBALS['PW_DB']->query($requete);<br />
	}<br />
}<br />
?>
</p></blockquote>
<p>4. Créez le cron qui va bien dans le crontab si vous avez un serveur dédié (autre que celui monitoré évidemment &#8211; en faisant un wget http://www.monsite.com/repertoirePHPWatch/cron.php).<br />
Si vous avez un mutualisé chez OVH (type 60gp, 90plan,&#8230;), vous pouvez aller dans votre manager OVH, rubrique &laquo;&nbsp;Mutualisé&nbsp;&raquo; > &laquo;&nbsp;Hébergement&nbsp;&raquo; > Planificateur de tâches et créer une tâche qui lance le fichier cron.php chaque heure.<br />
Si vous n&#8217;avez ni l&#8217;un ni l&#8217;autre, vous avez toujours <a href="http://www.webcron.org/">WebCron.org</a> ou <a href="http://cron.hiwit.org/">ça</a>..<br />
Ou bien, si vous avez des amis qui ont un dédié, c&#8217;est le moment de les solliciter, c&#8217;est pas bien méchant un cron..<br />
Réserves : attention, il s&#8217;agit d&#8217;une première version de développement, tous les composants sont en phase bêta. Vous aurez remarqué également que lorsqu&#8217;on dit dans le message envoyé &laquo;&nbsp;NOTIFICATIONS ENVOYEES&nbsp;&raquo;, on n&#8217;a pas vérifié que c&#8217;était effectivement le cas&#8230; Par ailleurs, on peut imaginer monitorer l&#8217;état réel d&#8217;un script en jouant avec les entêtes renvoyées ou avec des contenus de la page. Pour l&#8217;instant, cette version me convient.</p>
<p>Tous retours d&#8217;expérience bienvenus pour compléter ce tutoriel.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.astucesdewebmaster.com/dsi/monitoring-sms-script-php-mettre-en-place-en-20-minutes-un-systeme-de-suivi-efficace-198/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serveur tombé &#8211; actions à faire dans l&#8217;ordre</title>
		<link>http://www.astucesdewebmaster.com/architecture/serveur-tombe-actions-a-faire-dans-lordre-159</link>
		<comments>http://www.astucesdewebmaster.com/architecture/serveur-tombe-actions-a-faire-dans-lordre-159#comments</comments>
		<pubDate>Mon, 23 Mar 2009 08:29:20 +0000</pubDate>
		<dc:creator>Rom's</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Ajouter un mot-clef]]></category>

		<guid isPermaLink="false">http://www.astucesdewebmaster.com/?p=159</guid>
		<description><![CDATA[Première chose à faire : contrôler les autres services du serveur (est-ce uniquement lié à un nom de domaine ou est-ce le serveur qui est en panne). S&#8217;il n&#8217;y a pas d&#8217;autres sites sur le même serveur, il y a peut-être un phpMyAdmin, Munin ou autre Webmin à tester ? Si c&#8217;est le domaine qui [...]]]></description>
			<content:encoded><![CDATA[<p>Première chose à faire : contrôler les autres services du serveur (est-ce uniquement lié à un nom de domaine ou est-ce le serveur qui est en panne). S&#8217;il n&#8217;y a pas d&#8217;autres sites sur le même serveur, il y a peut-être un phpMyAdmin, Munin ou autre Webmin à tester ?</p>
<p>Si c&#8217;est le domaine qui ne répond pas<br />
1. Faire un ZoneCheck pour voir si les DNS sont correctement configurés : <a href="http://www.afnic.fr/outils/zonecheck/zc.cgi?zone=guide-sensations.com">http://www.afnic.fr/outils/zonecheck/zc.cgi?zone=guide-sensations.com</a><br />
1.a si ça vous répond qu&#8217;il y a un problème avec les SOA, c&#8217;est qu&#8217;il y a un problème dans les réponses SOA de votre serveur : à voir dans les BIND ou dans les configurations &#038; RNDC (named.conf, named.conf.options,&#8230;)<br />
1.b si ça cherche les DNS et que ça met que les zones ne sont pas cohérentes, il faut vérifier 3 points : les DNS bien configurés chez le registrar (ovh, gandhi, bookmyname, amen,&#8230;), le reverse bien défini pour les serveurs dédiés (ovh pour l&#8217;exemple : Manager OVH > Services > DNS Secondaires), et les SOA bien définis sur le serveur (Serveur BIND à configurer) dans les 3 cas, l&#8217;IP et les NS (primaire et secondaires) doivent correspondre. Un dig (<a href="http://www.webmaster-toolkit.com/dig.shtml?address=guide-sensations.com">http://www.webmaster-toolkit.com/dig.shtml?address=guide-sensations.com</a>) vous aidera à vérifier la configuration en cours.<br />
1.c une fois une modif faite, ça peut prendre du temps à se répercuter (jusqu&#8217;à 6 jours chez Orange..), il faut tester chez plusieurs FAI autant que possible pour voir si ça commence à se propager ou pas et faire quelques nslookup pour tester depuis les serveurs souhaités si la propagation se fait bien (windows : exécuter > cmd > nslookup). Exemple<br />
# nslookup<br />
# > server 212.216.212.112 (tester les IP par FAI à cette URL : <a href="http://www.commentcamarche.net/faq/sujet-1496-serveurs-dns-des-principaux-fai">http://www.commentcamarche.net/faq/sujet-1496-serveurs-dns-des-principaux-fai</a>)<br />
# > guide-sensations.com<br />
et là ça vous sortira l&#8217;IP qui est prévu pour ce nom de domaine suivant la propagation des infos sur ce serveur là et donc vous aurez les infos de propagation par FAI.<br />
1.d vérifiez à cette adresse : <a href="http://www.zonecut.net/dns/">http://www.zonecut.net/dns/</a> avec un bon visuel que tout est ok.</p>
<p>Si c&#8217;est le serveur qui est en panne</p>
<ol>
<li>Tester les services les uns après les autres et les restarter s&#8217;ils sont tombés</li>
<li>à côté, il est bon d&#8217;être connecté en SSH et de faire un tail -f /var/log/syslog pour voir ce qu&#8217;il se passe et l&#8217;erreur éventuelle qui se produit (avec le fichier et la ligne de l&#8217;erreur avec un peu de chance)</li>
<li>N&#8217;oubliez pas de faire un fcsk de temps en temps</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.astucesdewebmaster.com/architecture/serveur-tombe-actions-a-faire-dans-lordre-159/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Evolution Architecture Serveurs Web</title>
		<link>http://www.astucesdewebmaster.com/architecture/evolution-architecture-serveurs-web-126</link>
		<comments>http://www.astucesdewebmaster.com/architecture/evolution-architecture-serveurs-web-126#comments</comments>
		<pubDate>Tue, 10 Mar 2009 00:20:11 +0000</pubDate>
		<dc:creator>Rom's</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[DSI]]></category>
		<category><![CDATA[évolution site internet]]></category>
		<category><![CDATA[haute disponibilité]]></category>
		<category><![CDATA[serveurs]]></category>

		<guid isPermaLink="false">http://www.astucesdewebmaster.com/?p=126</guid>
		<description><![CDATA[Tout au long de l&#8217;évolution d&#8217;un site Internet, on doit faire évoluer la structure technique de façon à pouvoir absorber le trafic et diminuer les risques qui deviennent de plus en plus coûteux. Je vous invite à lire cet excellent article du site haute-disponibilite.net qui reprend un document de présentation d&#8217;une société spécialisée. http://www.haute-disponibilite.net/2008/09/25/planning-des-evolutions-de-votre-architecture-web/ C&#8217;est [...]]]></description>
			<content:encoded><![CDATA[<p>Tout au long de l&#8217;évolution d&#8217;un site Internet, on doit faire évoluer la structure technique de façon à pouvoir absorber le trafic et diminuer les risques qui deviennent de plus en plus coûteux. </p>
<p>Je vous invite à lire cet excellent article du site <a href="http://www.haute-disponibilite.net">haute-disponibilite.net</a> qui reprend un document de présentation d&#8217;une société spécialisée.</p>
<p><a href="http://www.haute-disponibilite.net/2008/09/25/planning-des-evolutions-de-votre-architecture-web/">http://www.haute-disponibilite.net/2008/09/25/planning-des-evolutions-de-votre-architecture-web/</a></p>
<p>C&#8217;est un début et c&#8217;est une proposition, ça a le mérite d&#8217;exister.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.astucesdewebmaster.com/architecture/evolution-architecture-serveurs-web-126/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trouver son fichier de configuration PHP.ini</title>
		<link>http://www.astucesdewebmaster.com/dsi/trouver-son-fichier-de-configuration-phpini-78</link>
		<comments>http://www.astucesdewebmaster.com/dsi/trouver-son-fichier-de-configuration-phpini-78#comments</comments>
		<pubDate>Fri, 19 Dec 2008 10:46:27 +0000</pubDate>
		<dc:creator>rjanot</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[DSI]]></category>

		<guid isPermaLink="false">http://www.astucesdewebmaster.com/?p=78</guid>
		<description><![CDATA[Petite astuce pour les personnes recherchant leur fichier PHP.INI, en général sur les serveurs dédiés. Si vous n&#8217;êtes pas très ami avec la syntaxe de Tux, cette commande va vous aider: php -i &#124; grep php.ini En espérant vous avoir aidé !]]></description>
			<content:encoded><![CDATA[<p>Petite astuce pour les personnes recherchant leur fichier PHP.INI, en général sur les serveurs dédiés. Si vous n&#8217;êtes pas très ami avec la syntaxe de Tux, cette commande va vous aider:</p>
<p><strong>php -i | grep php.ini</strong></p>
<p>En espérant vous avoir aidé !<strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.astucesdewebmaster.com/dsi/trouver-son-fichier-de-configuration-phpini-78/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quelques commandes SSH utiles / Serveurs dédiés</title>
		<link>http://www.astucesdewebmaster.com/dsi/quelques-commandes-ssh-utiles-serveurs-dedies-74</link>
		<comments>http://www.astucesdewebmaster.com/dsi/quelques-commandes-ssh-utiles-serveurs-dedies-74#comments</comments>
		<pubDate>Mon, 15 Dec 2008 11:14:32 +0000</pubDate>
		<dc:creator>Rom's</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[DSI]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://www.astucesdewebmaster.com/ssh/quelques-commandes-ssh-utiles-serveurs-dedies-74</guid>
		<description><![CDATA[Quelques commandes SSH utiles pour tout adminstrateur de serveurs dédiés : Pour utiliser SSH, utilisez Putty sur Windows, ou le terminal sur Mac et Linux; Sur le terminal, entrez la commande &#171;&#160;ssh userSSH@ipServeur&#160;&#187; ce qui vous invitera à entrer le mot de passe de l&#8217;utilisateur &#171;&#160;userSSH&#160;&#187;. top => indique les processus appelés => pendant l&#8217;exécution, [...]]]></description>
			<content:encoded><![CDATA[<p>Quelques commandes SSH utiles pour tout adminstrateur de serveurs dédiés :</p>
<p>Pour utiliser SSH, utilisez Putty sur Windows, ou le terminal sur Mac et Linux; Sur le terminal, entrez la commande &laquo;&nbsp;ssh userSSH@ipServeur&nbsp;&raquo; ce qui vous invitera à entrer le mot de passe de l&#8217;utilisateur &laquo;&nbsp;userSSH&nbsp;&raquo;.</p>
<p><strong>top </strong><br />
=> indique les processus appelés<br />
=> pendant l&#8217;exécution, taper &laquo;&nbsp;A&nbsp;&raquo; pour avoir des informations sur les tâches, &laquo;&nbsp;U&nbsp;&raquo; pour classer les processus par %CPU<br />
=> faire ctrl+C (même sur Mac) pour en sortir</p>
<p><strong>time wget URL</strong><br />
=> vous indique le temps pris pour exécuter telle URL</p>
<p><strong>ps aux</strong><br />
affiche des informations sur les processus en cours<br />
==> ps aux | grep ssh vous permet d&#8217;afficher les utilisateurs SSH connectés</p>
<p><strong>find /path/to/directory/ -type f -name &laquo;&nbsp;fichier.ext&nbsp;&raquo; -exec ls -alF {} \; | grep &laquo;&nbsp;toto&nbsp;&raquo;<br />
==> permet de faire afficher sous forme de liste avec fichier et date les fichiers trouvés à l&#8217;aide de la commande find</p>
<p><strong>stat /path/to/file.ext</strong><br />
==> permet d&#8217;avoir plus d&#8217;infos sur les dates de création, d&#8217;accès et de modification du fichier<br />
ex :</p>
<blockquote><p>
  Size: 48              Blocks: 8          IO Block: 4096   regular file<br />
Device: ca01h/51713d    Inode: 133791      Links: 1<br />
Access: (0777/-rwxrwxrwx)  Uid: ( 1001/masociete)   Gid: ( 1001/masociete)<br />
Access: 2011-12-13 16:13:58.000000000 +0100<br />
Modify: 2011-08-01 12:46:01.000000000 +0200<br />
Change: 2011-12-13 16:13:41.000000000 +0100
</p></blockquote>
<p><strong>rename</strong><br />
==> permet de renommer des fichiers en ssh. La fonctionnalité la plus utile est la substitution de chaine<br />
Exemple 1 : remplacer tout les fichiers<br />
rename <strong>&#8216;s/</strong><em>_2\.txt/_6.txt</em><strong>/&#8217;</strong> <u>*.txt</u>  ==> remplace tous les fichiers &laquo;&nbsp;blabla_tout-ce que vous Voulez_2.txt&nbsp;&raquo; par &laquo;&nbsp;blabla_tout-ce que vous Voulez_6.txt&nbsp;&raquo;<br />
la partie en gras est le format standard pour la substitution, la partie en italique indique ce qu&#8217;on veut remplacer et par quoi on veut le remplacer, séparés par un simple slashe. la partie soulignée indique dans quels fichiers on veut faire ce remplacement.</p>
<p><strong>find ./ -name &laquo;&nbsp;*product*.tpl&nbsp;&raquo; -exec cat {} \; | grep &laquo;&nbsp;livraison gratuite&nbsp;&raquo;</strong><br />
==> permet de trouver toutes les chaines &laquo;&nbsp;livraison gratuite&nbsp;&raquo; se trouvant dans des *product*.tpl</p>
<p>NB : Cet article va être complété au fur et à mesure du temps et des besoins, n&#8217;hésitez pas à proposer des commandes en commentaires</p>
<p>Alsacreations a mis pas mal de commandes utiles aussi, voir ici : <a href="http://www.alsacreations.com/tuto/lire/613-Monitoring-serveur.html">http://www.alsacreations.com/tuto/lire/613-Monitoring-serveur.html</a></p>
<p>voir aussi : <a href="http://wiki.debian-facile.org/manuel:commande">http://wiki.debian-facile.org/manuel:commande</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.astucesdewebmaster.com/dsi/quelques-commandes-ssh-utiles-serveurs-dedies-74/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optimisation MySQL</title>
		<link>http://www.astucesdewebmaster.com/dsi/optimisation-mysql-2-35</link>
		<comments>http://www.astucesdewebmaster.com/dsi/optimisation-mysql-2-35#comments</comments>
		<pubDate>Mon, 26 Nov 2007 15:07:02 +0000</pubDate>
		<dc:creator>Rom's</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[DSI]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[optimisation]]></category>

		<guid isPermaLink="false">http://www.astucesdewebmaster.com/bases-de-donnees/optimisation-mysql-2-35</guid>
		<description><![CDATA[Je vous invite à lire cette documentation qui permet d&#8217;optimiser les requêtes complexes pour des sites à fort volume : http://www.ecoms.fr/cours/sgbdoptimisation.pdf [PDF]]]></description>
			<content:encoded><![CDATA[<p>Je vous invite à lire cette documentation qui permet d&#8217;optimiser les requêtes complexes pour des sites à fort volume :</p>
<p><a href="http://www.ecoms.fr/cours/sgbdoptimisation.pdf">http://www.ecoms.fr/cours/sgbdoptimisation.pdf</a> [PDF]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.astucesdewebmaster.com/dsi/optimisation-mysql-2-35/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

