<?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 Modulaweb &#187; gnu/linux</title>
	<atom:link href="http://www.modulaweb.fr/blog/tags/gnulinux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.modulaweb.fr/blog</link>
	<description>Le blog des technologies modulables orientées web</description>
	<lastBuildDate>Thu, 16 Dec 2010 03:02:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Optimiser Apache – Partie 1</title>
		<link>http://www.modulaweb.fr/blog/2010/11/optimiser-apache/</link>
		<comments>http://www.modulaweb.fr/blog/2010/11/optimiser-apache/#comments</comments>
		<pubDate>Sat, 20 Nov 2010 23:00:40 +0000</pubDate>
		<dc:creator>Jean-François VIAL</dc:creator>
				<category><![CDATA[Choses utiles]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[gnu/linux]]></category>

		<guid isPermaLink="false">http://www.modulaweb.fr/blog/?p=524</guid>
		<description><![CDATA[La question « Comment faire en sorte que les pages de mon site soient servies rapidement ? » reviens souvent. Si vous utilisez un hébergement mutualisé, c'est uniquement du coté CMS voire langage (PHP le plus souvent) qu'il va falloir travailler. Si vous possédez votre propre serveur dédié, vous pourrez agir directement à la source [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-527" src="http://www.modulaweb.fr/blog/wp-content/uploads/2010/11/apache.jpeg" alt="" width="120" height="120" />La question « Comment faire en sorte que les pages de mon site soient servies rapidement ? » reviens souvent. Si vous utilisez un hébergement mutualisé, c'est uniquement du coté CMS voire langage (PHP le plus souvent) qu'il va falloir travailler. Si vous possédez votre propre serveur dédié, vous pourrez agir directement à la source : optimiser le serveur web lui même.</p>
<p>Ce tutoriel a pour but de donner des pistes vous permettant d'optimiser au mieux, en comprenant à peu près ce que vous faites, un serveur rencontré classiquement : Apache dans sa version 2, tournant bien évidemment sur un système GNU/Linux, dans le but de servir des pages générées à l'aide de PHP.</p>
<p><strong>Attention :</strong> même si ces optimisations peuvent vous faire gagner pas mal de points sur PageSpeed ou YSlow, ce tutoriel a pour unique sujet l'optimisation d'Apache. De même, il ne sera pas question ici de discuter de l'utilisation d'un autre serveur pour servir les contenus statiques voire de comparer les performances d'Apache avec d'autres serveurs web comme Lighttpd ou NGInx</p>
<p>Si votre serveur est déjà en production, il peut être intéressent d'effectuer un test de performances, par exemple à l'aide d'un outil en ligne, comme <a title="Ouvrir l'utilitaire d'évaluation de la vitesse de pages web GTMetrix dans une nouvelle fenêtre." href="http://gtmetrix.com/" target="_blank">GTMetrix</a> (créez un compte, vous pourrez ainsi accéder à plus d'options, et avoir un joli graphe de l'évolution des performances, c'est évidement gratuit) dès maintenant, et après chaque optimisation.</p>
<h2>Prefork ou Worker ?</h2>
<p>Il convient de choisir quelle « mouture » d'Apache utiliser. Ces moutures se choisissent en installant  l'un des modules « core » déterminant le comportement d'Apache vis à vis des requêtes multiples et concurrentes. Sous GNU/Linux, Apache dispose de deux modules stables pour la production : <acronym title="Multi-Processing Module : Module à Processus Multiples">MPM</acronym> Prefork et MPM Worker. Les modules MPM dupliquent Apache afin de lui permettre de répondre à plusieurs requêtes simultanément.</p>
<p>La différence entre les deux est que là où MPM Prefork utilise uniquement des <a title="Voir la définition sur Wikipedia dans une nouvelle fenêtre" href="http://fr.wikipedia.org/wiki/Processus_%28informatique%29" target="_blank">processus</a> multiples pour prendre en charge les requêtes concurrentes, MPM Worker  utilise des <a title="Voir la définition sur Wikipedia dans une nouvelle fenêtre" href="http://fr.wikipedia.org/wiki/Thread_%28informatique%29">threads</a> pour paralléliser les requêtes au sein même des processus multiples, offrant donc de meilleures performances mais imposant d'utiliser uniquement des module Apache supportant eux même les threads, interdisant donc l'utilisation du module mod_php, permettant à Apache d'interprêter les scripts PHP.</p>
<p>La configuration que nous utiliserons sera donc Apache 2 MPM Prefork avec PHP installé en tant que module (mod_php)</p>
<p style="padding-left: 30px;">Certains objecterons qu'on aurait très bien pu utiliser MPM Worker et exécuter les scripts PHP via une interface CGI (mod_cgi, mod_fastcgi voire mod_speedycgi) et ils auront raion… cependant, même avec des optimisations, cette solution sera toujours moins performante que MPM Prefok avec mod_php, et l'utilisation d'accélérateurs de scripts PHP comme la mise en cache d'op-code est impossible en dehors de mod_php : lorsqu'on utilise PHP avec Apache pour un site nécessitant de la performance, mod_php est un choix plus que judicieux.</p>
<h2>Points à améliorer</h2>
<p>« Qu'est-ce qui pourrait bien ralentir un serveur Apache ? » Est la question à laquelle nous allons répondre afin de déterminer les points à améliorer pour permettre à Apache de servir les pages plus vite.</p>
<h3>Accès disque</h3>
<p>Un accès disque est toujours coûteux en temps, malgré les optimisations effectuées par le système d'exploitation. À chaque requête d'une page web, outre les accès disques effectués pour récupérer les données des fichiers à servir, d'autres accès disque sont effectués, comme par exemple l'inscription des évènements dans les fichiers log, le calcul de l'<acronym title="Entity Tag : Chaine de caractère unique calculée en fonction du fichier correspondant permettant aux navigateurs de savoir si un fichier est nouveau ou pas.">ETag</acronym> mais aussi la lecture d'un fichier .htaccess ou la recherche d'un fichier d'index !</p>
<h3>Requêtes DNS</h3>
<p>Des requêtes DNS peuvent être effectuées par Apache lorsque, par exemple, il est configuré pour afficher les noms d'hôtes correspondant à l'adresse IP des visiteurs dans les fichiers logs. Certains modules,  comme mod_defensible ou mod_rbl peuvent effectuer plusieurs requêtes DNS afin de vérifier si l'adresse IP et/ou le nom d'hôte de la connexion à Internet du visiteur fait partie ou non d'une ou plusieurs listes noires.</p>
<h3>Taille des fichiers</h3>
<p>Chaque octet compte : chaque octet servi par votre serveur aura un impact direct sur le temps qu'il mettra a finir de servir la ressource demandée, et la compression est non seulement très efficace sur les fichiers texte, mais elle est aussi supportée par de plus en plus de navigateurs tels que Firefox ou Safari ; ça tombe bien, Apache sais compresser à la volée les contenus à servir lorsque le navigateur le supporte.</p>
<h3>Nombre de requêtes</h3>
<p>Chaque connexion est coûteuse en temps et en ressources : il serait formidable de pouvoir signifier au navigateur des visiteurs que certains fichiers ne sont modifier peu souvent et qu'il peut les mettre en cache et les afficher directement au lieu d'effectuer une requête pour chacun d'eux… heureusement, Apache possède un module qui permet de gérer la manière de signifier aux navigateurs les modalités de mise en cache des fichiers selon leur type.</p>
<h3>Configuration d'Apache</h3>
<p>Apache a besoin d'indications pour savoir comment réagir lors des pics de charge et être suffisamment réactif. La configuration idéale pour votre serveur sera déterminée en fonction de la RAM disponible, de celle consumée par la génération des pages, du type de documents servis, mais aussi de la fréquence et du nombre des visites et du trafic. Cette configuration doit être mûrement réfléchie, certaines valeurs, choisies avec discernement peuvent sauver Apache de crash fâcheux lors de pics de visite, ou tout simplement lui permettre d'utiliser au mieux les ressources nécessaires à son fonctionnement.</p>
<h2>Que faire ?</h2>
<p>Maintenant que nous avons vu les éléments clés, établissons un plan d'action, le détail des actions sera vu dans la deuxième partie. Bien évidemment, tout cela est à ajuster au cas par cas, selon les besoins réels de votre serveur.</p>
<h3>Accès disque</h3>
<p>Afin de limiter les accès disque au strict nécessaire (la récupération des données à envoyer au client), nous allons :</p>
<ul>
<li>Désactiver l'utilisation des ETags<br />
Ce système, en plus d'être obsolète est inutile lorsqu'on active le module de gestion du cache d'Apache.</li>
<li>Ne pas autoriser l'usage des fichiers .htaccess et rapatrier le contenu de ces fichiers dans les fichiers de définition des vhosts</li>
<li>Réduire, vhost par vhost, le nombre de possibilités concernant le fichier d'index</li>
<li>Désactiver l'option Multiview afin de gagner du temps</li>
<li>Réduire le niveau d'inscription des évènements dans les fichiers logs à ce qui est réellement utile, vhost par vhost</li>
</ul>
<h3>Requêtes DNS</h3>
<p>Afin de supprimer les requêtes DNS, nous allons :</p>
<ul>
<li>Faire en sorte de n'afficher que les adresses IP dans les fichiers log</li>
<li>Désactiver les modules de vérification de RBL</li>
</ul>
<h3>Taille des fichiers</h3>
<p>Afin de réduire la taille des fichiers, nous allons activer la compression dynamique en fonction du navigateur.</p>
<h3>Nombre de requêtes</h3>
<p>Pour diminuer le nombre de requêtes, nous allons activer et configurer le module de mise en cache pour le serveur entier et chaque vhost si besoin, en fonction du contenu, des fichiers à servir et de la fréquence de rafraichissement des données.</p>
<h3>Configuration d'Apache</h3>
<p>Nous allons configurer Apache à partir de données que nous allons récolter :</p>
<ul>
<li>La mémoire allouée à Apache<br />
Si le serveur héberge un serveur de bases de données comme MySQL ou d'autres services : il conviendra de déterminer quelle quantité de RAM leur réserver et de laisser le reste à Apache.</li>
<li>La mémoire consommée par un processus d'Apache<br />
Pour déterminer la taille de cette mémoire, il faudra exécuter une série de requête (à l'aide d'un ab -n 1000 -c 10 http://votre.url par exemple) tout en exécutant un top ou htop en même temps sur le serveur.</li>
<li>La durée de chargement maximal de vos pages<br />
À l'aide du plugin PageSpeed pour le plugin FireBug pour Firefox par exemple.</li>
</ul>
<p>Il peut paraître curieux de se baser sur une mesure de vitesse de chargement de page, ou de mesurer la RAM utilisée par des processus afin de permettre d'accélérer Apache, mais c'est la seule manière de déterminer, par itérations successives et tâtonnements, les bonnes valeurs pour votre Apache. Il conviendra d'effectuer ces réglages après avoir effectué les autres optimisations, mais aussi après chaque modification majeure de vos scripts PHP car chaque modification modifie aussi la quantité de RAM dont ils ont besoin, donc celle nécessaire à Apache, donc ses paramètres.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">
<p>La question «Comment faire en sorte que les pages de mon site soient  servies rapidement ?» reviens souvent. Si vous utilisez un hébergement  mutualisé, c'est uniquement du coté CMS voire langage (PHP le plus  souvent) qu'il va falloir travailler. Si vous possédez votre propre  serveur dédié, vous pourrez agir directement à la source : optimiser le  serveur web lui même.</p>
<p>Ce tutoriel a pour but de donner des pistes  vous permettant d'optimiser au mieux, en comprenant à peu près ce que  vous faites, un serveur rencontré classiquement, Apache dans sa version  2, tournant bien évidemment sur un système GNU/Linux, dans le but de  servir des pages générées à l'aide de PHP.</p>
<p>Attention : même si effectuer ces optimisations peuvent vous faire gagner pas mal de points sur Page Speed ou</p>
<p>Si  votre serveur est déjà en production, il peut être très intéressent  d'effectuer un test de performances, par exemple à l'aide d'un outil en  ligne, comme <a href="http://gtmetrix.com/">http://gtmetrix.com/</a> (créez un compte, vous pourrez ainsi accéder à plus d'options, c'est  évidement gratuit) dès maintenant, et après chaque optimisation.</p>
<h1>Avant toute chose</h1>
<p>Il  convient de choisir quelle « mouture » d'Apache choisir. Ces moutures  se choisissent en installant  l'un des modules « core » déterminant le  comportement d'Apache vis à vis des requêtes multiples et concurrentes.  Sous GNU/Linux, Apache dispose de deux modules stables pour la  production : MPM Prefork et MPM Worker. [ note : les modules MPM  dupliquent Apache afin de lui permettre de répondre à plusieurs requêtes  simultanément.]</p>
<p>La différence entre les deux est que là où MPM  Prefork utilise uniquement des processus  (http://fr.wikipedia.org/wiki/Processus_%28informatique%29) multiples  pour prendre en charge les requêtes concurrentes, MPM Worker  utilise  des threads (<a href="http://fr.wikipedia.org/wiki/Thread_%28informatique%29">http://fr.wikipedia.org/wiki/Thread_%28informatique%29</a>)  pour paralléliser les requêtes au sein même des processus multiples,  offrant donc de meilleures performances mais imposant d'utiliser  uniquement des modules supportant les threads, interdisant par la même  occasion l'utilisation du module mod_php permettant à Apache  d'interprêter les script PHP.</p>
<p>On prendra donc soin d'installer apache mpm_prefork ainsi que mod_php.</p>
<p>[encar  Certains objecterons qu'on aurait très bien pu utiliser MPM Worker et  exécuter les scripts PHP via une interface CGI (mod_cgi, mod_fastcgi  voire mod_speedycgi) et ils auront raion… cpendant, même avec des  optimisations, cette solution sera toujours moins performante que MPM  Prefok avec mod_php. De plus, l'utilisation d'accélérateurs de scripts  PHP comme la mise en cache d'op-code est impossible en dehors de  mod_php. ]</p>
<h1>Points à améliorer</h1>
<p>Qu'est-ce qui pourrait  bien ralentir notre serveur ? C'est la question qu'il est temps de se  poser pour pouvoir avancer dans la bonne direction : elle nous permettra  d'identifier les goulots d'étranglement qui ralentissent Apache. Nous  ne parlerons pas ici d'optimisations coté PHP.</p>
<h2>Accès disque</h2>
<p>À  chaque fois que votre serveur est sollicité, toutes les ressources dont  il a besoin sont prises sur le disque. Du fichier .htaccess aux images  et scripts, en passant par les logs. Un accès disque est aussi effectué à  chaque fois qu'Apache doit déterminer si le fichier a été modifié ou  non afin de calculer un ETAG par exemple.</p>
<h2>Requêtes DNS</h2>
<p>Lorsque  les domaines sont affichés en clair dans les logs, lorsqu'un module  vérifie si l'adresse ip d'un client figure dans une RBL ou lorsque dans  une règle de contrôle d'accès à un dossier, un domaine est à vérifier,  des requêtes DNS sont effectuées, ralentissant d'autant chaque  traitement de requête.</p>
<h2>Taille des fichiers transférés</h2>
<p>Au  plus la taille des fichiers transférés est faible, au plus vite la page  sera affichée sur le navigateur du visiteur de votre site : il faut  donc, le plus possible, réduire la taille des fichiers transférés,  notamment par l'utilisation de la compression lorsque cela est possible.</p>
<h2>Taille des requêtes</h2>
<p>Si  votre site web installe des cookies sur le navigateur client, ces  derniers seront joints à chaque requête, même celles concernant des  fichiers statiques invariants.</p>
<h2>Nombre de requêtes pour une page</h2>
<p>Dans  votre page web, chaque script, chaque image, ou feuille de style est  une requête supplémentaire à laquelle votre serveur devra répondre. Peut  être qu'il n'est pas utile de tout recharger à chaque fois, et que le  navigateur de l'internaute peut éventuellement mettre tout ou partie  d'un contenu statique en cache</p>
<h2>Mauvaise configuration</h2>
<h3>Matérielle</h3>
<p>Un  serveur web, on l'a vu plus haut, a besoin d'accéder très régulièrement  au système de fichiers : utiliser un système de stockage adéquat et  permettant des taux de transfert élevés est préférable.</p>
<p>Un  serveur web a aussi besoin de RAM, suffisamment pour lui permettre de  servir autant de requêtes simultanées que nécessaire, sans avoir besoin  d'utiliser la partition d'échange.</p>
<p>On le verra plus tard, mais la  RAM pourra aussi servir à mettre des ressources en cache voire  d'abriter un système de fichiers volatile, selon les besoins du site  (son trafic) et votre budget, au plus il y a de RAM, au mieux c'est.</p>
<p>Dans le cas de l'utilisation de PHP, on aura bien évidemment besoin de plus de RAM que pour servir des fichiers statiques.</p>
<h3>Du système</h3>
<p>Il  est important de configurer le système d'exploitation de façon optimale  ainsi que d'installer un certain nombre d'utilitaires permettant  d'aider Apache à rester performant, comme, par exemple, un système de  rotation des fichiers logs, un système de gestion d'un cache en RAM. On  prendra aussi soin de faire en sorte que d'autres processus n'occupent  pas le serveur inutilement (CPU et RAM).</p>
<h3>D'Apache</h3>
<p>Apache  en lui même aura évidemment besoin d'être configuré avec discernement,  mais le choix des modules ainsi que leur configuration propre est tout  aussi important : certains modules, installés ou activés par défaut, ou  dans leur configuration initiale peuvent faire grandement chuter les  performances d'Apache.</p>
</div>
<h4 class='related-posts-header'>Articles apparentés</h4><ul class="related-posts-list"><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/08/creer-un-fichier-pid-pour-funambol-sous-gnu-linux/">Créer un fichier PID pour Funambol sous GNU/Linux</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/05/quelques-scripts-pour-profiter-de-son-scanner-sous-gnulinux/">Quelques scripts pour profiter de son scanner sous GNU/Linux</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/05/configurer-vsftpd-pour-mettre-a-jour-automatiquement-wordpress/">Configurer vsftpd pour mettre à jour automatiquement Wordpress</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/inclure-ses-machines-virtuelles-a-son-reseau-avec-virtualbox/">Inclure ses machines virtuelles à son réseau avec VirtualBox</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/installation-de-funambol-couple-a-zimbra-sur-un-serveur-gnu-linux/">Installation de Funambol couplé à Zimbra sur un serveur GNU/Linux</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/pour-des-sessions-ssh-qui-durent/">Pour des sessions SSH qui durent</a> </li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.modulaweb.fr/blog/2010/11/optimiser-apache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Créer un fichier PID pour Funambol sous GNU/Linux</title>
		<link>http://www.modulaweb.fr/blog/2009/08/creer-un-fichier-pid-pour-funambol-sous-gnu-linux/</link>
		<comments>http://www.modulaweb.fr/blog/2009/08/creer-un-fichier-pid-pour-funambol-sous-gnu-linux/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 05:47:19 +0000</pubDate>
		<dc:creator>Jean-François VIAL</dc:creator>
				<category><![CDATA[Choses utiles]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[funambol]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[head]]></category>
		<category><![CDATA[Monit]]></category>
		<category><![CDATA[PID]]></category>
		<category><![CDATA[ps]]></category>

		<guid isPermaLink="false">http://www.modulaweb.fr/blog/?p=397</guid>
		<description><![CDATA[Lorsqu'il est lancé, le serveur Funambol ne crée pas de fichier PID rendant difficile son monitoring à l'aide d'outils comme Monit qui, à l'aide d'un PID, monitorent les ressources consommées par un process donné. À l'aide d'un script bash, nous allons permettre cette création de fichier PID. Fonctionnement du script Rien de bien sorcier, juste [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-340" src="http://www.modulaweb.fr/blog/wp-content/uploads/2009/02/funambol1.png" alt="" width="128" height="128" />Lorsqu'il est lancé, le serveur Funambol ne crée pas de fichier PID rendant difficile son monitoring à l'aide d'outils comme <a href="http://fr.wikipedia.org/wiki/Monit">Monit</a> qui, à l'aide d'un PID, monitorent les ressources consommées par un process donné.</p>
<p>À l'aide d'un script bash, nous allons permettre cette création de fichier PID.<br />
<span id="more-397"></span></p>
<h2>Fonctionnement du script</h2>
<p>Rien de bien sorcier, juste une recherche des PID des différents composants du serveur Funambol à l'aide d'un bon vieux <a href="http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man1/ps.1.html">ps</a> couplé à une paire de <a href="http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man1/grep.1.html">grep</a> associés à un petit <a href="http://fr.wikipedia.org/wiki/Awk">awk</a> suivi d'un <a href="http://pwet.fr/man/linux/commandes/head">head</a>... autrement dit "on recherche les processus des composants de funambol dans la liste des processus, et on récupère leurs PID".</p>
<h2>Le script</h2>
<p>Il y a certainement plus élégant mais l'essentiel c'est qu'il fasse ce qu'on lui demande et qu'il remplisse sa fonction didactique.</p>
<pre class="bash"><span style="color: #808080; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Check the script is being run by root, or die.</span>
<span style="color: #007800;">ROOT_UID=</span><span style="color: #000000;">0</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$UID&quot;</span> -ne <span style="color: #ff0000;">&quot;$ROOT_UID&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Run script as &quot;</span>root<span style="color: #ff0000;">&quot;.&quot;</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span>
	<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #007800;">DS_SERVER=</span>`<span style="color: #c20cb9; font-weight: bold;">ps</span> -ef | <span style="color: #c20cb9; font-weight: bold;">grep</span> ds-server | <span style="color: #c20cb9; font-weight: bold;">grep</span> -v <span style="color: #c20cb9; font-weight: bold;">grep</span>`
&nbsp;
<span style="color: #007800;">HYPERSONIC=</span>`<span style="color: #c20cb9; font-weight: bold;">ps</span> -ef | <span style="color: #c20cb9; font-weight: bold;">grep</span> hypersonic | <span style="color: #c20cb9; font-weight: bold;">grep</span> -v <span style="color: #c20cb9; font-weight: bold;">grep</span>`
&nbsp;
<span style="color: #007800;">CTP_SERVER=</span>`<span style="color: #c20cb9; font-weight: bold;">ps</span> -ef | <span style="color: #c20cb9; font-weight: bold;">grep</span> com.funambol.ctp.server.CTPServer | <span style="color: #c20cb9; font-weight: bold;">grep</span> -v <span style="color: #c20cb9; font-weight: bold;">grep</span>`
&nbsp;
<span style="color: #007800;">INBOX_LISTENER=</span>`<span style="color: #c20cb9; font-weight: bold;">ps</span> -ef | <span style="color: #c20cb9; font-weight: bold;">grep</span> inbox-listener | <span style="color: #c20cb9; font-weight: bold;">grep</span> -v <span style="color: #c20cb9; font-weight: bold;">grep</span>`
&nbsp;
<span style="color: #007800;">PIM_LISTENER=</span>`<span style="color: #c20cb9; font-weight: bold;">ps</span> -ef | <span style="color: #c20cb9; font-weight: bold;">grep</span> pimlistener | <span style="color: #c20cb9; font-weight: bold;">grep</span> -v <span style="color: #c20cb9; font-weight: bold;">grep</span>`
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> -z <span style="color: #ff0000;">&quot;$DS_SERVER&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> -e /opt/funambol/ds-server.pid <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
		<span style="color: #c20cb9; font-weight: bold;">rm</span> /opt/Funambol/ds-server.pid
	<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">else</span>
	<span style="color: #c20cb9; font-weight: bold;">ps</span> -ef | <span style="color: #c20cb9; font-weight: bold;">grep</span> ds-server | <span style="color: #c20cb9; font-weight: bold;">grep</span> -v <span style="color: #c20cb9; font-weight: bold;">grep</span> | <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $2}'</span> | <span style="color: #c20cb9; font-weight: bold;">head</span> -n <span style="color: #000000;">1</span> &gt; /opt/Funambol/ds-server.pid
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> -z <span style="color: #ff0000;">&quot;$HYPERSONIC&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> -e /opt/funambol/hypersonic.pid <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
                <span style="color: #c20cb9; font-weight: bold;">rm</span> /opt/Funambol/hypersonic.pid
        <span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">else</span>
        <span style="color: #c20cb9; font-weight: bold;">ps</span> -ef | <span style="color: #c20cb9; font-weight: bold;">grep</span> hypersonic | <span style="color: #c20cb9; font-weight: bold;">grep</span> -v <span style="color: #c20cb9; font-weight: bold;">grep</span> | <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $2}'</span> | <span style="color: #c20cb9; font-weight: bold;">head</span> -n <span style="color: #000000;">1</span> &gt; /opt/Funambol/hypersonic.pid
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> -z <span style="color: #ff0000;">&quot;$CTP_SERVER&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> -e /opt/funambol/ctp-server.pid <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
                <span style="color: #c20cb9; font-weight: bold;">rm</span> /opt/Funambol/ctp-server.pid
        <span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">else</span>
        <span style="color: #c20cb9; font-weight: bold;">ps</span> -ef | <span style="color: #c20cb9; font-weight: bold;">grep</span> com.funambol.ctp.server.CTPServer | <span style="color: #c20cb9; font-weight: bold;">grep</span> -v <span style="color: #c20cb9; font-weight: bold;">grep</span> | <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $2}'</span> | <span style="color: #c20cb9; font-weight: bold;">head</span> -n <span style="color: #000000;">1</span> &gt; /opt/Funambol/ctp-server.pid
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> -z <span style="color: #ff0000;">&quot;$INBOX_LISTENER&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> -e /opt/funambol/inbox-listener.pid <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
                <span style="color: #c20cb9; font-weight: bold;">rm</span> /opt/Funambol/inbox-listener.pid
        <span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">else</span>
        <span style="color: #c20cb9; font-weight: bold;">ps</span> -ef | <span style="color: #c20cb9; font-weight: bold;">grep</span> inbox-listener | <span style="color: #c20cb9; font-weight: bold;">grep</span> -v <span style="color: #c20cb9; font-weight: bold;">grep</span> | <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $2}'</span> | <span style="color: #c20cb9; font-weight: bold;">head</span> -n <span style="color: #000000;">1</span> &gt; /opt/Funambol/inbox-listener.pid
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> -z <span style="color: #ff0000;">&quot;$PIM_LISTENER&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> -e /opt/funambol/pim-listener.pid <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
                <span style="color: #c20cb9; font-weight: bold;">rm</span> /opt/Funambol/pim-listener.pid
        <span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">else</span>
        <span style="color: #c20cb9; font-weight: bold;">ps</span> -ef | <span style="color: #c20cb9; font-weight: bold;">grep</span> pimlistener | <span style="color: #c20cb9; font-weight: bold;">grep</span> -v <span style="color: #c20cb9; font-weight: bold;">grep</span> | <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $2}'</span> | <span style="color: #c20cb9; font-weight: bold;">head</span> -n <span style="color: #000000;">1</span> &gt; /opt/Funambol/pim-listener.pid
<span style="color: #000000; font-weight: bold;">fi</span></pre>
<h2>Utilisation</h2>
<p>En appelant ce script via une tache cron, par exemple, vous permettrez aux système de monitoring d'avoir un pid à jour en cas de redémarrage.</p>
<p>Il est aussi possible de créer un script de commande pour (re)lancer/arrêter Funambol afin de créer/détruire ces fichiers PID au démarrage/arrêt de Funambol. Voici un exemple d'un tel script, où le script précédent (celui qui crée les PID) est dans /opt/controls/mk-funambol-pid-file :</p>
<pre class="bash"><span style="color: #808080; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Check the script is being run by root, or die.</span>
<span style="color: #007800;">ROOT_UID=</span><span style="color: #000000;">0</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$UID&quot;</span> -ne <span style="color: #ff0000;">&quot;$ROOT_UID&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Run script as &quot;</span>root<span style="color: #ff0000;">&quot;.&quot;</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span>
	<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #007800;">FUNAMBOL=</span>`<span style="color: #c20cb9; font-weight: bold;">ps</span> -ef | <span style="color: #c20cb9; font-weight: bold;">grep</span> /opt/Funambol | <span style="color: #c20cb9; font-weight: bold;">grep</span> -v <span style="color: #c20cb9; font-weight: bold;">grep</span>`
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> -z <span style="color: #ff0000;">&quot;$FUNAMBOL&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #007800;">FUNAMBOL_ON=</span><span style="color: #000000;">0</span>
<span style="color: #000000; font-weight: bold;">else</span>
	<span style="color: #007800;">FUNAMBOL_ON=</span><span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> $<span style="color: #000000;">1</span> <span style="color: #000000; font-weight: bold;">in</span>
start<span style="color: #7a0874; font-weight: bold;">&#41;</span>
	<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$FUNAMBOL_ON</span> -eq <span style="color: #000000;">1</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
	<span style="color: #000000; font-weight: bold;">then</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Funambol is already started : use $0 restart option to restart.&quot;</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span>
		<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
	<span style="color: #000000; font-weight: bold;">else</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Starting Funambol...&quot;</span>
		/opt/Funambol/bin/funambol start
		<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;done.&quot;</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Creating PID files...&quot;</span>
		/opt/controls/mk-funambol-pid-<span style="color: #c20cb9; font-weight: bold;">file</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;done.&quot;</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span>
	<span style="color: #000000; font-weight: bold;">fi</span>
	;;
stop<span style="color: #7a0874; font-weight: bold;">&#41;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$FUNAMBOL_ON</span> -eq <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
	<span style="color: #000000; font-weight: bold;">then</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Funambol is already stopped.&quot;</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span>
                <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
        <span style="color: #000000; font-weight: bold;">else</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Stopping Funambol...&quot;</span>
                /opt/Funambol/bin/funambol stop
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;done.&quot;</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Deleting PID files...&quot;</span>
                /opt/controls/mk-funambol-pid-<span style="color: #c20cb9; font-weight: bold;">file</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;done.&quot;</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span>
        <span style="color: #000000; font-weight: bold;">fi</span>
	;;
restart<span style="color: #7a0874; font-weight: bold;">&#41;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$FUNAMBOL_ON</span> -eq <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
	<span style="color: #000000; font-weight: bold;">then</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Funambol was already stopped !&quot;</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Starting Funambol...&quot;</span>
                /opt/Funambol/bin/funambol start
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;done.&quot;</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Creating PID files...&quot;</span>
                /opt/controls/mk-funambol-pid-<span style="color: #c20cb9; font-weight: bold;">file</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;done.&quot;</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span>
	<span style="color: #000000; font-weight: bold;">else</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Stopping Funambol...&quot;</span>
                /opt/Funambol/bin/funambol stop
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;done.&quot;</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Deleting PID files...&quot;</span>
                /opt/controls/mk-funambol-pid-<span style="color: #c20cb9; font-weight: bold;">file</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;done.&quot;</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Starting Funambol...&quot;</span>
                /opt/Funambol/bin/funambol start
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;done.&quot;</span>
		<span style="color: #7a0874; font-weight: bold;">echo</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Creating PID files...&quot;</span>
                /opt/controls/mk-funambol-pid-<span style="color: #c20cb9; font-weight: bold;">file</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;done.&quot;</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span>
        <span style="color: #000000; font-weight: bold;">fi</span>
	;;
status<span style="color: #7a0874; font-weight: bold;">&#41;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$FUNAMBOL_ON</span> -eq <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
        <span style="color: #000000; font-weight: bold;">then</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Funambol is curently stopped.&quot;</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span>
        <span style="color: #000000; font-weight: bold;">else</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Funambol is curently started.&quot;</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span>
        <span style="color: #000000; font-weight: bold;">fi</span>
        ;;
*<span style="color: #7a0874; font-weight: bold;">&#41;</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Usage $0 [start|stop|restart|status]&quot;</span>
	;;
<span style="color: #000000; font-weight: bold;">esac</span></pre>
<p>Ce script permet, en outre, de permettre un redémarrage direct de Funambol.</p>
<h2>Exemple d'application : configuration de Monit pour Funambol</h2>
<p>Considérant que nous avons les 2 scripts précédent, l'un dans /opt/controls/mk-funambol-pid-file et l'autre dans /opt/controls/funambol, on pourra utiliser, par exemple, la configuration suivante pour Monit :</p>
<pre># Funambol
check process ds-server with pidfile /opt/Funambol/ds-server.pid
        group funambol
        start program "/opt/controls/funambol start"
        stop program "/opt/controls/funambol stop"
        if failed port 8443 for 3 times within 3 cycles then restart
        if 2 restart within 10 cycles then timeout
check process hypersonic with pidfile /opt/Funambol/hypersonic.pid
        group funambol
check process ctp-server with pidfile /opt/Funambol/ctp-server.pid
        group funambol
check process inbox-listener with pidfile /opt/Funambol/inbox-listener.pid
        group funambol
check process pim-listener with pidfile /opt/Funambol/pim-listener.pid
        group funambol</pre>
<p>Ici funambol utilise une connexion sécurisée sur le port 8443 comme indiqué dans le <a href="http://www.modulaweb.fr/blog/2009/02/installation-de-funambol-couple-a-zimbra-sur-un-serveur-gnu-linux/">tutoriel d'installation de Funambol</a>, nous monitorons donc ce port.</p>
<p>Grâce aux pid, nous pourrons voir sur l'interface web de Monit les ressources consommées par les composants de Funambol, et éventuellement créer des règles dans le cas où cette consommation deviendrait excessive.</p>
<h4 class='related-posts-header'>Articles apparentés</h4><ul class="related-posts-list"><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/05/quelques-scripts-pour-profiter-de-son-scanner-sous-gnulinux/">Quelques scripts pour profiter de son scanner sous GNU/Linux</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/installation-de-funambol-couple-a-zimbra-sur-un-serveur-gnu-linux/">Installation de Funambol couplé à Zimbra sur un serveur GNU/Linux</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2010/11/optimiser-apache/">Optimiser Apache – Partie 1</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/05/configurer-vsftpd-pour-mettre-a-jour-automatiquement-wordpress/">Configurer vsftpd pour mettre à jour automatiquement Wordpress</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/inclure-ses-machines-virtuelles-a-son-reseau-avec-virtualbox/">Inclure ses machines virtuelles à son réseau avec VirtualBox</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/pour-des-sessions-ssh-qui-durent/">Pour des sessions SSH qui durent</a> </li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.modulaweb.fr/blog/2009/08/creer-un-fichier-pid-pour-funambol-sous-gnu-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quelques scripts pour profiter de son scanner sous GNU/Linux</title>
		<link>http://www.modulaweb.fr/blog/2009/05/quelques-scripts-pour-profiter-de-son-scanner-sous-gnulinux/</link>
		<comments>http://www.modulaweb.fr/blog/2009/05/quelques-scripts-pour-profiter-de-son-scanner-sous-gnulinux/#comments</comments>
		<pubDate>Fri, 22 May 2009 18:34:52 +0000</pubDate>
		<dc:creator>Jean-François VIAL</dc:creator>
				<category><![CDATA[Choses utiles]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[infographie]]></category>
		<category><![CDATA[sane]]></category>
		<category><![CDATA[zenity]]></category>

		<guid isPermaLink="false">http://www.modulaweb.fr/blog/?p=321</guid>
		<description><![CDATA[Sous GNU/Linux (et même sous BSD et autres Solaris), les scanners sont très bien gérés grâce au proget SANE. Bien que les interface graphiques pour SANE, comme XSane, soient très abouties, rien de mieux pour une utilisation "courante" de son scanner que les boutons dont il dispose. Le problème c'est qu'autant les scanners sont bien [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-322" src="http://www.modulaweb.fr/blog/wp-content/uploads/2009/05/gnome-dev-scanner.png" alt="" width="128" height="128" />Sous GNU/Linux (et même sous BSD et autres Solaris), les scanners sont très bien gérés grâce au proget SANE. Bien que les interface graphiques pour SANE, comme XSane, soient très abouties, rien de mieux pour une utilisation "courante" de son scanner que les boutons dont il dispose.</p>
<p>Le problème c'est qu'autant les scanners sont bien supportés en tant que tels, autant leurs boutons sont excessivement peu souvent supportés.</p>
<p>Certains, comme moi, seront certainement très frustrés de ne pas pouvoir utiliser les très utiles boutons de leur appareil, et je me suis dit que quelques petits scripts seraient certainement utiles à d'autres.<span id="more-321"></span><strong></strong></p>
<p><strong>Attention :</strong> j'utilise <a href="http://www.gnomefr.org/">Gnome</a>, et les scripts suivants utilisent <a href="http://library.gnome.org/users/zenity/index.html.fr">zenity</a>. Si vous êtes sous <a href="http://fr.kde.org/">KDE</a>, mieux vaut utiliser <a href="http://docs.kde.org/stable/fr/kdewebdev/kommander/kmdr-basics.html">kommander</a> (je vous laisse le soin d'adapter les scripts), mais vous pouvez très bien utiliser zenity… ça sera moins bien intégré, c'est tout.</p>
<p>Un préalable au bon fonctionnement de ces scripts est, bien entendu, qu'un scanner soit déjà connecté à la machine, et que se scanner soit reconnu et configuré… en plus, pour le premier, d'avoir une imprimante connectée, allumée, et configurée.</p>
<p>Comme d'habitude, un petit tour dans le man ne fera de mal à personne.</p>
<h2>Photocopie</h2>
<p><strong>Dépendances :</strong> tiff2ps (paquet libtiff-tools), zenity (ou kommander)<br />
<strong>Ce que fait le script :</strong> scanne vers un fichier TIFF, le convertit en PostScript et imprime le résultat.</p>
<pre class="bash"><span style="color: #808080; font-style: italic;">#!/bin/bash</span>
<span style="color: #000000; font-weight: bold;">if</span> `zenity --question --<span style="color: #007800;">text=</span><span style="color: #ff0000;">&quot;Assurez-vous d'avoir aligné le document sur le bord DROIT de la fenêtre puis cliquez sur «Valider»&quot;</span> --<span style="color: #007800;">title=</span><span style="color: #ff0000;">&quot;Photocopier un document&quot;</span>`
<span style="color: #000000; font-weight: bold;">then</span>
	scanimage --format tiff --mode Gray --resolution <span style="color: #000000;">300</span> -l <span style="color: #000000;">0</span> -t <span style="color: #000000;">0</span> -x 210mm -y 297mm -p &gt; tmp.tiff
	tiff2ps -z -<span style="color: #c20cb9; font-weight: bold;">w</span> <span style="color: #000000;">8.27</span> -h <span style="color: #000000;">11.69</span> tmp.tiff | <span style="color: #c20cb9; font-weight: bold;">lpr</span>
	<span style="color: #c20cb9; font-weight: bold;">rm</span> -f tmp.tif
<span style="color: #000000; font-weight: bold;">else</span>
	zenity --info --<span style="color: #007800;">text=</span><span style="color: #ff0000;">&quot;Photocopie annulée&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span></pre>
<h2>Scan2PDF</h2>
<p><strong>Dépendances :</strong> tiff2pdf (paquet libtiff-tools), zenity (ou kommander), evince (kpdf sous kde)<br />
<strong>Ce que fait le scritpt :</strong> scanne vers un fichier TIFF, le convertit en PDF et l'enregistre là où l'a indiqué l'utilisateur. Si l'utilisateur le souhaite, l'affiche à l'écran.</p>
<pre class="bash"><span style="color: #808080; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> `zenity --question --<span style="color: #007800;">text=</span><span style="color: #ff0000;">&quot;Assurez-vous d'avoir aligné le document sur le bord DROIT de la fenêtre puis cliquez sur «Valider»&quot;</span> --<span style="color: #007800;">title=</span><span style="color: #ff0000;">&quot;Scanner un document vers PDF&quot;</span>`
<span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #007800;">pdf=</span>$<span style="color: #7a0874; font-weight: bold;">&#40;</span>zenity --file-selection --save --confirm-overwrite --<span style="color: #007800;">filename=</span><span style="color: #ff0000;">&quot;$HOME/Desktop/scan.pdf&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> -n <span style="color: #007800;">$pdf</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
    <span style="color: #000000; font-weight: bold;">then</span>
        scanimage --format tiff --mode Gray --resolution <span style="color: #000000;">300</span> -l <span style="color: #000000;">0</span> -t <span style="color: #000000;">0</span> -x 210mm -y 297mm -p &gt; tmp.tiff
        tiff2pdf -o <span style="color: #007800;">$pdf</span> -z -p A4 -r d -c scan2pdf -a $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">whoami</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> ./tmp.tiff
        <span style="color: #c20cb9; font-weight: bold;">rm</span> -f tmp.tiff
        <span style="color: #000000; font-weight: bold;">if</span> `zenity --question --<span style="color: #007800;">text=</span><span style="color: #ff0000;">&quot;Le document va s'ouvrir&quot;</span> --<span style="color: #007800;">title=</span><span style="color: #ff0000;">&quot;Scan terminé&quot;</span>`
        <span style="color: #000000; font-weight: bold;">then</span>
            evince <span style="color: #007800;">$pdf</span>
        <span style="color: #000000; font-weight: bold;">fi</span>
    <span style="color: #000000; font-weight: bold;">else</span>
        zenity --info --<span style="color: #007800;">text=</span><span style="color: #ff0000;">&quot;Copie annulée&quot;</span>
    <span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">else</span>
    zenity --info --<span style="color: #007800;">text=</span><span style="color: #ff0000;">&quot;Copie annulée&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span></pre>
<h2>Scan2Gimp</h2>
<p><strong>Dépendances :</strong> zenity (ou kommander),tempfile gimp<br />
<strong>Ce que fait le scritpt :</strong> scanne vers un fichier TIFF sauvegardé sur le bureau avec un nom unique et l'ouvre avec <a href="http://www.framasoft.net/article1054.html">Gimp</a>.</p>
<pre class="bash"><span style="color: #808080; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> `zenity --question --<span style="color: #007800;">text=</span><span style="color: #ff0000;">&quot;Assurez-vous d'avoir aligné le document sur le bord DROIT de la fenêtre puis cliquez sur «Valider»&quot;</span> --<span style="color: #007800;">title=</span><span style="color: #ff0000;">&quot;Scan vers Gimp&quot;</span>`
<span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #007800;">tmp=</span><span style="color: #ff0000;">&quot;$(tempfile -d &quot;</span><span style="color: #007800;">$HOMEDesktop</span><span style="color: #ff0000;">&quot; -p &quot;</span>scan-<span style="color: #ff0000;">&quot; -s &quot;</span>.tiff<span style="color: #ff0000;">&quot;)&quot;</span>
    scanimage --format tiff --mode Gray --resolution <span style="color: #000000;">300</span> -l <span style="color: #000000;">0</span> -t <span style="color: #000000;">0</span> -x 210mm -y 297mm -p &gt; <span style="color: #007800;">$tmp</span>
    <span style="color: #c20cb9; font-weight: bold;">gimp</span> <span style="color: #007800;">$tmp</span>
<span style="color: #000000; font-weight: bold;">else</span>
    zenity --info --<span style="color: #007800;">text=</span><span style="color: #ff0000;">&quot;Scan annulé&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span></pre>
<h4 class='related-posts-header'>Articles apparentés</h4><ul class="related-posts-list"><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/08/creer-un-fichier-pid-pour-funambol-sous-gnu-linux/">Créer un fichier PID pour Funambol sous GNU/Linux</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2010/11/optimiser-apache/">Optimiser Apache – Partie 1</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2010/07/ressources-graphiques/">Ressources graphiques</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/05/configurer-vsftpd-pour-mettre-a-jour-automatiquement-wordpress/">Configurer vsftpd pour mettre à jour automatiquement Wordpress</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/inclure-ses-machines-virtuelles-a-son-reseau-avec-virtualbox/">Inclure ses machines virtuelles à son réseau avec VirtualBox</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/un-nuancier-pantone%c2%ae-en-ligne/">Un nuancier Pantone® en ligne</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/installation-de-funambol-couple-a-zimbra-sur-un-serveur-gnu-linux/">Installation de Funambol couplé à Zimbra sur un serveur GNU/Linux</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/pour-des-sessions-ssh-qui-durent/">Pour des sessions SSH qui durent</a> </li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.modulaweb.fr/blog/2009/05/quelques-scripts-pour-profiter-de-son-scanner-sous-gnulinux/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Configurer vsftpd pour mettre à jour automatiquement WordPress</title>
		<link>http://www.modulaweb.fr/blog/2009/05/configurer-vsftpd-pour-mettre-a-jour-automatiquement-wordpress/</link>
		<comments>http://www.modulaweb.fr/blog/2009/05/configurer-vsftpd-pour-mettre-a-jour-automatiquement-wordpress/#comments</comments>
		<pubDate>Sun, 17 May 2009 16:06:29 +0000</pubDate>
		<dc:creator>Jean-François VIAL</dc:creator>
				<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[vsftpd]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.modulaweb.fr/blog/?p=294</guid>
		<description><![CDATA[WordPress, intègre des possibilités de mise à jour automatique des plugins en utilisant le protocole FTP. Certains se poseront la question du pourquoi de l'utilisation de FTP pour cela alors que PHP est très à même de télécharger des fichiers depuis l'internet et lancer des commandes shell pour décompresser les archives, sans parler de la [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-301" src="http://www.modulaweb.fr/blog/wp-content/uploads/2009/05/g2399.png" alt="" width="150" height="150" /></p>
<p>WordPress, intègre des possibilités de mise à jour automatique des plugins en utilisant le protocole FTP. Certains se poseront la question du pourquoi de l'utilisation de FTP pour cela alors que PHP est très à même de télécharger des fichiers depuis l'internet et lancer des commandes shell pour décompresser les archives, sans parler de la gestion des fichiers, mais ça n'est pas l'objet de cet article.</p>
<p>Afin de pouvoir utiliser cette fonctionnalité de mise à jour de WordPress, il vous faut un serveur FTP sur votre serveur. Je vais vous proposer vsftpd (pour <em>Very Secure File Transfert Protocol Deamon</em> : Service de Transfert de Fichiers Trés Sécurisé) alors que d'autres sont de fervents adeptes de Proftp. Ce choix s'explique par deux arguments, le premier étant la sécurité qu'il apporte (RedHat, OpenBSD et SuSE, notamment, l'utilisent pour leurs serveurs FTP publics), le deuxième étant sa simplicité de configuration.<span id="more-294"></span></p>
<p>Vsftpd permet de créer des utilisateurs virtuels Ces utilisateurs virtuels utilisent sur le système l'identité de l'utilisateur “ftp” pour effectuer les opérations sur le système de fichiers. Vsftpd permet aussi de n'écouter que certaines interfaces, ce qui nous permettra de sécuriser totalement notre serveur.</p>
<p>Comme d'habitude, nous allons prendre l'exemple d'une distribution basée sur Debian (Debian, Ubuntu et dérivés…) la première chose à faire étant d'installer vsftpd via un <em>sudo apt-get install vsftpd</em> (ou autre, selon votre distribution).</p>
<p>En suite, trois choses à configurer : PAM pour permettre l'utilisation des utilisateurs virtuels, vsftpd lui même par le biais de son fichier de configuration et les utilisateurs virtuels.</p>
<p>Enfin il conviendra de modifier quelque peu les droits d'écriture de certains répertoires et fichiers.</p>
<h2>1. Configuration de PAM</h2>
<p>Il faut, si ces bibliothèques ne sont pas déja présentes, installer le support des bases de données Berkeley : libdbX et dbX-util où X = la version, 4.4, 4.6 ou 4.7 soit, par exemple, <em>sudo apt-get install libdb4.6 db4.6-util</em>.</p>
<p>En suite, configurer PAM pour lui dire où chercher les informations de connexion : éditer le fichier /etc/pam.d/vsftpd (le créer si besoin, le vider si déjà présent) et y mettre :</p>
<pre>auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/login</pre>
<p>Si vous êtes en 64 bits, il conviendra peut être de remplacer lib par lib64.</p>
<p>Aller dans le répertoire /etc/vsftpd (le créer si besoin), et créer un fichier “login.txt” qui contiendra, en clair, les login et mots de passe de tous les utilisateurs virtuels. Ce fichier est de la forme :</p>
<pre>login1
mot de passe de login1
login2
mot de passe de login2
…</pre>
<p>Pour WordPress, on va y mettre, par exemple :</p>
<pre>wordpress
wp-pass</pre>
<p>Il faut en suite convertir ce fichier en base de données Berkeley à l'aide de la commande :</p>
<pre class="bash"><span style="color: #c20cb9; font-weight: bold;">sudo</span> db4.6_load -T -t <span style="color: #7a0874; font-weight: bold;">hash</span> -f /etc/vsftpd/<span style="color: #c20cb9; font-weight: bold;">login</span>.txt /etc/vsftpd/<span style="color: #c20cb9; font-weight: bold;">login</span>.db</pre>
<p>Remarque : il conviendra de remplacer db4.6_load par db4.4_load ou db4.7_load selon la version disponnible.</p>
<p><strong>Note:</strong> certains se demandent pourquoi faire ça (écrire les mots de passe dans un fichier en clair et le convertir en db) et ne pas directement utiliser le fichier en clair : c'est simplement qu'il sera, par la suite, plus simple pour ouvrir le serveur ftp au public. Il suffira de faire un chmod à 600 sur ces fichiers et/ou de supprimer la version en clair.</p>
<h2>2. Configuration de vsftpd</h2>
<p>Sauvegarder /etc/vsftpd.conf (par, par exemple un petit sudo <em>cp /etc/vsftpd.conf /etc/vsftpd.conf.bak</em>), l'éditer, le vider et y mettre :</p>
<pre># Lancement de vsftpd en standalone
listen=YES
# vsftpd ne va accepter les connexion uniquement depuis le serveur lui même
listen_address=127.0.0.1
# activation des utilisateurs locaux (permet d'utiliser les utilisateurs virtuels)
local_enable=YES
# Afin de permettre la mise à jour, il *faut* permettre l'écriture
write_enable=YES
# activation explicite des utilisateurs virtuels
guest_enable=YES
# force les utilisateurs virtuels d'agir vis à vis du système comme l'utilisateur
guest_username=ftp
# force les utilisateurs à rester dans le ~ de l'utilisateur guest (spacifié juste au dessus soit '/home/ftp/')
chroot_local_user=YES
# active la configuration 'per user&quot; permettant, de créer plusieurs utilisateurs virtuels si besoin par la suite, pour un autre WordPress par exemple
user_config_dir=/etc/vsftpd/users</pre>
<p><strong>Attention :</strong> si vous souhaitez, par la suite, ouvrir votre serveur ftp au public, veuillez ré-utiliser le fichier de configuration initial et le compléter avec les éléments de cet exemple. En effet, étant donné que notre WordPress est sur le même serveur que le serveur FTP, on n'a pas besoin de restreindre la sécurité outre mesure, ce qui ne convient évidement pas à une utilisation “publique”</p>
<h2>3. Configuration des utilisateurs</h2>
<p>On va utiliser ici une configuration “per user” qui permet de modifier la configuration pour chaque utilisateur virtuel (cas où on utilise plusieurs installations de WordPress sur le même serveur). Pour se faire, il nous faut simplement créer un fichier pour chaque utilisateur dans /etc/vsftpd/users (qu'il faudra créer via <em>sudo mkdir /etc/vsftpd/users</em>)</p>
<p>Nous avons créé plus haut un utilisateur nommé “wordpress”, créons donc ce fichier en le nommant “wordpress” : <em>sudo nano /etc/vsftpd/users/wordpress</em> et mettons ce qui suit dedans :</p>
<pre># l'utilisateur doit être enfermé dans un dossier contenu dans /home/ftp
# ce dossier sera un lien symbolique vers la racine (contenant le dossier wp-content)
# de votre installation de WordPress
local_root=/home/ftp/wordpress
# droit d'écriture
write_enable=YES
anon_upload_enable=YES
# droit créer des dossiers
anon_mkdir_write_enable=YES
# droit de renommer, supprimer...
anon_other_write_enable=YES
# signifie que l'utilisateur virtuel à les mêmes droits que l'utilisateur réel (ici ftp)
virtual_use_local_privs=YES
# définit l'umask pour les fichiers
local_umask=022</pre>
<p>En suite il faut créer le lien symbolique dans /home/ftp, dans le fichier de configuration, nous avons spécifié “/home/ftp/wordpress”. Ce lien symbolique va devoir pointer vers le dossier racine de votre installation de WordPress (contenant wp-content) mettons /home/www/blog/, ce qui donne : <em>sudo ln -s /home/www/blog /home/ftp/wordpress</em></p>
<h2>4. Droits utilisateur</h2>
<p>Il faut permettre à l'utilisateur ftp de créer des dossiers et des fichiers dans le dossier wp-content/upgrade (qu'il faudra créer, car il n'existe pas par défaut à moins que vous ne donniez ces droits au dossier wp-content). Même chose à tous les dossiers/fichiers contenus dans le dossier wp-content/plugins<br />
Je vous laisse faire, après tout, si vous êtes arrivés jusqu'ici c'est que vous en êtes capable normalement.</p>
<h2>5. Redémarrage de vsftpd et tests</h2>
<p>Redémarrer vsftpd via sudo /etc/init.d/vsftpd restart et tester la mise à jour des plugins de WordPress : pour se faire, si vous n'avez pas de plugin à mettre à jour, vous pouvez toujours télécharger une ancienne version d'un plugin et chercher à le mettre à jour.</p>
<p>Dans WordPress, allez dans le menu “Extentions”, et cliquez sur “mise à jour automatique” sur la ligne d'un plugin à mettre à jour. Un formulaire apparaît, entrez-y “127.0.0.1” comme hôte, “wordpress” comme login, “wp-pass» comme mot de passe, et cochez “FTP” puis "mettre à jour". Si vous voyez une erreur lors de la mise à jour, lisez bien le message renvoyé par WordPress : il vous renseignera exactement sur ce qui ne va pas. Si WordPress n'arrive pas à créer ou supprimer un fichier/dossier dans un répertoire, vérifiez les droits, le plus souvent les problèmes viennent de là.</p>
<p>Si les droits s'emblent ok, vérifiez le fonctionnement du serveur directement avec le client ftp en ssh : une session "réussie" devrait ressembler à ça :</p>
<pre class="bash">$ <span style="color: #c20cb9; font-weight: bold;">ftp</span> <span style="color: #000000;">127.0</span><span style="color: #000000;">.0</span><span style="color: #000000;">.1</span>
Connected to <span style="color: #000000;">127.0</span><span style="color: #000000;">.0</span><span style="color: #000000;">.1</span>.
<span style="color: #000000;">220</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>vsFTPd <span style="color: #000000;">2.0</span><span style="color: #000000;">.6</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
Name <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">127.0</span><span style="color: #000000;">.0</span><span style="color: #000000;">.1</span>:modulaweb<span style="color: #7a0874; font-weight: bold;">&#41;</span>: wordpress
<span style="color: #000000;">331</span> Please specify the password.
Password:
<span style="color: #000000;">230</span> Login successful.
Remote system <span style="color: #7a0874; font-weight: bold;">type</span> is UNIX.
Using binary mode to transfer files.
ftp&amp;gt; <span style="color: #c20cb9; font-weight: bold;">ls</span>
<span style="color: #000000;">200</span> PORT <span style="color: #7a0874; font-weight: bold;">command</span> successful. Consider using PASV.
<span style="color: #000000;">150</span> Here comes the directory listing.
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>            <span style="color: #000000;">397</span> May <span style="color: #000000;">25</span>  <span style="color: #000000;">2008</span> index.php
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>          <span style="color: #000000;">15410</span> Dec <span style="color: #000000;">06</span> <span style="color: #000000;">07</span>:<span style="color: #000000;">47</span> license.txt
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>           <span style="color: #000000;">7638</span> Oct <span style="color: #000000;">29</span>  <span style="color: #000000;">2008</span> readme.html
drwxrwxrwx    <span style="color: #000000;">3</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>           <span style="color: #000000;">4096</span> May <span style="color: #000000;">17</span> <span style="color: #000000;">13</span>:<span style="color: #000000;">20</span> upgrade
drwxrwxr-x    <span style="color: #000000;">2</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>           <span style="color: #000000;">4096</span> Apr <span style="color: #000000;">30</span> <span style="color: #000000;">10</span>:<span style="color: #000000;">33</span> util
drwxrwxr-x    <span style="color: #000000;">8</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>           <span style="color: #000000;">4096</span> Apr <span style="color: #000000;">15</span> <span style="color: #000000;">03</span>:<span style="color: #000000;">36</span> wp-admin
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>          <span style="color: #000000;">40271</span> Nov <span style="color: #000000;">28</span> <span style="color: #000000;">21</span>:<span style="color: #000000;">04</span> wp-app.php
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>            <span style="color: #000000;">220</span> Oct <span style="color: #000000;">14</span>  <span style="color: #000000;">2008</span> wp-atom.php
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>            <span style="color: #000000;">274</span> May <span style="color: #000000;">25</span>  <span style="color: #000000;">2008</span> wp-blog-header.php
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>           <span style="color: #000000;">3483</span> Apr <span style="color: #000000;">16</span> <span style="color: #000000;">23</span>:<span style="color: #000000;">27</span> wp-comments-post.php
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>            <span style="color: #000000;">238</span> Oct <span style="color: #000000;">14</span>  <span style="color: #000000;">2008</span> wp-commentsrss2.php
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>           <span style="color: #000000;">2497</span> Dec <span style="color: #000000;">16</span> <span style="color: #000000;">08</span>:<span style="color: #000000;">33</span> wp-config-sample.php
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>           <span style="color: #000000;">2702</span> May <span style="color: #000000;">02</span> <span style="color: #000000;">02</span>:<span style="color: #000000;">47</span> wp-config.php
drwxrwxr-x    <span style="color: #000000;">7</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>           <span style="color: #000000;">4096</span> May <span style="color: #000000;">17</span> <span style="color: #000000;">13</span>:<span style="color: #000000;">39</span> wp-content
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>           <span style="color: #000000;">1242</span> Sep <span style="color: #000000;">18</span>  <span style="color: #000000;">2008</span> wp-cron.php
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>            <span style="color: #000000;">220</span> Oct <span style="color: #000000;">14</span>  <span style="color: #000000;">2008</span> wp-feed.php
drwxrwxr-x    <span style="color: #000000;">6</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>           <span style="color: #000000;">4096</span> May <span style="color: #000000;">01</span> <span style="color: #000000;">16</span>:<span style="color: #000000;">19</span> wp-includes
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>           <span style="color: #000000;">1986</span> May <span style="color: #000000;">25</span>  <span style="color: #000000;">2008</span> wp-links-opml.php
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>           <span style="color: #000000;">2004</span> Oct <span style="color: #000000;">31</span>  <span style="color: #000000;">2008</span> wp-load.php
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>          <span style="color: #000000;">19738</span> Dec <span style="color: #000000;">03</span> <span style="color: #000000;">19</span>:<span style="color: #000000;">04</span> wp-<span style="color: #c20cb9; font-weight: bold;">login</span>.php
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>           <span style="color: #000000;">6932</span> Dec <span style="color: #000000;">09</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">03</span> wp-mail.php
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>            <span style="color: #000000;">487</span> May <span style="color: #000000;">25</span>  <span style="color: #000000;">2008</span> wp-pass.php
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>            <span style="color: #000000;">218</span> Oct <span style="color: #000000;">14</span>  <span style="color: #000000;">2008</span> wp-rdf.php
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>            <span style="color: #000000;">316</span> May <span style="color: #000000;">25</span>  <span style="color: #000000;">2008</span> wp-register.php
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>            <span style="color: #000000;">218</span> Oct <span style="color: #000000;">14</span>  <span style="color: #000000;">2008</span> wp-rss.php
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>            <span style="color: #000000;">220</span> Oct <span style="color: #000000;">14</span>  <span style="color: #000000;">2008</span> wp-rss2.php
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>          <span style="color: #000000;">18695</span> Jan <span style="color: #000000;">24</span> <span style="color: #000000;">13</span>:<span style="color: #000000;">21</span> wp-settings.php
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>           <span style="color: #000000;">3434</span> May <span style="color: #000000;">25</span>  <span style="color: #000000;">2008</span> wp-trackback.php
-rwxrwxr-x    <span style="color: #000000;">1</span> <span style="color: #000000;">1002</span>     <span style="color: #000000;">33</span>          <span style="color: #000000;">92428</span> Jan <span style="color: #000000;">19</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">47</span> xmlrpc.php
<span style="color: #000000;">226</span> Directory send OK.
ftp&amp;gt; <span style="color: #7a0874; font-weight: bold;">exit</span>
<span style="color: #000000;">221</span> Goodbye.</pre>
<p>N'hésitez pas à faire des suggestions ou remarques en commentaire.</p>
<h4 class='related-posts-header'>Articles apparentés</h4><ul class="related-posts-list"><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/08/creer-un-dummy-package-sous-debian-ou-ubuntu/">Créer un «dummy-package» sous Debian ou Ubuntu</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/pour-des-sessions-ssh-qui-durent/">Pour des sessions SSH qui durent</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2010/11/optimiser-apache/">Optimiser Apache – Partie 1</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/08/creer-un-fichier-pid-pour-funambol-sous-gnu-linux/">Créer un fichier PID pour Funambol sous GNU/Linux</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/05/quelques-scripts-pour-profiter-de-son-scanner-sous-gnulinux/">Quelques scripts pour profiter de son scanner sous GNU/Linux</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/inclure-ses-machines-virtuelles-a-son-reseau-avec-virtualbox/">Inclure ses machines virtuelles à son réseau avec VirtualBox</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/installation-de-funambol-couple-a-zimbra-sur-un-serveur-gnu-linux/">Installation de Funambol couplé à Zimbra sur un serveur GNU/Linux</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/lancer-ubuntu-dans-virtualbox/">Lancer Ubuntu dans VirtualBox</a> </li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.modulaweb.fr/blog/2009/05/configurer-vsftpd-pour-mettre-a-jour-automatiquement-wordpress/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Inclure ses machines virtuelles à son réseau avec VirtualBox</title>
		<link>http://www.modulaweb.fr/blog/2009/02/inclure-ses-machines-virtuelles-a-son-reseau-avec-virtualbox/</link>
		<comments>http://www.modulaweb.fr/blog/2009/02/inclure-ses-machines-virtuelles-a-son-reseau-avec-virtualbox/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 14:36:48 +0000</pubDate>
		<dc:creator>Jean-François VIAL</dc:creator>
				<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[virtualisation]]></category>

		<guid isPermaLink="false">http://blog.modulaweb.fr/?p=59</guid>
		<description><![CDATA[Par défaut, VirtualBox propose de connecter les machines virtuelles (ou VM) via un NAT : un serveur DHCP interne à VirtualBox fournit à la VM une adresse IP, la VM a accès à Internet, mais il est impossible d'y accéder via le réseau (même via le système hôte, par exemple pour utiliser SSH ou faire [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-154" href="http://www.modulaweb.fr/blog/2009/02/inclure-ses-machines-virtuelles-a-son-reseau-avec-virtualbox/virtualbox/"><img class="alignleft size-full wp-image-154" title="virtualbox" src="http://www.modulaweb.fr/blog/wp-content/uploads/2009/02/virtualbox.png" alt="virtualbox" width="128" height="128" /></a>Par défaut, VirtualBox propose de connecter les machines virtuelles (ou VM) via un <acronym title="Network Address Translator - Traducteur d'adresse réseau">NAT</acronym> : un serveur <acronym title="Dynamic Host Configuration Protocol">DHCP</acronym> interne à VirtualBox fournit à la VM une adresse IP, la VM a accès à Internet, mais il est impossible d'y accéder via le réseau (même via le système hôte, par exemple pour utiliser SSH ou faire un montage Samba... la solution ? Faire un "pont" !<span id="more-59"></span></p>
<p>L'exemple ici fonctionne sous une Debian (ou Ubuntu), adaptez-le selon votre propre système.</p>
<p>La méthode présentée ici est la méthode statique... on aurait pu utiliser une méthode qui crée/détruit les interfaces de manière dynamique, mais le but ici est de faire en sorte de comprendre un minimum ce qui est fait, et le succès de la méthode statique conditionne celui de la méthode dynamique... qui fera (peut être) l'objet d'un prochain article)</p>
<p>Voici la marche à suivre :</p>
<p>→ installer le paquet "bridge-utils"</p>
<p>→ éditer /etc/network/interfaces et y créer une nouvelle interface (le bridge) qui sera rattachée à une interface physique existante :</p>
<pre class="apache">auto eth0
iface eth0 inet dhcp <span style="color: #adadad; font-style: italic;"># ici eth0 obtient son adresse IP via DHCP</span>
<span style="color: #adadad; font-style: italic;"># Création du pont :</span>
auto br0
iface br0 inet dhcp <span style="color: #adadad; font-style: italic;"># br0 permettra à la machine virtuelle de d'obtenir son adresse IP via DHCP</span>
        bridge_ports eth0
        bridge_fd <span style="color: #ff0000;">2</span></pre>
<p style="padding-left: 30px;"><strong>bridge_ports</strong> permet de lier la connexion en pont sur l'interface eth0 qui a été configurée <strong>en dhcp<br />
bridge_fd</strong> correspond au temps d'apprentissage de l'adresse ip de l'interface (entre le <em>learning</em> et le <em>forwarding state</em>)<em><br />
</em>D'autres options existent, mail elles dépassent largement le cadre de cet article<em>.</em></p>
<p>→ Redémarrer le réseau pour prendre en compte le pont via :</p>
<pre class="bash"><span style="color: #c20cb9; font-weight: bold;">sudo</span> /etc/init.d/networking restart</pre>
<p>La chose intéressante, c'est que, comme tout a été configuré via DHCP, on peut ajouter autant de ponts que nécessaire, et laisser le serveur dhcp (celui du routeur par exemple) attribuer les adresses IP en fonction des règles qu'on y aura défini (selon l'adresse MAC par exemple).</p>
<p>→ Faire en sorte que l'utilisateur qui lancera les VM possède les droits suffisants sur le TUNnel :</p>
<pre class="bash"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>votre utilisateur<span style="color: #7a0874; font-weight: bold;">&#93;</span> /dev/net/tu</pre>
<p>→ Il faut désormais créer l'interface dans VirtualBox (on le fait ici de manière statique) via la commande suivante :</p>
<pre class="bash">VBoxAddIF vbox0 <span style="color: #7a0874; font-weight: bold;">&#91;</span>votre utilisateur<span style="color: #7a0874; font-weight: bold;">&#93;</span> br0</pre>
<p>L'interface est stockée dans le fichier /etc/vbox/interfaces, et se ra pérenne entre un lancement de VM et un autre.<br />
→ Il faut maintenant paramétrer correctement notre VM en spécifiant :
</p>
<p style="padding-left: 30px;">→ attaché à "Adaptateur réseau hôte"</p>
<p style="padding-left: 30px;">→ Nom de l'interface "vbox0"</p>
<p>Au démarrage de la VM, le server DHCP attribuera une adresse IP à cette interface et vous pourrez accéder à votre VM, non seulement via la machine hôte, mais depuis tout le réseau, et, éventuellement, router certains ports vers la VM.<br />
Notez qu'on aurait très bien pu fixer une adresse IP dans le fichier /etc/network/interfaces</p>
<h4 class='related-posts-header'>Articles apparentés</h4><ul class="related-posts-list"><li class="related-post"><a href="http://www.modulaweb.fr/blog/2010/11/optimiser-apache/">Optimiser Apache – Partie 1</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/08/creer-un-fichier-pid-pour-funambol-sous-gnu-linux/">Créer un fichier PID pour Funambol sous GNU/Linux</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/05/quelques-scripts-pour-profiter-de-son-scanner-sous-gnulinux/">Quelques scripts pour profiter de son scanner sous GNU/Linux</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/05/configurer-vsftpd-pour-mettre-a-jour-automatiquement-wordpress/">Configurer vsftpd pour mettre à jour automatiquement Wordpress</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/installation-de-funambol-couple-a-zimbra-sur-un-serveur-gnu-linux/">Installation de Funambol couplé à Zimbra sur un serveur GNU/Linux</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/lancer-ubuntu-dans-virtualbox/">Lancer Ubuntu dans VirtualBox</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/pour-des-sessions-ssh-qui-durent/">Pour des sessions SSH qui durent</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/cloner-un-disque-virtualbox/">Cloner un disque VirtualBox</a> </li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.modulaweb.fr/blog/2009/02/inclure-ses-machines-virtuelles-a-son-reseau-avec-virtualbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation de Funambol couplé à Zimbra sur un serveur GNU/Linux</title>
		<link>http://www.modulaweb.fr/blog/2009/02/installation-de-funambol-couple-a-zimbra-sur-un-serveur-gnu-linux/</link>
		<comments>http://www.modulaweb.fr/blog/2009/02/installation-de-funambol-couple-a-zimbra-sur-un-serveur-gnu-linux/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 06:06:04 +0000</pubDate>
		<dc:creator>Jean-François VIAL</dc:creator>
				<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[funambol]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[zimbra]]></category>

		<guid isPermaLink="false">http://blog.modulaweb.fr/?p=22</guid>
		<description><![CDATA[La version open-source de Zimbra ne comprend pas de modules de synchronisation, il est cependant possible de synchroniser son PDA ou son smartphone avec cette version de Zimbra en utilisant un autre logiciel libre : Funambol. L'installation du serveur Funambol n'est pas compliquée en elle même, mais les paramétrages nécessaires à son couplage à Zimbra [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-340" src="http://www.modulaweb.fr/blog/wp-content/uploads/2009/02/funambol1.png" alt="" width="128" height="128" /></p>
<p>La version open-source de <a onclick="pageTracker._trackPageview('/outgoing/fr.wikipedia.org/wiki/Zimbra?referer=http://www.modulaweb.fr/blog/2009/02/installation-de-funambol-couple-a-zimbra-sur-un-serveur-gnu-linux/');" href="http://fr.wikipedia.org/wiki/Zimbra">Zimbra</a> ne comprend pas de modules de synchronisation, il est cependant possible de synchroniser son PDA ou son smartphone avec cette version de Zimbra en utilisant un autre logiciel libre : <a onclick="pageTracker._trackPageview('/outgoing/www.forge.funambol.org/?referer=http://www.modulaweb.fr/blog/2009/02/installation-de-funambol-couple-a-zimbra-sur-un-serveur-gnu-linux/');" href="https://www.forge.funambol.org/">Funambol</a>.</p>
<p>L'installation du serveur Funambol n'est pas compliquée en elle même, mais les paramétrages nécessaires à son couplage à Zimbra ne sont pas très évidents.</p>
<p>Ce tutoriel s'adresse à celles et ceux qui viennent d'installer un serveur Zimbra fonctionnel et qui souhaitent lui ajouter des fonctionnalités de synchronisation de contacts et d'agendas.</p>
<p>Le serveur Funambol, est une suite logicielle (comme Zimbra) écrite en Java permettant la synchronisation de données (agendas, carnet d'adresses, tâches...) comprenant :</p>
<p style="padding-left: 30px;">→ un serveur de synchronisation de données (ou  ds-server pour Data Syncronization Server)</p>
<p style="padding-left: 30px;">→ un serveur de gestion des périphériques (ou dm-server pour Device Manager Server)</p>
<p style="padding-left: 30px;">→ un serveur de connecteurs permettant à Funambol de dialoguer avec d'autres serveurs, comme Zimbra</p>
<p>Concrètement, il se place entre un client compatible avec Funambol (un client SyncML traditionnellement ou un client Funambol) et un serveur (ici Zimbra) et dialogue avec ce dernier grâce à un "connecteur" qui lui est spécifique.</p>
<p>Il existe des clients Funambol rendant la synchronisation aisée avec le serveur pour (presque ?) tous les terminaux mobiles (smartphones, pda, blackberry, iPhone...), clients logiciels (Thunderbird, Outlook) et serveurs (OpenExchange, Exchange). Il faut noter que les smartphone sous SymbianOS sont nativement compatibles (car utilisant SyncML).</p>
<p>Il conviendra donc d'installer le serveur Funambol dans un premier temps, puis d'y installer le connecteur lui permettant de dialoguer avec Zimbra, puis de paramétrer Funambol pour accepter le certificat auto-signé du Zimbra (si le certificat émane d'une "Autorité de Certification", ça ne sera pas nécessaire), enfin de configurer le serveur Funambol pour récupérer les bonnes données et les servir correctement.</p>
<p>Bien évidement la connexion finale entre le client et Funambol devra se faire via le protocole HTTPS, et utilisera un login et un mot de passe : la sécurité passe avant tout.</p>
<p style="padding-left: 30px;"><strong>Note :</strong> On utilise ici les versions open-sources de Zimbra et Funambol. On considèrera, que les seux suites sont installées sur le même serveur (ce qui est le cas le plus pratique et le plus logique).</p>
<p style="padding-left: 30px;"><strong>Note :</strong> à l'heure où est écrit ce tutoriel, Zimbra en est à la version 5, Funambol à la version 7 et le connecteur Zimbra pour Funabol à la version 5.1. Nous nous baserons sur ces versions, bien que des conseils puissent être donnés pour d'autres versions de ces serveurs.</p>
<h2>1. Téléchargement du binaire d'installation</h2>
<p>Se rendre sur la page suivante, <a href="https://www.forge.funambol.org/download/">https://www.forge.funambol.org/download/</a> et vérifier la version actuelle de Funambol, si elle diffère de 8.0 GA, veuillez modifier l'URL de téléchargement en fonction (choisir "Linux Server", cliquer sur "no thanks..." puis faire un [click-droit] et choisir "Copier l'adresse du lien") pour récupérer cette URL</p>
<p>Dans la console, taper :</p>
<pre class="bash">cd /usr/src
sudo wget http://download.forge.objectweb.org/sync4j/funambol-8.0.0.bin -O ./funambol.bin

sudo chmod a+x funambol.bin
sudo ./funambol.bin</pre>
<p>Placer les fichiers téléchargés et les sources dans /usr/src est toujours une bonne idée, car ça permet de garder les sources fraîches en cas de besoins.</p>
<h2>2. Installation du serveur Funambol</h2>
<p>Le processus d'installation commence par la lecture de la licence :</p>
<p>→ presser [espace] plusieurs fois pour faire défiler, puis à la question "Do you agree to the above license terms? [yes or no]" répondre "yes[entrée]",</p>
<p>→ presser [entrée] une nouvelle fois pour répondre à la question "Directory to extract Funambol [/opt] ?"</p>
<p>Le dépaquetage des fichiers du serveur funambol débute et est assez longue (dépend de la puissance du serveur, peut durer plus de 5 minutes par étape) ;  vont apparaître, l'un après l'autre les messages "Unpacking..." puis "Checksumming..." puis "Extracting... to /opt/Funambol"</p>
<p>→ Le programme d'installation demande si on souhaite démarrer le serveur ("Do you want to start the server? [yes or no]") répondre par l'affirmative ("yes[entrée]") : l'installation du serveur proprement dit est terminée.</p>
<p>Il faut continuer en installant le connecteur Zimbra qui permettra à Funambol de dialoguer directement avec Zimbra.</p>
<p><strong>Note :</strong> dans la suite de ce document, sera noté [funambol] le dossier d'installation du serveur Funambol, traditionnellement : /opt/Funambol</p>
<h2>3. Téléchargement du connecteur Zimbra</h2>
<p>Télécharger la dernière version du connecteur Zimbra pour Funambol à cette adresse :</p>
<p><a href="http://sourceforge.net/projects/zimbrafunambol/">http://sourceforge.net/projects/zimbrafunambol/</a></p>
<p>Pour récupérer l'adresse du fichier :</p>
<p>→ cliquer sur "View all files"</p>
<p>→cliquez sur le lien pointant vers le fichier .s4j</p>
<p>→ Annuler le téléchargement, et repérer le lien "direct link" : y vaire un [click-droit] et choisir "Copier l'adresse du lien"</p>
<p>Dans la console taper : (normalement on est toujours dans /usr/src)</p>
<pre class="bash"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #7a0874; font-weight: bold;">[</span>adresse <span style="color: #c20cb9; font-weight: bold;">du</span> fichier .s4j<span style="color: #7a0874; font-weight: bold;">] </span>-O ZimbraConnector.s4j</pre>
<h2>4. Installation du connecteur Zimbra</h2>
<p>→ copier le connecteur dans le dossier des modules du serveur Funambol :</p>
<pre class="bash"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">cp</span> ./ZimbraConnector.s4j <span style="color: #7a0874; font-weight: bold;">[</span>funambol<span style="color: #7a0874; font-weight: bold;">]</span>/ds-server/modules/</pre>
<p>→ au delà de la version 0.4.65 de ce connecteur (à l'heure ou ce tutoriel est écrit, la version du connecteur est 0.5.02), il faudra créer un fichier de configuration.</p>
<p>Pour la version <strong>6.5</strong> de Funambol, le fichier de configuration se trouvera dans <strong>[funambol]/ds-server/config/connector</strong> (créer le dossier s'il n'existe pas).</p>
<p>Pour la version <strong>7</strong> et <strong>8</strong> de Funambol, le fichier de configuration se trouvera dans <strong>[funambol]/config/connector</strong> (créer le dossier s'il n'existe pas).</p>
<p>Le fichier de configuration aura pour nom "ZimbraConnector.xml" et devra avoir le contenu suivant :</p>
<pre class="xml"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;?xml version</span>=<span style="color: #ff0000;">"1.0"</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">"UTF-8"</span><span style="font-weight: bold; color: black;">?&gt;
</span></span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;java</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">"1.5.0"</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"java.beans.XMLDecoder"</span><span style="font-weight: bold; color: black;">&gt;</span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;object</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"ru.korusconsulting.connector.config.ConnectorConfig"</span><span style="font-weight: bold; color: black;">&gt;</span></span>
  <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;void</span> <span style="color: #000066;">property</span>=<span style="color: #ff0000;">"dataSource"</span><span style="font-weight: bold; color: black;">&gt;</span></span>
    <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;string<span style="font-weight: bold; color: black;">&gt;</span></span></span>jdbc/fnblds<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/string<span style="font-weight: bold; color: black;">&gt;</span></span></span> <span style="color: #009900;"><span style="color: #808080; font-style: italic;">&lt;!--La source de données pour Funambol--&gt;</span></span>
  <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/void<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/object<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/java<span style="font-weight: bold; color: black;">&gt;</span></span></span></pre>
<p>→ Ajout du connecteur à la liste des connecteurs utilisables par le serveur Funambol :</p>
<p>Il faut éditer le fichier "install.properties" se trouvant dans [funambol]/ds-server (avec nano par exemple) et rechercher la ligne commençant par "modules-to-install" (traditionnellement la dernière) et ajouter le connecteur Zimbra (ZimbraConnector) à la liste (sans oublier la virgule), cela devrait ressembler à :</p>
<pre class="bash"><span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Modules definitions</span>
<span style="color: #808080; font-style: italic;">#</span>
modules-to-install=content-provider-8.0.0,email-connector-8.0.0,foundation-8.0.0,phones-support-8.0.0,webdemo-8.0.0,ZimbraConnector</pre>
<p>→ Activation du connecteur : (Attention, serveur Funambol version 7 et supérieures seulement, pour le 6.5, vérifier la présence des fichiers, s'ils ne sont pas à l'endroit décrit, vérifier leur présence dans [funambol]/ds-server, et la présence éventuelle d'une extension ".sh" ; le install-modules.cmd est fait pour Windows...)</p>
<p>Taper simplement les commandes suivantes :</p>
<pre class="bash"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #7a0874; font-weight: bold;">[</span>funambol<span style="color: #7a0874; font-weight: bold;">]</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> bin/install-modules</pre>
<p>Après quelques secondes, les messages suivants apparaîtrons (peut varier selon les versions) :</p>
<pre class="bash"><span style="color: #7a0874; font-weight: bold;">[</span><span style="color: #7a0874; font-weight: bold;">echo</span><span style="color: #7a0874; font-weight: bold;">]</span> Funambol Data Synchronization Server will be installed on the Tomcat <span style="color: #000000;">6.0</span>.x application server

<span style="color: #7a0874; font-weight: bold;">[</span><span style="color: #7a0874; font-weight: bold;">echo</span><span style="color: #7a0874; font-weight: bold;">]</span> Undeploying funambol...
<span style="color: #7a0874; font-weight: bold;">[</span><span style="color: #7a0874; font-weight: bold;">echo</span><span style="color: #7a0874; font-weight: bold;">]</span> Pre installation for modules content-provider-8.0.0,email-connector-8.0.0,foundation-8.0.0,phones-support-8.0.0,webdemo-8.0.0,ZimbraConnector
<span style="color: #7a0874; font-weight: bold;">[</span><span style="color: #7a0874; font-weight: bold;">echo</span><span style="color: #7a0874; font-weight: bold;">]</span> content-provider<span style="color: #000000;">-8.0</span><span style="color: #000000;">.0</span> pre-installation...
<span style="color: #7a0874; font-weight: bold;">[</span><span style="color: #7a0874; font-weight: bold;">echo</span><span style="color: #7a0874; font-weight: bold;">]</span> content-provider<span style="color: #000000;">-8.0</span><span style="color: #000000;">.0</span> pre-installation successfully completed</pre>
<p>[...]</p>
<pre class="bash"><span style="color: #7a0874; font-weight: bold;">[</span><span style="color: #7a0874; font-weight: bold;">echo</span><span style="color: #7a0874; font-weight: bold;">]</span> ZimbraConnector pre-installation...
<span style="color: #7a0874; font-weight: bold;">[</span><span style="color: #7a0874; font-weight: bold;">echo</span><span style="color: #7a0874; font-weight: bold;">]</span> ZimbraConnector pre-installation successfully completed

<span style="color: #7a0874; font-weight: bold;">[</span><span style="color: #7a0874; font-weight: bold;">echo</span><span style="color: #7a0874; font-weight: bold;">]</span> Copying configuration files</pre>
<p>S'en suit une série de question vous demandant, pour chaque connecteur, si vous souhaitez re-créer la base de données, répondre "y" écrasera l'éventuelle configuration existante : sur un serveur fraîchement installé, répondre "y" permet de s'assurer que tout est en ordre, sur un serveur déjà en production, il convient de répondre "n" à tous les connecteurs, sauf le dernier : celui pour Zimbra, pour lequel s'affichera le message suivant, en toute fin de processus :</p>
<pre class="bash"><span style="color: #7a0874; font-weight: bold;">[</span><span style="color: #7a0874; font-weight: bold;">echo</span><span style="color: #7a0874; font-weight: bold;">]</span> ZimbraConnector installation...
<span style="color: #7a0874; font-weight: bold;">[</span><span style="color: #7a0874; font-weight: bold;">echo</span><span style="color: #7a0874; font-weight: bold;">]</span> Database installation for module ZimbraConnector on hypersonic <span style="color: #7a0874; font-weight: bold;">(</span>/opt/Funambol/ds-server<span style="color: #7a0874; font-weight: bold;">)</span>

<span style="color: #7a0874; font-weight: bold;">[</span>iterate<span style="color: #7a0874; font-weight: bold;">]</span> The Funambol Data Synchronization Server installation program can now create
<span style="color: #7a0874; font-weight: bold;">[</span>iterate<span style="color: #7a0874; font-weight: bold;">]</span> the database required by the module ZimbraConnector (if any is needed).

<span style="color: #7a0874; font-weight: bold;">[</span>iterate<span style="color: #7a0874; font-weight: bold;">]</span> You can skip this step if you have already a valid database created
<span style="color: #7a0874; font-weight: bold;">[</span>iterate<span style="color: #7a0874; font-weight: bold;">]</span> or the module does not require a database.

<span style="color: #7a0874; font-weight: bold;">[</span>iterate<span style="color: #7a0874; font-weight: bold;">]</span> If you choose 'y' your existing data will be deleted.

<span style="color: #7a0874; font-weight: bold;">[</span>iterate<span style="color: #7a0874; font-weight: bold;">]</span> Do you want to recreate the database?
<span style="color: #7a0874; font-weight: bold;">[</span>iterate<span style="color: #7a0874; font-weight: bold;">]</span>       (y,n)</pre>
<p>Répondre "y", le processus se termine ainsi :</p>
<pre class="bash"><span style="color: #7a0874; font-weight: bold;">[</span><span style="color: #7a0874; font-weight: bold;">echo</span><span style="color: #7a0874; font-weight: bold;">]</span> ZimbraConnector installation successfully completed

<span style="color: #7a0874; font-weight: bold;">[</span>war<span style="color: #7a0874; font-weight: bold;">]</span> Warning: selected war files include a WEB-INF/web.xml which will be ignored <span style="color: #7a0874; font-weight: bold;">(</span>please use webxml attribute to war task<span style="color: #7a0874; font-weight: bold;">)</span>
<span style="color: #7a0874; font-weight: bold;">[</span><span style="color: #7a0874; font-weight: bold;">echo</span><span style="color: #7a0874; font-weight: bold;">]</span> Remove output dir

BUILD SUCCESSFUL
Total time: 4 minutes 48 seconds</pre>
<p>Ne pas tenir compte du "Warning"... le serveur Funambol est maintenant installé, mais pas encore configuré... et oui, le processus prend moins de 5 minutes</p>
<p>Re-lancer le serveur Funambol via</p>
<pre class="bash">sudo [funambol]/bin/funambol start</pre>
<h2>5. Configuration du serveur Funambol</h2>
<p>Pour configurer le serveur Funambol, il existe un outil dédié : l'Administration Tool (Outils d'Administration graphique)</p>
<h3>Sous GNU/Linux</h3>
<p>→ Se rendre sur : <a href="https://www.forge.funambol.org/servlets/OCNDirector?id=V8FUNADMLIN">https://www.forge.funambol.org/servlets/OCNDirector?id=V8FUNADMLIN</a>, cliquer sur «No thanks - please take me straight to the downloads!», ça se télécharge tout seul</p>
<p>→ Décompresser l'archive où vous voulez</p>
<p>→ Si un environement Java est présent, lancer directement [répertoire où a été décompressé l'archive]/admin/bin/funamboladmin, si non, installer un environnement Java avant...</p>
<h3>Sous Windows™</h3>
<p>Testé avec succès sous XP SP2+. (merci de vous signaler si vous utilisez Vista ou Seven)</p>
<p>Même chose qu'au dessus mais avec l'adresse suivante : <a href="https://www.forge.funambol.org/servlets/OCNDirector?id=V8FUNADMWIN">https://www.forge.funambol.org/servlets/OCNDirector?id=V8FUNADMWIN</a>,</p>
<p>→ Lancer l'outil d'administration en cliquant sur ton icône dans le menu Démarrer » Programmes</p>
<h3>Sous Mac™ OS X 10.5 (Leopard)</h3>
<p>Non testé : merci de vous signaler si vous utilisez cette version</p>
<p>Même chose qu'au dessus mais avec l'adresse suivante : <a href="https://www.forge.funambol.org/servlets/OCNDirector?id=V8FUNADMOSX">https://www.forge.funambol.org/servlets/OCNDirector?id=V8FUNADMOSX</a>,</p>
<p>→ Lancer l'outil d'administration via le "Finder"</p>
<h3>Tous OS : configuration</h3>
<p>→ double-cliquer sur "Funambol Administration Tool" dans la zone de gauche et entrer les informations :</p>
<p>par défaut, le domaine de votre propre machine est spécifié dans le champ Hostname/IP. Si vous utilsez un serveur dédié (vous devriez), placer ici son nom d'hôte ou son adresse IP puis connectez-vous... ça prend quelques secondes (Le login et mot de passe sont pré-replis et bons)</p>
<p>Si le serveur renvoit une erreur à ce moment là, veuillez vérifier que le serveur Funambol est lancé et actif sur le serveur en vérifiant ce que retourne la commande :</p>
<pre class="bash">sudo ps aux | grep funambol</pre>
<p>qui doit retourner une liste de processus (au moins 6) indiquant que le serveur Funambol est lancé ; si le serveur n'est pas lancé, effectuez un</p>
<pre class="bash">sudo [funambol]/bin/funambol start</pre>
<p>Vérifiez aussi le nom d'hôte entré ou l'adresse IP (faites un ping sur le nom ou l'adresse depuis la machine qui lance l'Administration Tool)</p>
<p>→ double-cliquer sur le nom d'hôte/ip qui viens de s'afficher : vous verrez un arbre avec comme entrées :</p>
<p style="padding-left: 30px;">→ Server settings</p>
<p style="padding-left: 30px;">→ Users</p>
<p style="padding-left: 30px;">→ Devices</p>
<p style="padding-left: 30px;">→ Principals</p>
<p style="padding-left: 30px;">→ Modules</p>
<p>→ Double-cliquer sur "Modules", puis "foundation", puis "FunambolFoundationConnector" puis,</p>
<p>→ dans "Pim Calendar SyncSource", faire un click-droit et choisissez "delete" sur :</p>
<p style="padding-left: 30px;">→ "cal", "event", "scal", "stask" et "task"</p>
<p>→ dans "Pim Contact SyncSource", faire un click-droit et choisissez "delete" sur :</p>
<p style="padding-left: 30px;">→ "card" et "scard"</p>
<p><img class="aligncenter size-full wp-image-189" src="http://www.modulaweb.fr/blog/wp-content/uploads/2009/02/fad1.png" alt="" width="297" height="394" /></p>
<p>→ Il faut maintenant ajouter les sources de données dans le connecteur Zimbra :</p>
<p><img class="aligncenter size-full wp-image-190" src="http://www.modulaweb.fr/blog/wp-content/uploads/2009/02/fad2.png" alt="" width="333" height="440" /></p>
<p>double-cliquer sur "zimbra" puis "FunambolZimbraConnector" puis faire un clic droit sur "CalendarSyncSource" et choisir "Add sync source" : un formulaire apparaît dans la zone de droite vous permettant d'ajouter une source d'informations pour la synchronisation.<br />
Ce formulaire est composé de 3 champs (“source URI”, “Name” et ”Zimbra URL”) une case à cocher (“is Task”) et un bouton "Add" (ou “Save” lors de l'édition).<br />
Il faut créer 5 sources de destination (“cal”, “scal”, “task”, “stask” et “event”).</p>
<p>À ce stade, il est important de connaître le comportement du serveur Zimbra : soit vous vous y connectez en http, soit en https, soit les 2 (http ou https indifféremment) ou redirection (lorsque vous vous y connectez en http, il vous reconnecte en https). Cela est vraiment important si vous utilisez un certificat auto-signé (ce qui est le cas la plus part du temps), et ça vous permettra de savoir ce qu'il convient de renseigner dans le champ "Zimbra URL" du formulaire.</p>
<p>Si votre serveur Zimbra est configuré pour accepter les connexions en http non sécurisé et que le serveur Funambol est sur la même machine que le serveur Zimbra, il est plus simple de spécifier le protocole http. Par défaut "Zimbra URL" est renseigné avec "https://[hôte]/service/soap/", remplacez [hôte] par le nom d'hôte de la machine ou son adresse ip. Ce nom devra correspondre à l'éventuel certificat du serveur Zimbra pour éviter de futurs tracas.</p>
<p>Laisser "is Task" décoché (sauf pour "stask" et "task", et cliquer sur "Add" pour ajouter la source, et recommencer l'opératoin pour event, scal, stask et task. Notez que ça prend quelques secondes pour que la source soit ajoutée et que, si vous avez fait une erreur, vous pourrez la corriger immédiatement puis cliquer sur "Save".</p>
<p>Saisissez la même chose dans les champs “Source URI” et “Name”, renseignez le champ “Zimbra URL” cochez éventuellement la case “is Task?” et cliquez sur ”Add”</p>
<p>→ Faire de même pour "ContactSyncsource" : double-cliquer sur "zimbra" puis "FunambolZimbraConnector" puis faire un clic droit sur "ContactSyncSource" et choisir "Add sync source" et entrer les données suivantes pour Source URI et Name :</p>
<p style="padding-left: 30px;">→ card, scard</p>
<p>→ Terminer en faisant de même pour "GALContactSyncSource" : double-cliquer sur "zimbra" puis "FunambolZimbraConnector" puis faire un clic droit sur "GALContactSyncSource" et choisir "Add sync source" et entrer Source URI et Name :"zimbraGalContacts" (avec un z minuscule !)</p>
<p>Le serveur est maintenant configuré, intéressons-nous maintenant aux utilisateurs pour le sécuriser :</p>
<p style="padding-left: 30px;">→ Double cliquer sur "Users" puis, dans le formulaire de droite, sur "Search" : pour une installation vierge, deux utilisateurs apparaissent : admin et guest. Nous commençons pas supprimer le compte invité :</p>
<p style="padding-left: 60px;">→ cliquer sur la ligne de "guest" puis cliquer sur "Delete" tout à droite.</p>
<p style="padding-left: 60px;">→ nous allons changer le mot de passe et l'adresse email du compte administrateur :</p>
<p style="padding-left: 60px;">→ cliquer sur la ligne du compte "admin"</p>
<p style="padding-left: 60px;">→ cliquer sur "Edit" à droite, remplissez les champs (ne pas changer le role !!!)</p>
<p style="padding-left: 60px;">→ cliquer sur "Save" et attendre que "User correctly updated" soit inscrit dans la zone "Output - Messages"</p>
<p>Si vous souhaitez effectuer des vérifications, il vous faudra vous reconnecter avec votre nouveau mot de passe.</p>
<p>Le serveur est maintenant opérationel et sécurisé... il reste encore la question du certificat auto-signé de Zimbra...</p>
<h2>6. Utilisation du serveur Funambol avec un certificat Zimbra auto-signé</h2>
<p>Si vous n'utilisez pas un certificat émanant d'une "Autorité de Certification" avec votre Zimbra, le serveur Funambol refusera de dialoguer avec ce dernier... et ne synchronisera jamais...</p>
<p>Pour permettre à Funambol de dialoguer avec le serveur Zimbra utilisant un certificat auto-signé, il "suffit" de remplacer la liste de certificats du serveur Funambol par cellle du serveur Zimbra : (remplacer [zimbra] par le chemin d'installation du serveur zimbra, soit, traditionnellemnt /opt/zimbra)</p>
<pre class="bash">sudo cp [zimbra]/java/jre/lib/security/cacerts [funambol]/ds-server/lib/security

sudo [funambol]/bin/funambol stop ; sudo [funambol]/bin/funambol start</pre>
<p>Ainsi, le certificat auto-signé utilisé par le Zimbra sera accepté par le serveur Funambol et la synchronisation pourra se faire en mode sécurisé.</p>
<h2>7. Activation du mode HTTPS pour les connexions au serveur Funambol</h2>
<p>Envoyer ses logins et mot de passe, en clair, sur un réseau local, passe encore, mais pas sur l'internet. Par défaut, seule la connexion en mode non sécurisé est proposé et le serveur refusera toute connexion tant que le mode https ne sera pas activé.</p>
<p>Pour activer ce mode, Funambol a besoin d'un certificat (faisons-le nous meme), saisir (et remplacer [xxx] par la version de java utilisée... utilisez [Tab] pendant la frappe) :</p>
<pre class="bash"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">rm</span> /root/.keystore ; <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>funambol<span style="color: #7a0874; font-weight: bold;">&#93;</span>/tools/jre-<span style="color: #7a0874; font-weight: bold;">&#91;</span>xxx<span style="color: #7a0874; font-weight: bold;">&#93;</span>/jre/bin/keytool -genkey -<span style="color: #7a0874; font-weight: bold;">alias</span> tomcat -keyalg RSA</pre>
<p>et répondez aux questions :</p>
<p>→ Tapez le mot de passe du Keystore : saisissez «changeit» (sans les «»)<br />
→ question 1 : Quels sont vos prénom et nom ? : saisissez ici le nom d'hôte de votre machine (ça correspondra au champ CN du certificat)<br />
→ question 2 à 6 : Quel est le nom de votre unité organisationnelle ? Quelle est le nom de votre organisation ? Quel est le nom de votre ville de résidence ? Quel est le nom de votre état ou province ? Quel est le code de pays à deux lettres pour cette unité ? : répondez ce que vous voulez<br />
→ question 7 : Est-ce CN=[réponse à la question1], OU=[réponse à laquestion2], O=[réponse à la question3], L=[réponse à la question4], ST=[réponse à la question5], C=[réponse à la question6] ? : répondez "oui" en toutes lettres<br />
→ question8 : Spécifiez le mot de passe de la clé pour &lt;tomcat&gt; : pressez la touche [Entrée]</p>
<p>Avant de modifier le fichier de configuration, il convient d'arrêter le serveur via</p>
<pre class="bash">sudo [funambol]/bin/funambol stop</pre>
<p>En suite, décommentez le bloc activant l'https et le port 8443 dans le fichier [funambol]/tools/tomcat/conf/server.xml, c'est à dire, remplacer (vers la ligne 83) :</p>
<pre class="xml">    &lt;!-- Define a SSL HTTP/1.1 Connector on port 8443
         This connector uses the JSSE configuration, when using APR, the
         connector should be using the OpenSSL style configuration
         described in the APR documentation --&gt;
    &lt;!--
    &lt;Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" /&gt;
    --&gt;</pre>
<p>par :</p>
<pre class="xml">    &lt;!-- Define a SSL HTTP/1.1 Connector on port 8443
         This connector uses the JSSE configuration, when using APR, the
         connector should be using the OpenSSL style configuration
         described in the APR documentation --&gt;
    &lt;!-- uncommented by [votre nom ici] at [date-heure] --&gt;
    &lt;connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" /&gt;
    &lt;!-- /uncommented by [votre nom ici] at [date-heure] --&gt;</pre>
<p>N'oubliez pas de démarrer le serveur Funambol par la suite avec</p>
<pre class="bash">sudo [funambol]/bin/funambol start</pre>
<p>Désormais, vous pourrez vous synchroniser avec Funambol en mode SSL via l'adresse https://[nom d'hôte]:8443/funambol/ds</p>
<h2>8. Synchroniser son client</h2>
<p>Ici, quel que soit votre client (mobile ou non) il vous faudra utiliser vos informations de connexion à Zimbra, soit votre login complet (utilisateur@domaine) et votre mot de passe.</p>
<p>L'adresse qui vous servira pour vous connecter à votre serveur funambol pour synchroniser est : http://[hôte ou ip]:8080/funambol/ds ou https://[hôte ou ip]:8443/funambol/ds (si vous utilisez une connexion chiffrée).</p>
<p>Si votre client demande qul protocole utiliser, choisissez «HTTP».</p>
<p>Concernant les données, en général, tout est configuré de base, mais dans le doute :</p>
<p style="padding-left: 30px;">→ cal, event, task et card, servent respectivement de source au calendrier, évènnements, tâches et contacts.</p>
<p style="padding-left: 30px;">→ scal, stask, et scard servent pour les "slow sync", qui sont des synchronisation complètes (et forcément lentes) et pas simplement la synchronisation des dernières actions depuis la dernière synchro.</p>
<p style="padding-left: 30px;">→ zimbraGalContacts permet de synchroniser (dans le sens serveur → client seulement) les contacts de la GAL</p>
<p>Pour toute autre question concernant le paramètrage de votre client, veuillez vous reporter à la documentation de ce dernier, puisque ça n'est pas l'objet de ce tuto.</p>
<h2>9. Tests et logs</h2>
<p>Dans une console, saisissez la commande suivante :</p>
<pre class="bash"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">tail</span> -f <span style="color: #7a0874; font-weight: bold;">&#91;</span>funambol<span style="color: #7a0874; font-weight: bold;">&#93;</span>/logs/ds-server/ds-server.log</pre>
<p>qui vous permettra de lire les logs en temps réel...</p>
<p>Il est possible de saisir les adresses servant à la synchronisation des clients dans un navigateur web pour vérifier l'état du serveur, le serveur renvoie alors quelque chose du goût de :</p>
<p><img class="size-full wp-image-471 aligncenter framed" alt="Le serveur affiche une sorte de page d'accueil indiquant la version (ici 8.0.0) et propose deux liens, l'un vers une interface web de démonstration et l'autre vers les termes et conditions d'utilisation)" src="http://www.modulaweb.fr/blog/wp-content/uploads/2009/02/funambol2.png" alt="Le serveur affiche une sorte de page d'accueil indiquant la version (ici 8.0.0) et propose deux liens, l'un vers une interface web de démonstration et l'autre vers les termes et conditions d'utilisation)" width="326" height="329" /><br />
Lors d'une synchronisation, vous verrez apparaître, dans les logs, le numéro IMEI du smartphone client ou un identifiant de session, le nom d'utilisateur qu'il utilise, l'adresse qu'il a utilisé pour accéder au serveur Funambol, quel est le script utilisé concernant son terminal, ce qui se passe... en cas de souci : tout s'arrêtera brutalement avec, bien souvent, un (très) long message d'erreur dont Java a le secret.</p>
<p>Vous possédez désormais une suite collaborative performante et pouvant dialoguer avec (presque) n'importe quoi et depuis n'importe où.</p>
<h2>10. Lancer - arrêter le serveur funambol</h2>
<p>Simplissime :</p>
<pre class="bash"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>funambol<span style="color: #7a0874; font-weight: bold;">&#93;</span>/bin/funambol <span style="color: #7a0874; font-weight: bold;">&#91;</span>start|stop<span style="color: #7a0874; font-weight: bold;">&#93;</span></pre>
<h2>Sources</h2>
<p>Ce tutoriel a été librement inspiré du tutoriel présent sur le wiki du connecteur zimbra-funambol disponible, en anglais, ici : <a href="http://zimbrafunambol.wiki.sourceforge.net/installation-guide">http://zimbrafunambol.wiki.sourceforge.net/installation-guide</a>.</p>
<p>La documentation de Tomcat 6 <a href="http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html">http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html</a></p>
<h2>Dernières modifications</h2>
<p>Dernière modification majeure : Lundi 21 septembre 2009 : modification suite à la publication de la version 8.0.0 du serveur Funambol et de l'outil d'administration.</p>
<p>Derniers ajouts : ajout de la partie concernant l'outil d'administration pour Mac OS X 10.5 (Leopard), la procédure reste sensiblement la même, le tuto a été raffraîchi pour être plus facilement mis à jour par la suite.</p>
<h4 class='related-posts-header'>Articles apparentés</h4><ul class="related-posts-list"><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/08/creer-un-fichier-pid-pour-funambol-sous-gnu-linux/">Créer un fichier PID pour Funambol sous GNU/Linux</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2010/11/optimiser-apache/">Optimiser Apache – Partie 1</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/05/envoyer-les-spams-aux-oubliettes-avec-zimbra/">Envoyer les spams aux oubliettes avec Zimbra</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/05/quelques-scripts-pour-profiter-de-son-scanner-sous-gnulinux/">Quelques scripts pour profiter de son scanner sous GNU/Linux</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/05/configurer-vsftpd-pour-mettre-a-jour-automatiquement-wordpress/">Configurer vsftpd pour mettre à jour automatiquement Wordpress</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/inclure-ses-machines-virtuelles-a-son-reseau-avec-virtualbox/">Inclure ses machines virtuelles à son réseau avec VirtualBox</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/pour-des-sessions-ssh-qui-durent/">Pour des sessions SSH qui durent</a> </li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.modulaweb.fr/blog/2009/02/installation-de-funambol-couple-a-zimbra-sur-un-serveur-gnu-linux/feed/</wfw:commentRss>
		<slash:comments>136</slash:comments>
		</item>
		<item>
		<title>Pour des sessions SSH qui durent</title>
		<link>http://www.modulaweb.fr/blog/2009/02/pour-des-sessions-ssh-qui-durent/</link>
		<comments>http://www.modulaweb.fr/blog/2009/02/pour-des-sessions-ssh-qui-durent/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 03:43:38 +0000</pubDate>
		<dc:creator>Jean-François VIAL</dc:creator>
				<category><![CDATA[Choses utiles]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://blog.modulaweb.fr/?p=9</guid>
		<description><![CDATA[Qui n'a jamais été irrité de voir une session SSH "bloquée" car laissée sans activité ? Qui n'a jamais eu son système bloqué pendant quelques instants car un montage de système de fichiers via SSH avait été déconnecté faute, là aussi, d'activité ? À ce fléau qu'est la déconnexion intempestive, une solution existe, et elle [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-123" href="http://www.modulaweb.fr/blog/2009/02/pour-des-sessions-ssh-qui-durent/utilities-terminal/"><img class="alignleft size-full wp-image-123" title="utilities-terminal" src="http://www.modulaweb.fr/blog/wp-content/uploads/2009/02/utilities-terminal.png" alt="utilities-terminal" width="128" height="128" /></a>Qui n'a jamais été irrité de voir une session SSH "bloquée" car laissée sans activité ?<br />
Qui n'a jamais eu son système bloqué pendant quelques instants car un montage de système de fichiers via SSH avait été déconnecté faute, là aussi, d'activité ?</p>
<p>À ce fléau qu'est la déconnexion intempestive, une solution existe, et elle est très simple : il suffisait de lire le man...<span id="more-9"></span></p>
<p>Le client SSH,  peut envoyer des paquets "keep-alive" à intervalles réguliers lors de la session. Lorsque le serveur reçoit ces paquets, il sait que, bien que le client ne génère pas d'activité, il faut garder la connexion active. De même, le serveur SSH, peut lui aussi envoyer ces paquets... sauf que, par défaut, ils ne le font pas. Pour les forcer à le faire, il suffit d'éditer les fichiers de configuration du client et/ou du serveur, selon à quoi on a accès et selon ce qu'on veut faire. Le mieux est de se contenter du client lorsque c'est possible, évidement.</p>
<p>Pour activer la fonction coté client,  écrire :</p>
<pre class="bash">Host *
    ServerAliveInterval <span style="color: #000000;">60</span></pre>
<p>dans "~/.ssh/config" (créer le fichier au besoin) pour appliquer à son propre utilisateur ou dans "/etc/ssh/ssh_config" pour l'activer sur tout le système, ou alors en en argument de l'option "-o" lors de l'appel à "ssh".</p>
<p>Coté serveur, même chose, mais l'option s'appelle "ClientAliveInterval".</p>
<p>"Host *" activera l'option sur tous les hôtes, mais vous pourriez utiliser un hote spécifique et créer ainsi une règle pour chaque hôte... le "60" indiquant "60 secondes", mais vous pourriez indiquer plus ou moins selon vos besoins.</p>
<h4 class='related-posts-header'>Articles apparentés</h4><ul class="related-posts-list"><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/05/configurer-vsftpd-pour-mettre-a-jour-automatiquement-wordpress/">Configurer vsftpd pour mettre à jour automatiquement Wordpress</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2010/11/optimiser-apache/">Optimiser Apache – Partie 1</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/08/creer-un-fichier-pid-pour-funambol-sous-gnu-linux/">Créer un fichier PID pour Funambol sous GNU/Linux</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/05/quelques-scripts-pour-profiter-de-son-scanner-sous-gnulinux/">Quelques scripts pour profiter de son scanner sous GNU/Linux</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/inclure-ses-machines-virtuelles-a-son-reseau-avec-virtualbox/">Inclure ses machines virtuelles à son réseau avec VirtualBox</a> </li><li class="related-post"><a href="http://www.modulaweb.fr/blog/2009/02/installation-de-funambol-couple-a-zimbra-sur-un-serveur-gnu-linux/">Installation de Funambol couplé à Zimbra sur un serveur GNU/Linux</a> </li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.modulaweb.fr/blog/2009/02/pour-des-sessions-ssh-qui-durent/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

