<?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>.: chiroux.com :. &#187; php</title>
	<atom:link href="http://www.chiroux.com/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.chiroux.com</link>
	<description></description>
	<lastBuildDate>Fri, 09 Oct 2009 21:47:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ma liste de BDs, version iphone</title>
		<link>http://www.chiroux.com/ma-liste-de-bds-version-iphone/</link>
		<comments>http://www.chiroux.com/ma-liste-de-bds-version-iphone/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 01:39:29 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[Bande Dessinee]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[bd]]></category>
		<category><![CDATA[bdgest]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iwebkit]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.chiroux.com/?p=470</guid>
		<description><![CDATA[<p>J&#8217;avais déjà, il y a quelque années, fait un petit script php pour générer ma liste de BDs en html ou rss (voir cet article).</p>
<p>Mais le parcours de la liste complète (ce que j&#8217;ai souvent besoin de faire quand je suis en train d&#8217;acheter des BDs pour m&#8217;assurer que je ne suis pas en train [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.chiroux.com/wp-content/uploads/2009/09/Illustration_BD-1.jpg" alt="Illustration_BD-1" title="Illustration_BD-1" width="400" height="188" class="alignleft size-full wp-image-495" />J&#8217;avais déjà, il y a quelque années, fait un petit script php pour générer ma liste de BDs en html ou rss (<a href="http://www.chiroux.com/bdlisting-un-newsfeed-de-ma-liste-de-bd/">voir cet article</a>).</p>
<p>Mais le parcours de la liste complète <span style="font-size: x-small;">(ce que j&#8217;ai souvent besoin de faire quand je suis en train d&#8217;acheter des BDs pour m&#8217;assurer que je ne suis pas en train d&#8217;acheter une BD que j&#8217;ai déjà&#8230;)</span> est long et peu pratique sur l&#8217;iphone.</p>
<p>J&#8217;ai donc décidé de faire évoluer ce script et l&#8217;adapter à l&#8217;iphone.<br />
<span id="more-470"></span><br />
<img src="http://www.chiroux.com/wp-content/uploads/2006/05/iphone-bds.png" alt="iphone-bds" title="iphone-bds" width="336" height="778" class="alignright size-full wp-image-489" /><br />
<br/><br />
<br/></p>
<p>Il existe plusieurs frameworks qui facilitent le développement d&#8217;applis web pour iphone, et après en avoir regardé quelques uns, les deux qui ont retenu mon attention sont :</p>
<ul>
<li><a href="http://www.iwebkit.net/">http://www.iwebkit.net/</a></li>
<li><a href="http://www.jqtouch.com/">http://www.jqtouch.com/</a></li>
</ul>
<p>Des deux, jqtouch est le plus joli, mais aussi le moins performant. J&#8217;ai donc choisi la sobriété et la rapidité avec iwebkit (qui a l&#8217;heure ou j&#8217;écris cet article est en version 4.6.2).</p>
<p>L&#8217;utilisation est hyper simple, il suffit d&#8217;inclure dans ses pages les css et javascript du kit et d&#8217;organiser ses pages comme indiqué dans la doc.<br />
J&#8217;ai beaucoup utilisé les listes pour cette petite appli, qui d&#8217;abord propose de sélectionner une lettre de l&#8217;alphabet, puis une série et enfin un album.</p>
<p>Comme pour BDlisting précédemment, l&#8217;appli se plugge sur <a href="http://bdgweb.free.fr/">BDGweb </a> et utilise la même base de donnée et donc le même export.</p>
<p>Pour l&#8217;installer, c&#8217;est tout simple, il suffit de déposer le répertoire iphone issu de l&#8217;archive directement dans votre répertoire où se situe bdgweb.</p>
<span id="Dmo"><h2>Démo</h2></span>
<ul>
<li><a href="http://bd.chiroux.com/iphone/" target="_blank">Voici ce que cela donne avec ma propre liste</a></li>
</ul>
<p>(si vous ne la visionnez pas directement sur un iphone, sachez qu&#8217;elle rend un peu mieux sous safari, mais qu&#8217;elle marche aussi sous firefox, seuls les liens retours sont un peu moches sous ff)</p>
<span id="Tlcharger_le_source"><h2>Télécharger le source</h2></span>
<p>Ce source est directement utilisable, il contient iwebkit en version 4.6.2<br />
Note: There is a file embedded within this post, please visit this post to download the file.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chiroux.com/ma-liste-de-bds-version-iphone/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Installation d&#8217;un serveur web sécurisé sous Ubuntu 9.04server</title>
		<link>http://www.chiroux.com/installation-dun-serveur-web-securise-sous-ubuntu-9-04server/</link>
		<comments>http://www.chiroux.com/installation-dun-serveur-web-securise-sous-ubuntu-9-04server/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 22:58:11 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[Administration Système]]></category>
		<category><![CDATA[9.04]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[jaunty]]></category>
		<category><![CDATA[lighttpd]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.chiroux.com/?p=419</guid>
		<description><![CDATA[<p>Cet article est le premier d&#8217;une série sur l&#8217;admin système linux. On va donc commencer par les bases : installer un ubuntu server avec une sécurité correcte et on en profite pour installer un LLMP dessus (c&#8217;est LAMP mais avec Lighttpd à la place de apache  )</p>
<p>Pour ce tuto, j&#8217;ai choisi d&#8217;utiliser un serveur [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.chiroux.com/wp-content/uploads/2009/08/ubuntu-logo.png" alt="ubuntu-logo" title="ubuntu-logo" width="300" height="277" class="alignright size-full wp-image-444" />Cet article est le premier d&#8217;une série sur l&#8217;admin système linux. On va donc commencer par les bases : installer un ubuntu server avec une sécurité correcte et on en profite pour installer un LLMP dessus (c&#8217;est LAMP mais avec Lighttpd à la place de apache <img src='http://www.chiroux.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> )</p>
<p>Pour ce tuto, j&#8217;ai choisi d&#8217;utiliser <a href="https://www.gandi.net/hebergement/" class="broken_link"  target="_blank">un serveur virtuel de chez gandi</a> : je profite d&#8217;une offre d&#8217;été qui propose un serveur gratuit pendant un mois.<br />
J&#8217;avais beta testé cette offre il y a un an et demi, mais les trop gros problèmes d&#8217;accès disque (lenteurs notamment) m&#8217;avaient incité à partir prendre un RPS chez OVH.<br />
Maintenant la situation change : l&#8217;offre de gandi est plus mûre (et l&#8217;archi disque a notamment changée : c&#8217;est maintenant du SAS directement sur les serveurs) et les <a href="http://forum.ovh.com/showthread.php?t=49747" target="_blank">RPS d&#8217;ovh vont disparaitre</a>.<br />
Je vais donc profiter de cette installation pour faire quelques benchs sur l&#8217;offre gandi et voir si je (re)bascule dessus ou pas ensuite.<br />
En attendant, voici de quoi installer le serveur<br />
<span id="more-419"></span></p>
<span id="Table_des_matires"><h2>Table des matières</h2></span>
<div class='toc wptoc'>
<h2>Contents</h2>
<ol class='toc-odd level-1'>
	<li>
		<a href="#Table_des_matires">Table des matières</a>
	</li>
	<li>
		<a href="#Du_ct_de__gandi">Du côté de  gandi</a>
	</li>
	<li>
		<a href="#Organiser_les_users">Organiser les users</a>
		<ol class='toc-even level-2'>
			<li>
				<a href="#On_va_donc_dabord_autoriser_le_sudo_pour_testuser_:">On va donc d'abord autoriser le sudo pour testuser :</a>
			</li>
			<li>
				<a href="#Ensuite_on_va_ajouter_testuser_dans_le_groupe_admin_:">Ensuite on va ajouter testuser dans le groupe admin :</a>
			</li>
			<li>
				<a href="#Enfin_on_change_le_mot_de_passe_root">Enfin on change le mot de passe root</a>
			</li>
		</ol>
	<li>
		<a href="#Mise__jour_du_systme">Mise à jour du système</a>
	</li>
	<li>
		<a href="#Installer_et_configurer_de_quoi_bien_travailler">Installer et configurer de quoi bien travailler</a>
		<ol class='toc-even level-2'>
			<li>
				<a href="#Lheure_et_ntp">L'heure et ntp</a>
			</li>
		</ol>
	<li>
		<a href="#Scurit">Sécurité</a>
		<ol class='toc-even level-2'>
			<li>
				<a href="#ssh_:_autoriser_uniquement_certains_users_en_ssh">ssh : autoriser uniquement certains users en ssh</a>
			</li>
			<li>
				<a href="#Fail2ban">Fail2ban</a>
			</li>
			<li>
				<a href="#IPtables">IPtables</a>
			</li>
			<li>
				<a href="#Scuriser_le_kernel">Sécuriser le kernel</a>
			</li>
		</ol>
	<li>
		<a href="#Installation_Lighttpd_et_php">Installation Lighttpd et php</a>
	</li>
	<li>
		<a href="#Installation_Mysql">Installation Mysql</a>
	</li>
	<li>
		<a href="#Configuration_de_lighttpd_pour_un_site_de_test">Configuration de lighttpd pour un site de test</a>
		<ol class='toc-even level-2'>
			<li>
				<a href="#mettre_un_fichier_de_test">mettre un fichier de test</a>
			</li>
		</ol>
	<li>
		<a href="#Conclusion">Conclusion</a>
	</li>
</ol>
</ol>
</div>
<div class='wptoc-end'>&nbsp;</div>
<span id="Du_ct_de__gandi"><h2>Du côté de  gandi</h2></span>
<ul>
<li>Administration / Hebergement : cliquer sur créer un serveur</li>
<li>Valider le nombre de parts</li>
<li>Choisir Installation expert et Ubuntu 9.04</li>
<li>Choisir un hostname, un nom d&#8217;utilisateur et un mot de passe [si possible, choisir un nom de user non standard, pour améliorer la sécurité]</li>
<li>Valider, et attendre le mail de confirmation avec l&#8217;@IP du serveur</li>
<li>Ensuite, on peut se connecter en SSH sur le serveur avec le login et pass entré juste avant.</li>
</ul>
<p>Ajouter un disque de données :</p>
<ul>
<li>sur l&#8217;interfance gandi, onglet Gestion des disque, cliquer sur Créer un disque</li>
<li>choisir un nom pour le disque, la taille souhaitée et le filesystem</li>
<li>enfin, une fois le disque créé, cliquer sur le petit logo &#8216;link&#8217; attacher le disque à un serveur</li>
<li>choisir le serveur et valider</li>
<li>le volume est dynamiquement ajouté au serveur dans /srv/nomduvolumechoisi</li>
</ul>
<span id="Organiser_les_users"><h2>Organiser les users</h2></span>
<p>Le login créé (ici: testuser) n&#8217;est pas par défaut dans la liste des sudoers, donc pas de sudo possible.</p>
<p>Le mot de passe root par défaut est le même que celui du user testuser</p>
<span id="On_va_donc_d8217abord_autoriser_le_sudo_pour_testuser_:"><h3>On va donc d&#8217;abord autoriser le sudo pour testuser :</h3></span>
<p>en tant que root :</p>
<pre class="brush: bash;">
visudo</pre>
<p>et ajouter à la fin du fichier :</p>
<pre class="brush: bash;">
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
</pre>
<span id="Ensuite_on_va_ajouter_testuser_dans_le_groupe_admin_:"><h3>Ensuite on va ajouter testuser dans le groupe admin :</h3></span>
<p>toujours en tant que root :</p>
<pre class="brush: bash;">
usermod -G admin testuser
</pre>
<span id="Enfin_on_change_le_mot_de_passe_root"><h3>Enfin on change le mot de passe root</h3></span>
<p>en tant que root :</p>
<pre class="brush: bash;">
passwd
</pre>
<p>et entrer un bon mot de passe bien sécurisé</p>
<p>A partir de maintenant, sauf mention spécifique, le reste des commandes sera réalisée avec le user testuser</p>
<span id="Mise__jour_du_systme"><h2>Mise à jour du système</h2></span>
<p>Afin de démarrer sur un système tout propre</p>
<pre class="brush: bash;">
sudo apt-get update
sudo apt-get upgrade
</pre>
<span id="Installer_et_configurer_de_quoi_bien_travailler"><h2>Installer et configurer de quoi bien travailler</h2></span>
<pre class="brush: bash;">
sudo apt-get install vim-python
</pre>
<p>puis</p>
<pre class="brush: bash;">
vim ~/.vimrc
</pre>
<p>et coller le texte suivant:</p>
<pre class="brush: bash;">
syntax on
set number
set background=dark
set tabstop=2
set shiftwidth=2
set softtabstop=2
set expandtab
set autoindent
autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
autocmd BufWritePre *.py normal m`:%s/\s\+$//e ``
map &lt;F12&gt; :set number!&lt;CR&gt;
map &lt;F10&gt; :set paste!&lt;CR&gt;
</pre>
<p>enfin :</p>
<pre class="brush: bash;">
vim ~/.bashrc
</pre>
<p>et vers la fin du fichier, décommenter les 3 lignes suivantes :</p>
<pre class="brush: bash;">
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
</pre>
<span id="L8217heure_et_ntp"><h3>L&#8217;heure et ntp</h3></span>
<p>Dans mon système livré par gandi, l&#8217;heure est par défaut en heure UTC, si on veut la mettre à l&#8217;heure locale (Paris, France pour moi):</p>
<pre class="brush: bash;">
sudo dpkg-reconfigure tzdata
</pre>
<p>et choisir : Europe, puis Paris</p>
<p>Pour NTP :<br />
[édit: Comme le remarque justement Daniel dans les commentaires, paramétrer ntp pour un serveur virtuel n'est vraisemblablement pas nécessaire car il va hériter de la date de son hôte. Je laisse ici l'info au cas où votre serveur n'est pas un hébergement gandi]</p>
<pre class="brush: bash;">
sudo vim /etc/cron.daily/ntpdate
</pre>
<p>et coller les commandes suivantes :</p>
<pre class="brush: bash;">
#!/bin/sh
#On lance une synchro ntp
ntpdate fr.pool.ntp.org
</pre>
<p>enfin</p>
<pre class="brush: bash;">
sudo chmod a+x /etc/cron.daily/ntpdate
</pre>
<p>Ainsi notre serveur resynchronisera son horloge tous les jours automatiquement.</p>
<span id="Scurit"><h2>Sécurité</h2></span>
<span id="ssh_:_autoriser_uniquement_certains_users_en_ssh"><h3>ssh : autoriser uniquement certains users en ssh</h3></span>
<p>ici, on va limiter le ssh uniquement pour notre user : testuser</p>
<pre class="brush: bash;">
sudo vim /etc/ssh/sshd_config
</pre>
<p>Bin vérifier que dans la zone &#8216;Authentication&#8217; on a bien :</p>
<pre class="brush: bash;">
PermitRootLogin  without-password
</pre>
<p>sinon modifier le paramètre.</p>
<p>ensuite, en bas du fichier, ajouter :</p>
<pre class="brush: bash;">
# Allow only a certain list of users
AllowUsers testuser
</pre>
<p><span style="color: #ff0000;"><strong>Attention, il faut être vigilant en insérant cette ligne : une erreur dans le nom du user interdirait toute connexion ultérieure en ssh et bloquerait l&#8217;accès au serveur. Il est conseillé de garder sa session actuelle ouverte et de tester une nouvelle connexion supplémentaire pour bien vérifier qu&#8217;on puisse encore se connecter.</strong></span></p>
<p>On recharge la config ssh</p>
<pre class="brush: bash;">
sudo /etc/init.d/ssh reload
</pre>
<span id="Fail2ban"><h3>Fail2ban</h3></span>
<p>Fail2ban analyse les logs (ssh notament) et banni les IP qui attaque en force brute sur ssh via des configurations automatiques dans iptables.</p>
<pre class="brush: bash;">
sudo apt-get install fail2ban
</pre>
<p>modification des paramètres de fail2ban:</p>
<pre class="brush: bash;">
sudo vim /etc/fail2ban/jail.conf
</pre>
<p>pour ma part, j&#8217;ai juste changé deux paramètres : le bantime et le nombre d&#8217;essais :</p>
<pre class="brush: bash;">
bantime  = 1800
maxretry = 3
</pre>
<pre class="brush: bash;">
sudo /etc/init.d/fail2ban restart
</pre>
<span id="IPtables"><h3>IPtables</h3></span>
<p>Iptable a été installé avec fail2ban, on va maintenant le configurer pour nos applications</p>
<p>Pour cela, on va créer un fichier de commande qui se lancera au boot du serveur et que l&#8217;on peut relancer à volonté pour reconfigurer le firewall.</p>
<pre class="brush: bash;">
sudo vim /etc/init.d/server_iptables
</pre>
<p>et coller les commandes suivantes :</p>
<pre class="brush: bash;">
#!/bin/bash
# reset iptables
iptables -F

# Autorise les connections sortantes et sur l'interface &quot;loopback&quot;
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -d 127.0.0.0/8 -i ! lo -j DROP

# Autorise les connections deja etablies
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Autorise HTTP, SSH, ICMP-ping
iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT
iptables -A INPUT -p icmp -i eth0 -j ACCEPT

#  Refuse a priori ce qui vient de l'exterieur
iptables -P INPUT DROP
iptables -P FORWARD DROP
</pre>
<p>Ensuite on le rend executable et on l&#8217;installe au boot :</p>
<pre class="brush: bash;">
sudo chmod +x /etc/init.d/server_iptables
sudo update-rc.d server_iptables defaults
</pre>
<span id="Scuriser_le_kernel"><h3>Sécuriser le kernel</h3></span>
<p>ça doit être lié à Xen, mais le kernel de gandi est assez ancien (à la date de cet article c&#8217;est un 2.6.18, alors que le kernel en cours est un 2.6.28</p>
<p>On va modifier quelques paramètres du kernel pour le rendre plus solide aux attaques<br />
Ici, il faut se mettre directement en root pour que ces commandes passent :</p>
<pre class="brush: bash;">
sudo su
</pre>
<span id="Se_protger_contre_les_Smurf_Attack:"><h4>Se protéger contre les Smurf Attack:</h4></span>
<p>celui ci est déjà bon dans l&#8217;install que j&#8217;ai testé:</p>
<pre class="brush: bash;">
echo &quot;1&quot; &gt; /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
</pre>
<span id="Eviter_le_source_routing:_"><h4>Eviter le source routing: </h4></span>
<p>celui ci est déjà bon dans l&#8217;install que j&#8217;ai testé:</p>
<pre class="brush: bash;">
echo &quot;0&quot; &gt; /proc/sys/net/ipv4/conf/all/accept_source_route
</pre>
<span id="Se_protger_des_attaques_de_type_Syn_Flood:_"><h4>Se protéger des attaques de type Syn Flood: </h4></span>
<p>celui ci est déjà bon dans l&#8217;install que j&#8217;ai testé:</p>
<pre class="brush: bash;">
echo &quot;1&quot; &gt; /proc/sys/net/ipv4/tcp_syncookies
echo &quot;1024&quot; &gt; /proc/sys/net/ipv4/tcp_max_syn_backlog
echo &quot;1&quot; &gt; /proc/sys/net/ipv4/conf/all/rp_filter
</pre>
<span id="Dsactiver_lautorisation_des_redirections_ICMP:"><h4>Désactiver l’autorisation des redirections ICMP:</h4></span>
<pre class="brush: bash;">
echo &quot;0&quot; &gt; /proc/sys/net/ipv4/conf/all/accept_redirects
echo &quot;0&quot; &gt; /proc/sys/net/ipv4/conf/all/secure_redirects
</pre>
<span id="Eviter_le_log_des_paquets_icmp_erron:_"><h4>Eviter le log des paquets icmp erroné: </h4></span>
<p>celui ci est déjà bon dans l&#8217;install que j&#8217;ai testé:</p>
<pre class="brush: bash;">
echo &quot;1&quot; &gt; /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
</pre>
<span id="Active_le_logging_des_packets_aux_adresses_sources_falficies_ou_non_routables:"><h4>Active le logging des packets aux adresses sources falficiées ou non routables:</h4></span>
<pre class="brush: bash;">
echo &quot;1&quot; &gt; /proc/sys/net/ipv4/conf/all/log_martians
</pre>
<p>on quitte le user root</p>
<pre class="brush: bash;">
exit
</pre>
<span id="Installation_Lighttpd_et_php"><h2>Installation Lighttpd et php</h2></span>
<pre class="brush: bash;">
sudo apt-get install lighttpd
sudo apt-get install php5-cgi
sudo apt-get install php5-mysql
sudo lighty-enable-mod cgi
sudo /etc/init.d/lighttpd force-reload
</pre>
<p>edit le fichier de conf de lighttpd et ajouter le mod fastcgi :</p>
<pre class="brush: bash;">
sudo vim /etc/lighttpd/lighttpd.conf
</pre>
<p>les modules activés sont les suivants (j&#8217;ai mis mod_rewrite et mod_redirect en plus, car cela sert toujours finalement)</p>
<pre class="brush: bash;">
 server.modules              = (
             &quot;mod_access&quot;,
             &quot;mod_alias&quot;,
             &quot;mod_accesslog&quot;,
             &quot;mod_compress&quot;,
             &quot;mod_fastcgi&quot;,
             &quot;mod_rewrite&quot;,
             &quot;mod_redirect&quot;,
 #           &quot;mod_evhost&quot;,
 #           &quot;mod_usertrack&quot;,
 #           &quot;mod_rrdtool&quot;,
 #           &quot;mod_webdav&quot;,
 #           &quot;mod_expire&quot;,
 #           &quot;mod_flv_streaming&quot;,
 #           &quot;mod_evasive&quot;
 )
</pre>
<p>puis aller chercher dans le fichier la variable : server.dir-listing<br />
et la passer à disable : </p>
<pre class="brush: bash;">
server.dir-listing          = &quot;disable&quot;
</pre>
<span id="Installation_Mysql"><h2>Installation Mysql</h2></span>
<pre class="brush: bash;">
apt-get install mysql-server-5.0
</pre>
<p>Quand il le demande, entrer un mot de passe root pour mysql (choisir un vrai mot de passe bien sécurisé)</p>
<p>On va &#8216;forcer&#8217; l&#8217;utf8 partout :</p>
<pre class="brush: bash;">
sudo vim /etc/mysql/conf.d/caractersencoding.cnf
</pre>
<p>et coller la configuration suivante :</p>
<pre class="brush: bash;">
[mysqld]
  #Set the default character set.
  default-character-set=utf8
  #Set the default collation.
  default-collation=utf8_general_ci
  #
  character-set-server=utf8
  skip-character-set-client-handshake
  init-connect='SET NAMES utf8'
</pre>
<p>on redémarre pour vérifier que tout est bon</p>
<pre class="brush: bash;">
sudo /etc/init.d/mysql restart
</pre>
<p>Mysql est maintenant installé dans ses répertoires par défaut, et notamment les bases seront crées dans /var/lib/mysql<br />
[ceci est une spécificité liée à l'installation gandi, vous pouvez passer ce point si votre serveur est 'normal'] /var/lib est dans le disque &#8217;système&#8217; de gandi qui fait uniquement 3Go. En fonction de ce qu&#8217;on prévoi de faire avec son serveur mysql, il est peut-etre judicieux de le déplacer sur le disque de données :</p>
<pre class="brush: bash;">
sudo /etc/init.d/mysql stop
sudo mv /var/lib/mysql /srv/nomdurepertoiregandi/mysql
sudo ln -s /srv/nomdurepertoiregandi/mysql /var/lib/mysql
sudo /etc/init.d/mysql start
</pre>
<span id="Configuration_de_lighttpd_pour_un_site_de_test"><h2>Configuration de lighttpd pour un site de test</h2></span>
<p>Afin de voir si tout va bien, on va créer un site de test </p>
<pre class="brush: bash;">
sudo mkdir /srv/nomdurepertoiregandi/www
sudo chown www-data:www-data /srv/nomdurepertoiregandi/www
sudo -u www-data mkdir /srv/nomdurepertoiregandi/www/sitetest1
</pre>
<p>ensuite on va configurer lighty :</p>
<pre class="brush: bash;">
sudo vim /etc/lighttpd/lighttpd.conf
</pre>
<p>ajouter sous la conf des modules :</p>
<pre class="brush: bash;">
 # Config pour sitetest
$HTTP[&quot;host&quot;] == &quot;111.111.111.111&quot; {
     server.document-root       = &quot;/srv/nomdurepertoiregandi/www/sitetest1/&quot;

     # FAST CGI POUR PHP
     fastcgi.server = ( &quot;.php&quot; =&gt; ((
                         &quot;bin-path&quot; =&gt; &quot;/usr/bin/php-cgi&quot;,
                         &quot;socket&quot; =&gt; &quot;/tmp/php.socket&quot;,
                         &quot;max-procs&quot; =&gt; 1,
                         &quot;bin-environment&quot; =&gt; (
                             &quot;PHP_FCGI_CHILDREN&quot; =&gt; &quot;4&quot;,
                             &quot;PHP_FCGI_MAX_REQUESTS&quot; =&gt; &quot;10000&quot;
                         ),
                         &quot;bin-copy-environment&quot; =&gt; (
                             &quot;PATH&quot;, &quot;SHELL&quot;, &quot;USER&quot;
                         ),
                         &quot;broken-scriptfilename&quot; =&gt; &quot;enable&quot;
     )))
}
</pre>
<p>en remplaçant l&#8217;ip 111.111.111.111 par l&#8217;ip ou le nom de domaine du site que vous voulez ajouter<br />
ensuite on redémarre lighty</p>
<pre class="brush: bash;">
sudo /etc/init.d/lighttpd restart
</pre>
<span id="mettre_un_fichier_de_test"><h3>mettre un fichier de test</h3></span>
<pre class="brush: bash;">
sudo -u www-data vim /srv/nomdurepertoiregandi/www/sitetest1/testinfo.php
</pre>
<p>et coller le code suivant :</p>
<pre class="brush: php;">
&lt;?php phpinfo(); ?&gt;
</pre>
<p>et voilà, le site est normalement accessible sur l&#8217;IP (ou le nom de domaine) que vous avez précisé dans la conf et l&#8217;url (en prenant mon exemple ci-dessus) : http://111.111.111.111/testinfo.php<br />
affiche toutes les infos de php.</p>
<span id="Conclusion"><h2>Conclusion</h2></span>
<p>On a maintenant un serveur ubuntu jaunty prêt à fonctionner, léger et sécurisé. Il prends peu de ressources, très peu de ram et pourra servir de base aux reste des tutos à venir.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chiroux.com/installation-dun-serveur-web-securise-sous-ubuntu-9-04server/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Ultimate Tag Cloud : un nuage de tags pour MODx</title>
		<link>http://www.chiroux.com/utagcloud/</link>
		<comments>http://www.chiroux.com/utagcloud/#comments</comments>
		<pubDate>Sun, 07 Jan 2007 17:59:52 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[Obsolete]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[modx]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.chiroux.com/article-1168192792.html</guid>
		<description><![CDATA[<p>Depuis que j&#8217;ai basculé sur Modx, j&#8217;avais envie de m&#8217;amuser avec les tags. J&#8217;ai d&#8217;abord utilisé directement le snippet tagcloud, puis ce week-end je me suis dit qu&#8217;on pouvait faire mieux, beaucoup mieux, à l&#8217;image de zoomclouds par exemple.</p>
<p>J&#8217;utilise sur ce site depuis le début le snippet TagCloud, et j&#8217;ai décidé de l&#8217;améliorer fortement.
Voici quelques [...]]]></description>
			<content:encoded><![CDATA[<p>Depuis que j&#8217;ai basculé sur Modx, j&#8217;avais envie de m&#8217;amuser avec les tags. J&#8217;ai d&#8217;abord utilisé directement le snippet tagcloud, puis ce week-end je me suis dit qu&#8217;on pouvait faire mieux, beaucoup mieux, à l&#8217;image de zoomclouds par exemple.</p>
<p>J&#8217;utilise sur ce site depuis le début le snippet TagCloud, et j&#8217;ai décidé de l&#8217;améliorer fortement.<br />
Voici quelques unes de ces fonctionnalités :</p>
<ul>
<li>Construction automatique, sans besoin de préciser des tags pour chaque page (compte les mots et les range par quantité)</li>
<li>Recherche récursive</li>
<li>Exclusion de mots &#8216;courants&#8217; via des fichiers de langues (pour l&#8217;instant seul un fichier français a été réalisé)</li>
<li>Exclusion des caractères de contrôles via des fichiers de langues</li>
<li>Detection automatique des pluriels courants des mots et &#8216;fusion&#8217; des mots singuliers et pluriels dans un même tag (tout au moins fonctionne en français)</li>
<li>Le rendu est paramétrable par templates (chunks ou fichiers) et css</li>
<li>Plusieurs tagClouds différents sont possibles sur une même page</li>
<li>Colorisation des mots, possibilité de nombre de couleurs différentes potentiellement illimité (nécéssite autant de configuration des css)</li>
<li>Possibilité de paramétrer lors du lancement un certain nombre d&#8217;éléments consititutif du nuage :
<ul>
<li>nombre d&#8217;occurences minimales des mots à afficher</li>
<li>nombre de lettre minimales pour un mot</li>
<li>nombre total de mots maximum dans le nuage</li>
<li>taille minimale de la police</li>
<li>taille maximale de la police</li>
</ul>
</li>
</ul>
<p><span id="more-28"></span></p>
<span id="Installation"><h2>Installation</h2></span>
<p>L&#8217;installation est classique pour un snippet modx :</p>
<ul>
<li>créez un répertoire UtagCloud dans le répertoire assets/snippets/ de votre site</li>
<li>copiez le contenu de l&#8217;archive dans ce UtagCloud</li>
<li>dans modx, créez un snippet nommé &#8216;UtagCloud&#8217;</li>
<li>copiez le contenu du fichier UtagCloud_snippet.php.txt dans le contenu du snippet</li>
<li>Ensuite dans une page, invoquez le snippet comme vous avez l&#8217;habitude de le faire (voir les exemples plus bas)</li>
</ul>
<span id="Paramtres"><h2>Paramètres</h2></span>
<p>Voici l&#8217;explication des paramètres en français. Pour une explication en anglais, veuillez vous référer à l&#8217;entête du fichier UtagCloud_snippet.php.txt</p>
<ul>
<li><strong>&amp;parent</strong> =    liste des répertoires modx contenant des documents, séparés par une virgule. Si vous utilisez le paramètre récusif ci-après, vous pouvez mettre `0` dans parent pour parcourir tout le site.</li>
<li><strong>&amp;recursive</strong> =  [ 0 | 1 ] : Détermine si UtagCloud scanne les répertoires et documents modx récursivement ou non.</li>
<li><strong>&amp;min</strong> =      [ number ] : Nombre minimum d&#8217;occurence d&#8217;un mot afin qu&#8217;il soit affiché dans le nuage.</li>
<li><strong>&amp;landing</strong> =  [ number ] : l&#8217;ID de page de résultat de la recherche : chaque clic sur un mot du tag générera une recherche (FlexSearch) et aboutira sur cette page de résultat. Si vous n&#8217;avez pas de page de résultat, créez en une avec à l&#8217;intérieur :</li>
<li><strong>&amp;minsize</strong> =  [ number ] : Nombre de lettres minimale d&#8217;un mot pour qu&#8217;il soit affiché dans le nuage.</li>
<li><strong>&amp;wordsmax</strong> = [ number ] : Nombre maximum de mots du nuage. Indiquez zéro (`0`) pour un nombre illimité.</li>
<li><strong>&amp;fontmin</strong> =  [ number ] : Taille minimum de la police de caractère en % (pour les mots avec la plus petite occurence).</li>
<li><strong>&amp;fontmax</strong> =  [ number ] : Taille maximum de la police de caractère en % (pour les mots avec la plus grande occurence).</li>
<li><strong>&amp;lang </strong>=     [ text ] : Paramètre de langue pour lire les fichiers d&#8217;exclusion.</li>
<li><strong>&amp;template</strong> =   [ text ] : nom d&#8217;un Chunk ou d&#8217;un fichier dans templates/ qui sera utilisé pour affiche le contenu du nuage.</li>
<li><strong>&amp;css</strong> =        [ text ] : nom du fichier css qui sera inclus au document. Pratique si vous utilisez styleid, pour séparer les styles différents de vos nuages.</li>
<li><strong>&amp;styleid</strong> =    [ text | number ] : nouvelle instance de style (css) pour votre nuage. Permet d&#8217;avoir plusieurs nuages de style différents sur une même page.</li>
<li><strong>&amp;colors</strong> =     [ number ] : nombre de couleurs différentes pour les mots du nuage.</li>
<li><strong>&amp;plural_letter</strong> = [ text ] : définit la lettre qui sert à mettre au pluriel les mots de façon la plus courante (en français c&#8217;est le &#8217;s&#8217;). Permet de regrouper les mots singuliers et pluriels en un seul mot pour tout compter d&#8217;un coup. Si vous ne souhaitez pas utiliser cette fonctionnalité, définisez `#` comme valeur à ce paramètre.</li>
</ul>
<span id="Styles_d8217affichage_css"><h2>Styles d&#8217;affichage (css)</h2></span>
<p>UtagCloud utilise principalement deux classes de style, mais qui sont déclinable en fonction du styleid et du nombre de couleurs définies :</p>
<ul>
<li>.Utagcloud_XXX : où XXX est le styleid (par défaut c&#8217;est `0`)</li>
<li>.Utagcloudtext_XXX_CCC : où XXX est toujours le styleid et où CCC est la couleurID</li>
</ul>
<p>par exemple, si nous avons paramétré 5 couleurs, et que le styleid est celui par défaut, il faudra définir dans la css les styles suivants :</p>
<ul>
<li> .UtagCloud_0 {} : pour le div contenant le nuage.</li>
<li> .UtagCloudtext_0_1 {} : pour le texte de couleur numéro 1</li>
<li> .UtagCloudtext_0_2 {} : pour le texte de couleur numéro 2</li>
<li> .UtagCloudtext_0_3 {} : pour le texte de couleur numéro 3</li>
<li> .UtagCloudtext_0_4 {} : pour le texte de couleur numéro 4</li>
<li> .UtagCloudtext_0_5 {} : pour le texte de couleur numéro 5</li>
</ul>
<p>Ensuite, tout dépend du template et de ce que vous avez envie de faire. Vous pouvez par exemple avoir envie de paramétrer les :hover afin de changer le comportement quand on passe la souris.</p>
<span id="Tlcharger_l8217archive"><h2>Télécharger l&#8217;archive</h2></span>
Note: There is a file embedded within this post, please visit this post to download the file.
]]></content:encoded>
			<wfw:commentRss>http://www.chiroux.com/utagcloud/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>BDlisting : un newsFeed de ma liste de BD</title>
		<link>http://www.chiroux.com/bdlisting-un-newsfeed-de-ma-liste-de-bd/</link>
		<comments>http://www.chiroux.com/bdlisting-un-newsfeed-de-ma-liste-de-bd/#comments</comments>
		<pubDate>Wed, 17 May 2006 21:08:39 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[Bande Dessinee]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[bd]]></category>
		<category><![CDATA[bdgest]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://www.chiroux.com/article-59.html</guid>
		<description><![CDATA[<p>J&#8217;ai remis à jour un php que j&#8217;avais fait basé sur l&#8217;export BDGweb de ma liste de BD réalisée sur BDGest&#8217;. Il peut exporter en html simple ou en RSS2.0 une liste complète, une liste des derniers achats ainsi que la liste des BD recherchées.</p>
<p>Maintenant BDListing peut aussi exporter du rss en plus de l&#8217;html.

L&#8217;utilisation [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai remis à jour un php que j&#8217;avais fait basé sur l&#8217;export <a href="http://bdgweb.free.fr/" target="_blank">BDGweb</a> de ma liste de BD réalisée sur <a href="http://www.bdgest.com/" target="_blank">BDGest&#8217;</a>. Il peut exporter en html simple ou en RSS2.0 une liste complète, une liste des derniers achats ainsi que la liste des BD recherchées.</p>
<p>Maintenant BDListing peut aussi exporter du rss en plus de l&#8217;html.<br />
<span id="more-35"></span><br />
L&#8217;utilisation est simple :</p>
<ul>
<li>posez ce php dans votre répertoire racine de BDGweb</li>
<li>éditez le php pour mettre à jour l&#8217;URL de votre site</li>
</ul>
<p>Appelez-le avec les paramètres suivant :</p>
<ul>
<li>feed
<pre class="brush: xml;">[/html]</pre>
<p>(optionnel, defaut : html)</li>
<li>type [liste | rech | top] (optionnel, defaut : liste)</li>
<li>nbre (int) (optionnel, defaut : 50, utilisé uniquement si type=top)</li>
</ul>
<p>Les 3 types de liste sont :</p>
<ul>
<li>liste : un extract complet de la bade BDGWeb</li>
<li>rech : la liste des BD recherchées</li>
<li>top : le top n (par défaut : 50) des derniers achats (très pratique quand, comme moi, on a tellement peu de mémoire qu&#8217;on est capable d&#8217;acheter 2 fois la même BD deux semaines de suite <img src='http://www.chiroux.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
</ul>
<p>Exemples :<br />
1) liste complète en html<br />
/BDlisting.php?feed=html&amp;type=liste</p>
<p>2) 75 derniers achats en rss 2.0<br />
/BDlisting.php?feed=rss&amp;type=top&amp;nbre=75</p>
<p>Retrouvez l&#8217;utilisation de ce programme avec ma propre liste :</p>
<ul>
<li><a href="http://bd.chiroux.com/BDlisting.php?feed=html&#038;type=liste" target="_blank">Liste complète html</a></li>
<li><a href="http://bd.chiroux.com/BDlisting.php?feed=rss&#038;type=top&#038;nbre=50" target="_blank">50 dernier achats en RSS</a></li>
</ul>
<span id="Tlcharger_le_source"><h2>Télécharger le source</h2></span>
Note: There is a file embedded within this post, please visit this post to download the file.
]]></content:encoded>
			<wfw:commentRss>http://www.chiroux.com/bdlisting-un-newsfeed-de-ma-liste-de-bd/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
