<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://www.paradoxal.org/blog/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Blog Blog - Balise - Mysql</title>
  <link>http://www.paradoxal.org/blog/</link>
  <atom:link href="http://www.paradoxal.org/blog/feed/tag/Mysql/rss2" rel="self" type="application/rss+xml"/>
  <description>Blogblog vous propose  un aide mémoire d'un développeur PHP / Mysql passionné par l'administration Linux. Seza - son autheur - vous met donc à disposition ses astuces, les mauvais moments et difficultés rencontrées mais aussi ses connaissances.
Même si ce blog s'oriente très clairement vers les lignes de code illisibles pour nombreux d'entre vous, actualité, coup de gueule et information sur les technos du moment ne seront pas absentes. Bonne visite !</description>
  <language>fr</language>
  <pubDate>Sat, 11 Oct 2008 00:27:41 +0200</pubDate>
  <copyright>licence creative commons</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Serveur Debian - Antispam email</title>
    <link>http://www.paradoxal.org/blog/post/2007/08/05/Serveur-Debian-Antispam-email</link>
    <guid isPermaLink="false">urn:md5:29461e8f6f9628573bac2a8869aace16</guid>
    <pubDate>Sat, 25 Aug 2007 13:19:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Serveur Debian</category>
        <category>Dspam</category><category>Linux</category><category>Mysql</category><category>SMTP</category><category>Spam</category><category>Sécurité</category><category>Utilisateurs virtuels</category>    
    <description>&lt;p&gt;&lt;strong&gt;CHAPITRE 8&amp;nbsp;: DSPAM&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Maintenant que nous possédons un très bel outil qui nous permet d'envoyer et de recevoir des e-mails, il ne saurait tarder à ce que vous receviez quelques spams.
Nous allons donc installer un antispam.&lt;/p&gt;


&lt;p&gt;Pour commencer installons déjà un antispam. Etant un habitué de Spamassassin et en cherchant sur la toile de quoi aller plus loin avec SA j'ai découvert Dspam. Alors j'ai choisi d'utiliser du coup ce dernier pour mon tutorial. Je préfère la démarche de mise en place autour de Dspam, malgré que je le connaisse peu, je me sens plus à l'aise qu'avec SA.
Dspam offre aussi un atout performance par rapport à SA ce qui n'est pas négligeable surtout si vous hébergez beaucoup de boites plus ou moins spammées.
Puisque nous hébergeons des utilisateurs virtuels sur notre Postfix et Dspam offre la possibilité d'être couplé à Mysql et d'être configurable utilisateur par utilisateur, nous allons par conséquent exploiter cette possibilité.&lt;/p&gt;


&lt;p&gt;Dspam à la particularité de devoir tout apprendre, c'est à dire qu'au début aucun spam ne sera recensés. Nous allons configurer deux boites e-mails &lt;q&gt;« spam@bebenet.local »&lt;/q&gt; et &lt;q&gt;« ham@bebenet.local »&lt;/q&gt; auxquelles nous transférerons respectivement les faux négatifs et les faux positifs afin que Dspam apprenne à reconnaître les bons des mauvais e-mails.&lt;/p&gt;


&lt;p&gt;Maintenant que le décor est planté, cette configuration aura le démérite que chaque utilisateur devra commencer de zéro avec Dspam mais Dspam aura la finesse de filtrer la boite e-mail de l'utilisateur tout comme ce dernier lui aura appris. Un véritable filtre personnalisé.
Néanmoins il existe des méthodes pour que Dspam apprenne plus vite à partir d'une base de spam préétablie. Je n'utiliserai pas cette fonctionnalité pour deux raisons.
La première est du fait que les bases de spams vieillissent très vite et les spams appris ne seront plus d'actualité ce qui ne servira en rien à Dspam.
La deuxième provient de mon expérience personnelle avec Dspam. Recevant une centaine de spam par jour Dspam n'a pas mis plus de deux heures pour commencer à attraper les premiers spams en trois jours il filtrait tout. Après les quelques semaines qui se sont passées entre la rédaction de se tuto et sa publication. Voici les statistique de mon Dspam.&lt;/p&gt;


&lt;p&gt;2 883 spam détecté dont 7 faux positifs et sur les 758 e-mail détecté comme valide seulement 53 faux négatif. Bien entendu ces résultats peuvent fortement varier en fonction de la typologie et de la variabilité des e-mails reçus.&lt;/p&gt;


&lt;p&gt;Dspam à son installation cherchera à se connecter en &lt;q&gt;« root »&lt;/q&gt; sur notre base de données. Etant donné que nous avions renommer l'utilisateur &lt;q&gt;« root »&lt;/q&gt; en &lt;q&gt;« bebeserv »&lt;/q&gt;, nous ferons machine arrière le temps de l'installation.&lt;/p&gt;


&lt;p&gt;Il est temps d'installer Dspam maintenant – place à l'action&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo -i
Password:
bebeserv:/etc/mysql# mysql -u bebeserv -p
Enter password:
[...]

mysql&amp;gt; rename user bebeserv@localhost to root@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; exit
Bye
bebeserv:~# apt-get update
[...]
bebeserv:~# apt-get install dspam dspam-drv-mysql dspam-doc
[...]
&lt;/pre&gt;


&lt;p&gt;Lors de l'installation, répondez oui à &lt;q&gt;« dbconfig-common »&lt;/q&gt;, entrez le mot de passe &lt;q&gt;« root »&lt;/q&gt; (enfin &lt;q&gt;« bebeserv »&lt;/q&gt;) de Mysql puis le mot de passe de l'utilisateur Dspam qui sera créé et confirmer ce mot de passe.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/mysql# mysql -u root -p
Enter password:
[...]

mysql&amp;gt; rename user root@localhost to bebeserv@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; exit
Bye
&lt;/pre&gt;


&lt;p&gt;Je vous passe ici l'exploration de la base de données créée qui doit normalement se prénomée par un nom un peu barbare dixit&amp;nbsp;: &lt;q&gt;« libdspam7drvmysql »&lt;/q&gt; et l'utilisateur attribué sera nommé &lt;q&gt;« libdspam7-drv-my »&lt;/q&gt;.&lt;/p&gt;


&lt;p&gt;Place à la configuration&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# nano /etc/dspam/dspam.conf

StorageDriver /usr/lib/dspam/libmysql_drv.so

DeliveryHost        127.0.0.1
DeliveryPort        10026
DeliveryIdent       localhost
DeliveryProto       SMTP

Preference &amp;quot;signatureLocation=message&amp;quot;  # 'message' or 'headers'
Preference &amp;quot;showFactors=on&amp;quot;
Preference &amp;quot;spamAction=tag&amp;quot;
Preference &amp;quot;spamSubject=***SPAM***&amp;quot;

#
# Purge configuration: Set dspam_clean purge default options, if not otherwise
# specified on the commandline
#
#PurgeSignatures 14          # Stale signatures
#PurgeNeutral    90          # Tokens with neutralish probabilities
#PurgeUnused     90          # Unused tokens
#PurgeHapaxes    30          # Tokens with less than 5 hits (hapaxes)
#PurgeHits1S    15          # Tokens with only 1 spam hit
#PurgeHits1I    15          # Tokens with only 1 innocent hit

#
# Purge configuration for SQL-based installations using purge.sql
#
PurgeSignature  off # Specified in purge.sql
PurgeNeutral   90
PurgeUnused    off # Specified in purge.sql
PurgeHapaxes   off # Specified in purge.sql
PurgeHits1S    off # Specified in purge.sql
PurgeHits1I    off # Specified in purge.sql

Opt out

ServerPort              10027
ServerQueueSize 32
ServerPID              /var/run/dspam/dspam.pid

ServerMode standard

ServerParameters        &amp;quot;--deliver=innocent -d %u&amp;quot;
ServerIdent             &amp;quot;localhost.localdomain&amp;quot;
	
DeliveryHost 127.0.0.1
DeliveryPort 10026
DeliveryIdent localhost
DeliveryProto SMTP
&lt;/pre&gt;


&lt;p&gt;Enregistrer et quitter.
Maintenant enregistrons les préférences des utilisateurs par défaut&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# nano /etc/dspam/default.prefs

trainingMode=TEFT
spamAction=tag
spamSubject=***SPAM***
signatureLocation=message
showFactors=on
optIn=off
optOut=on
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Activons Dspam&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# nano /etc/default/dspam
&lt;/pre&gt;


&lt;p&gt;START=yes&lt;/p&gt;


&lt;p&gt;Enregistrez et quittez.
Maintenant faisons les même réglages dans la base de données de Dspam&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# dspam_admin ch pref default trainingMode TEFT
[...]
bebeserv:~# dspam_admin ch pref default spamAction tag
[...]
bebeserv:~# dspam_admin ch pref default spamSubject &amp;quot;***SPAM***&amp;quot;
[...]
bebeserv:~# dspam_admin ch pref default enableBNR on
[...]
bebeserv:~# dspam_admin ch pref default enableWhitelist on
[...]
bebeserv:~# dspam_admin ch pref default statisticalSedation 5
[...]
bebeserv:~# dspam_admin ch pref default  signatureLocation headers
[...]
bebeserv:~# dspam_admin ch pref default whitelistThreshold 10
[...]
bebeserv:~# dspam_admin ch pref default showFactors on
[...]
&lt;/pre&gt;


&lt;p&gt;C'est terminer pour Dspam nous pouvons démarrer le démon&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# /etc/init.d/dspam start
[...]
&lt;/pre&gt;


&lt;p&gt;Il nous reste à coupler Dspam à Postfix.&lt;/p&gt;


&lt;p&gt;Commencez par préparer nos deux boites e-mail &lt;q&gt;« spam@bebenet.local »&lt;/q&gt; et &lt;q&gt;« ham@bebenet.local »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# cd /etc/postfix/conf.d/
bebeserv:/etc/postfix/conf.d# nano virtual_mailbox

spam@bebenet.local      bebenet.local/spam/
ham@bebenet.local       bebenet.local/ham/
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Rechargeons la base&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# postmap virtual_mailbox
&lt;/pre&gt;


&lt;p&gt;C'est deux boîtes e-mail sont fictive en fait et ne recevront jamais de messages. Elles seront couplé à Dspam et nous allons préparer ce couplage grâce à ce fichier&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# nano transport

spam@paradoxal.org      dspam-spam:
ham@paradoxal.org       dspam-ham:
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.&lt;/p&gt;


&lt;p&gt;Ce fichier va rediriger nos deux boites e-mail non pas vers le transport classique &lt;q&gt;« virtual »&lt;/q&gt; mais vers deux nouveaux transports que nous allons définir un peu plus loin.
Ces deux boites e-mail ne devrons pas être scannées par Dspam (logique) et nous allons aussi préparer un fichier qui va nous permettre de définir les boites à scanner et celle à ne pas scanner.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# nano dspam_filter_access

#les 2 boites à ne pas filtrer (celles où sont envoyé les emails pour l'apprentissage de Dspam)
/^(spam|ham)@.*$/ OK
#puis domaines qui n'ont que la vérification antivirus, dans notre cas, tous les autres domaines :
/^.*$/ FILTER dspam-filter:127.0.0.1:10027
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Voilà comme vous pouvez le voir ce dernier fichier utilise les expressions régulières, pour que Postfix puisse les comprendre nous allons devoir lui installer un complément&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# apt-get install postfix-pcre
[...]
&lt;/pre&gt;


&lt;p&gt;Voilà nos fichiers de configuration sont prêt, il faut maintenant définir les nouveaux transports dans Postfix&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix/conf.d# cd ..
bebeserv:/etc/postfix# nano master.cf
&lt;/pre&gt;


&lt;p&gt;A la fin du fichier rentrez ceci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
dspam-spam   unix    -       n       n       -       10      pipe
	flags=Rhq user=dspam argv=/usr/bin/dspam --user $sender --class=spam --source=error

dspam-ham   unix    -       n       n       -       10      pipe
	flags=Rhq user=dspam argv=/usr/bin/dspam --user $sender --class=innocent --source=error

dspam-filter unix - - n - 10 lmtp
	-o smtp_send_xforward_command=yes
	-o disable_mime_output_conversion=yes
	-o smtp_generic_maps=

localhost:10026 inet n - n - - smtpd
	-o content_filter=
	-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
	-o smtpd_helo_restrictions=
	-o smtpd_client_restrictions=
	-o smtpd_sender_restrictions=
	-o smtpd_recipient_restrictions=permit_mynetworks,reject
	-o mynetworks=127.0.0.0/8
	-o smtpd_authorized_xforward_hosts=127.0.0.0/8
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.&lt;/p&gt;


&lt;p&gt;Il nous reste plus qu'à dire à Postfix d'utiliser tout ceci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix# nano main.cf
&lt;/pre&gt;


&lt;p&gt;Rajoutez cette ligne&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
transport_maps = hash:/etc/postfix/conf.d/transport
&lt;/pre&gt;


&lt;p&gt;et modifiez celle-ci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
smtpd_recipient_restrictions =
	permit_mynetworks,
	permit_sasl_authenticated,
	reject_invalid_hostname,
	reject_unauth_destination,
	reject_unknown_sender_domain,
	reject_unknown_recipient_domain,
	reject_unauth_destination,
	check_recipient_access pcre:/etc/postfix/conf.d/dspam_filter_access
&lt;/pre&gt;



&lt;p&gt;Enregistrez et quittez.
Rechargeons la configuration de Postfix pour terminer le travail&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix# /etc/init.d/postfix reload
[...]
&lt;/pre&gt;


&lt;p&gt;Voilà c'est terminé, vous possédez maintenant un antispam, bien sûr il faudra lui apprendre à reconnaître les spams mais je ne doute pas que vous en serez très vite satisfait.&lt;/p&gt;


&lt;p&gt;Votre antispam est paramétrable par utilisateur ne l'oubliez pas&amp;nbsp;! Si l'un d'entre eux demande un tag différent c'est possible. Vous pouvez aussi voir les statistiques de Dspam par utilisateur pour voir son travail. Pour ceci regarder les commandes &lt;q&gt;« dspam_admin »&lt;/q&gt;, &lt;q&gt;« dspam_stats »&lt;/q&gt;.&lt;/p&gt;


&lt;p&gt;Pour voir les préférences par défaut&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix# dspam_admin list preference default
[...]
&lt;/pre&gt;


&lt;p&gt;Pour voir les statistiques d'un utilisateur&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix# dspam_stats -H user@bebenet.local
[...]
&lt;/pre&gt;


&lt;p&gt;Bientôt je ferais le tuto pour installer un antivirus email. Si aujourd'hui la majorité des emails reçu sont des virus (donc faire d'abord le tuto d'un antivirus aurais été mieux) et bien je pense que non. Dspam consomme tellement peu et reconnaît (pour l'instant) tellement bien les spams qu'il fait très bien le ménage que le besoin d'un antivirus ne se fait pas vraiment sentir.&lt;/p&gt;


&lt;p&gt;Une fois que vous aurez confiance en votre Dspam. Vous pourrez lui demander de ne pas vous transmettre les spams et ainsi à ce moment là branchez un antivirus sur votre Postfix. La consommation de ressources en sera bien moindre.&lt;/p&gt;


&lt;p&gt;A très bientôt&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/postfix# exit
logout
ALBAN@bebeserv:~$
&lt;/pre&gt;</description>
    
          <enclosure url="http://www.paradoxal.org/blog/public/tuto_debian/chapitre_8.pdf"
      length="99198" type="application/pdf" />
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/08/05/Serveur-Debian-Antispam-email#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/08/05/Serveur-Debian-Antispam-email#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/52</wfw:commentRss>
      </item>
    
  <item>
    <title>Serveur Debian - php et dotclear 2</title>
    <link>http://www.paradoxal.org/blog/post/2007/06/15/Serveur-Debian-php-et-dotclear-2</link>
    <guid isPermaLink="false">urn:md5:f5fc6443b860e16e0be85728355dcf23</guid>
    <pubDate>Fri, 15 Jun 2007 20:29:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Serveur Debian</category>
        <category>Apache</category><category>Dotclear</category><category>Linux</category><category>Mysql</category><category>PHP</category><category>Sécurité</category>    
    <description>&lt;p&gt;&lt;strong&gt;CHAPITRE 6&amp;nbsp;: PHP + DOCLEAR 2&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Maintenant que notre serveur web est installé, il serait bon de lui fournir un peu de dynamisme et rien de tel pour cela que d'installer PHP que je ne présenterai pas =).&lt;/p&gt;


&lt;p&gt;Commençons par installer &lt;q&gt;« php5 »&lt;/q&gt; et ce qu'il faut pour l'allier à &lt;q&gt;« apache2 »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo -i
Password:
bebeserv:~# apt-get update
[...]
bebeserv:~# apt-get install apache2-mpm-prefork libapache2-mod-php5 php5-common php5 php5-cli php5-mysql
[...]
&lt;/pre&gt;


&lt;p&gt;Maintenant comme à l'habitude coupons Apache le temps de le reconfigurer. Comme vous avez pu l'observer, nous avons changer la manière dont &lt;q&gt;« apache2 »&lt;/q&gt; gère ses processus. Nous sommes passé de &lt;q&gt;« apache2-mpm-worker »&lt;/q&gt; à &lt;q&gt;« apach2-mpm-prefork »&lt;/q&gt;. Bien que &lt;q&gt;« worker »&lt;/q&gt; soit plus rapide et offre une meilleure méthode de travail à &lt;q&gt;« apache2 »&lt;/q&gt;, &lt;q&gt;« php5 »&lt;/q&gt; requiert que &lt;q&gt;« apache2 »&lt;/q&gt; travail en &lt;q&gt;« prefork »&lt;/q&gt; encore aujourd'hui.
De même nous avons installé le minimum pour faire fonctionner notre configuration, c'est à dire &lt;q&gt;« php5 »&lt;/q&gt; lui même, &lt;q&gt;« php5 »&lt;/q&gt; en ligne de commande&amp;nbsp;: &lt;q&gt;« cli »&lt;/q&gt; et &lt;q&gt;« mysql »&lt;/q&gt; pour &lt;q&gt;« php5 »&lt;/q&gt;, bien que &lt;q&gt;« php5 »&lt;/q&gt; offre une couche d'abstraction totale pour l'accès au SGBD beaucoup de site sont encore construit autour de l'API mysql directement.&lt;/p&gt;


&lt;p&gt;Retournons donc à notre configuration. Configurons &lt;q&gt;« mpm-prefork »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# cd /etc/apache2
bebeserv:/etc/apache2# nano apache2.conf
&lt;/pre&gt;


&lt;p&gt;Changeons notre configuration en ceci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
# prefork MPM
&amp;lt;IfModule mpm_prefork_module&amp;gt;
	StartServers          5
	MinSpareServers       5
	MaxSpareServers      10
	MaxClients          150
	MaxRequestsPerChild 500
&amp;lt;/IfModule&amp;gt;

# worker MPM
#&amp;lt;IfModule mpm_worker_module&amp;gt;
#    StartServers          2
#    MaxClients          150
#    MinSpareThreads      25
#    MaxSpareThreads      75
#    ThreadsPerChild      25
#    MaxRequestsPerChild 500
#&amp;lt;/IfModule&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Les commentaires sont facultatifs, ils me servent à me rappeler que mon apache tourne en &lt;q&gt;« prefork »&lt;/q&gt;, comme je l'avais fais dans le chapitre précédent.
Enregistrez et quittez.
Maintenant mettons à jour quelques points comme la configuration de &lt;q&gt;« mod_dir »&lt;/q&gt;.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2# nano mods-avalable/dir.conf
&lt;/pre&gt;


&lt;p&gt;Modifier la configuration comme suit&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;IfModule mod_dir.c&amp;gt;
	DirectoryIndex index.php index.html index.cgi index.pl index.php index.xhtml
&amp;lt;/IfModule&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Maintenant configurons &lt;q&gt;« php5 »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2# cd /etc/php5/apache2
bebeserv:/etc/php5/apache2# nano php.ini
&lt;/pre&gt;


&lt;p&gt;Modifier comme suit&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
;;;;;;;;;;;;;;;;;;;;
; Language Options ;
;;;;;;;;;;;;;;;;;;;;

short_open_tag = Off
allow_call_time_pass_reference = Off
open_basedir = /home/nobody/default_apache
ignore_user_abort = On
realpath_cache_size=16k
realpath_cache_ttl=120
expose_php = Off

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

max_execution_time = 10
max_input_time = 10
	
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

error_reporting = E_ALL | E_STRICT
display_errors = On			; A passé à Off quand vous rendez votre site web public
log_errors = On
ignore_repeated_errors = On
error_log = /var/log/php5.log

;;;;;;;;;;;;;;;;;
; Data Handling ;
;;;;;;;;;;;;;;;;;

arg_separator.output = &amp;quot;&amp;amp;amp;&amp;quot;
register_long_arrays = Off
register_argc_argv = Off
magic_quotes_gpc = Off
default_mimetype = &amp;quot;text/html&amp;quot;
default_charset = &amp;quot;iso-8859-15&amp;quot;

;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;

allow_url_fopen = Off
default_socket_timeout = 10

;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

[date]
date.timezone = Europe/Paris

[mail function]
;SMTP = localhost
;smtp_port = 25
;sendmail_from = me@example.com
sendmail_path = sendmail -t -f apache2@bebeserv.local

[mysql]
mysql.connect_timeout = 10

[session]
session.use_only_cookies = 1
session.name = SESSID
session.cache_limiter =
session.hash_function = 1
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez. Maintenant PHP est configuré pour travailler avec Apache mais pas pour  fonctionner en ligne de commande.
Refaites donc la même chose pour le CLI&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2# cd ../cli
bebeserv:/etc/php5/cli# nano php.ini
&lt;/pre&gt;


&lt;p&gt;Mettez exactement les même paramètre à la différence de ceux-ci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
;open_basedir =
; ignore_user_abort = On
max_execution_time = 60
max_input_time = 10
memory_limit = 32M
log_errors = Off
file_uploads = Off
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Il nous reste à créer le fichier de log de PHP et de lui créer sa rotation&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# cd /var/log
bebeserv:/var/log# touch php5.log
bebeserv:/var/log# cd /etc/logrotate.d/
bebeserv:/etc/logrotate.d# nano php5
&lt;/pre&gt;


&lt;p&gt;Créez le fichier suivant&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
/var/log/php5.log {
		weekly
		missingok
		rotate 4
		compress
		delaycompress
		notifempty
		create 640 root root
}
&lt;/pre&gt;


&lt;p&gt;Voilà c'est terminer pour la configuration de PHP.
A l'heure actuelle avec la directive &lt;q&gt;« open_basedir »&lt;/q&gt;, PHP est enfermé dans &lt;q&gt;« /home/nobody/default_apache »&lt;/q&gt; pour chaque site que nous mettrons en place (et donc chaque virtual host) nous mettrons une directive &lt;q&gt;« open_basedir »&lt;/q&gt; dans le virtual host afin que PHP soit ouvert uniquement pour ce site. Ainsi nous mettrons d'autre élément de configuration PHP dans la configuration des vhosts. Cette méthode offre le grand avantage d'offrir au dessus de la configuration générale de PHP beaucoup de finesse pour ajuster certain paramètre notamment de sécurité.&lt;/p&gt;


&lt;p&gt;C'est ce que nous allons voir tout de suite en installant Dotclear 2. Un exemple simple et facile afin d'illustrer ce que nous venons de mettre en place durant les 4 derniers chapitres.&lt;/p&gt;


&lt;p&gt;Mais avant de nous lancer, vérifions le bon fonctionnement de PHP et pour ceci dans notre vhost &lt;q&gt;« default_apache »&lt;/q&gt; créons un fichier &lt;q&gt;« php.php »&lt;/q&gt; qui nous donnera le phpinfo.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/logrotate.d# cd /home/nobody/default_apache
bebeserv:/home/nobody/default_apache# nano php.php
&lt;/pre&gt;


&lt;p&gt;Mettez ceci dans votre fichier&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;?php
phpinfo();
?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Donnez les bons droits à votre fichier&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# chown nobody php.php
&lt;/pre&gt;


&lt;p&gt;Rechargeons la configuration &lt;q&gt;« apache2 »&lt;/q&gt; ainsi que &lt;q&gt;« php5 »&lt;/q&gt;.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# apace2ctl graceful
[...]
&lt;/pre&gt;


&lt;p&gt;Maintenant observons notre phpinfo&amp;nbsp;:
Depuis un poste du réseau local allez à cette adresse&amp;nbsp;: &lt;q&gt;« http://10.0.0.2/php.php »&lt;/q&gt;.&lt;/p&gt;


&lt;p&gt;Passons à la partie facultative de ce chapitre&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;L'installation de Dotclear 2&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Sachant que vous avez votre propre nom de domaine ici nous ferons une installation pour le réseau locale. il faut savoir que Dotclear ne requiert pas mais serait mieux avec la librairie GD2. !Nous allons donc l'installer.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# apt-get install php5-gd
[...]
&lt;/pre&gt;


&lt;p&gt;Rechargeons la configuration de PHP pour intégré GD&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# apace2ctl graceful
[...]
&lt;/pre&gt;


&lt;p&gt;Vous pouvez à nouveau regarder le phpinfo pour observer que GD est bien intégré dans sa version 2.&lt;/p&gt;


&lt;p&gt;Maintenant nous allons préparer l'arborescence pour notre futur site.
Afin de ne pas refaire la même manipulation à chaque fois, nous allons généré un squelette qu'il suffira de recopier&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/default_apache# cd ..
bebeserv:/home/nobody# mkdir skeleton
bebeserv:/home/nobody# cd skeleton
bebeserv:/home/nobody/skeleton# mkdir backup html includes logs sessions tmp
bebeserv:/home/nobody/skeleton# cd logs
bebeserv:/home/nobody/skeleton/logs# touch apache2.log php5.log
bebeserv:/home/nobody/skeleton/logs# cd ../../
bebeserv:/home/nobody# chown -R nobody skeleton
&lt;/pre&gt;


&lt;p&gt;Voilà une bonne chose de faite, maintenant créons la véritable arborescence de notre site que j'appellerai ici &lt;q&gt;« www.bebeserv.local »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody# cp -ra skeleton www.bebeserv.local
&lt;/pre&gt;


&lt;p&gt;Nous devons dorénavant nous créer un vhost pour pouvoir exploiter tout ceci.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody# cd /etc/apache2/site-available
bebeserv:/etc/apache2/site-available# nano www.bebeserv.local
&lt;/pre&gt;


&lt;p&gt;Créez le fichier suivant&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;VirtualHost *&amp;gt;
		ServerSignature Off
		ServerAdmin webmaster@bebeserv.local
		ServerName www.bebeserv.local
		ServerAlias bebeserv.local
		ServerAlias 10.0.0.2

		DocumentRoot /home/nobody/www.bebeserv.local/html/

		&amp;lt;Directory /home/nobody/www.bebeserv.local/html/&amp;gt;
				AllowOverride All
				Order allow,deny
				allow from all
		&amp;lt;/Directory&amp;gt;

		&amp;lt;IfModule mod_php5.c&amp;gt;
				php_admin_value open_basedir /home/nobody/www.bebeserv.local
				php_admin_value error_log /home/nobody/www.bebeserv.local/logs/php5.log
				php_admin_value upload_tmp_dir /home/nobody/www.paradoxal.org/tmp
				php_admin_value include_path .:/home/nobody/www.bebeserv.local/includes
				php_admin_value session.save_path /home/nobody/www.bebeserv.local/sessions
				php_admin_value sendmail_path &amp;quot;sendmail -t -f www@bebeserv.local&amp;quot;
		&amp;lt;/IfModule&amp;gt;

		CustomLog /home/nobody/www.bebeserv.local/logs/apache2.log combined
&amp;lt;/VirtualHost&amp;gt;
&lt;/pre&gt;



&lt;p&gt;Enregistrez et quittez.
J'ai mis en alias de serveur l'adresse IP de la machine afin qu'on puisse accéder au site localement pour le tester.
Autorisons ce vhost&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2/site-available# cd ../site-enabled
bebeserv:/etc/apache2/site-enabled# ln -s ../site-available/www.bebeserv.local 100-www.bebeserv.local
&lt;/pre&gt;


&lt;p&gt;Je garde une numérotation devant les nom des vhosts afin de définir l'ordre de chargement de ces derniers et ainsi leur priorité dans apache.&lt;/p&gt;


&lt;p&gt;Puisque nous y sommes, ouvrons nous un compte FTP afin de compléter l'ouverture de notre futur blog&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/apache2/site-enabled# cd /etc/vsftpd/user_conf
bebeserv:/etc/vsftpd/user_conf# cp example www.bebeserv.local
&lt;/pre&gt;


&lt;p&gt;Dans le fichier &lt;q&gt;« www.bebeserv.local »&lt;/q&gt; mettez les options qui vous plaisent et surtout&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
local_root=/home/nobody/www.bebeserv.local
&lt;/pre&gt;


&lt;p&gt;Nous pouvons ajouter notre utilisateur &lt;q&gt;« www.bebeserv.local »&lt;/q&gt; à la base de donnée de &lt;q&gt;« vsftpd »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/vsftpd/user_conf# cd ..
bebeserv:/etc/vsftpd# nano userdb
&lt;/pre&gt;


&lt;p&gt;Entrez les lignes&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
www.bebeserv.local
votre-mot-de-passe
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez puis recharger la base de donner de &lt;q&gt;« vsftpd »&lt;/q&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/vsftpd# vsftpd-makedb
&lt;/pre&gt;


&lt;p&gt;Tout est OK, rechargeons aussi la configuration de apache&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/vsftpd# apache2ctl graceful
&lt;/pre&gt;


&lt;p&gt;Maintenant téléchargeons Dotclear 2&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/vsftpd# cd /home/nobody/www.bebeserv.local/html
bebeserv:/home/nobody/www.bebeserv.local/html# wget	http://download.dotclear.net/latest-2.0.tar.gz
[...]
&lt;/pre&gt;


&lt;p&gt;Décompressez l'archive&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/www.bebeserv.local/html# tar -xvzf dotclear-2.0-beta6.tar.gz
[...]
&lt;/pre&gt;


&lt;p&gt;Un dossier &lt;q&gt;« dotclear »&lt;/q&gt; est créé, donnons lui les bons droits (ainsi qu'à tout ce qu'il contient)&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/www.bebeserv.local/html# chown -R nobody.nogroup dotclear
&lt;/pre&gt;


&lt;p&gt;Supprimons le tarball&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/www.bebeserv.local/html# rm dotclear-2.0-beta6.tar.gz
&lt;/pre&gt;


&lt;p&gt;Nous pouvons changer le nom du répertoire &lt;q&gt;« dotclear »&lt;/q&gt; par &lt;q&gt;« blog »&lt;/q&gt; par exemple&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/www.bebeserv.local/html# mv dotclear blog
&lt;/pre&gt;


&lt;p&gt;Voilà c'est presque fini. Dotclear aura besoin d'une base de données, créons donc un utilisateur et une base pour Dotclear.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/www.bebeserv.local/html# mysql -u bebeserv -p
Entre password: 
[...]

mysql&amp;gt; create database bebeserv_dc2;
Query OK, 1 row affected (0.00 sec)

mysql&amp;gt; grant create, delete, insert, update, select, index, lock tables, alter, drop on bebeserv_dc2.* to 'dotclear2'@'localhost' identified by 'un-mot-de-passe';
Query OK, 0 rows affected (0.01 sec)

mysql&amp;gt; flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; quit
Bye
bebeserv:/home/nobody/www.bebeserv.local/html#
&lt;/pre&gt;


&lt;p&gt;Voilà c'est terminé, rendez vous sur la page &lt;q&gt;« http://10.0.0.2/blog/admin/install/ »&lt;/q&gt; pour terminer l'installation.
Pour le wizard de configuration Dotclear voici ce que vous aurez à entrer&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
hote de la base : localhost
base de donnée bebeserv_dc2
utilisateurs de la base de donnée : dotclear2
&lt;/pre&gt;


&lt;p&gt;Mémorisez bien le mot de passe qui vous sera fourni&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Voilà c'est terminé pour ce chapitre, vous avez intérêt à produire de bon billet maintenant&amp;nbsp;!&lt;/p&gt;

&lt;pre&gt;
bebeserv:/home/nobody/www.bebeserv.local/html# exit
logout
ALBAN@bebeserv:~$
&lt;/pre&gt;</description>
    
          <enclosure url="http://www.paradoxal.org/blog/public/tuto_debian/chapitre_6.pdf"
      length="102096" type="application/pdf" />
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/06/15/Serveur-Debian-php-et-dotclear-2#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/06/15/Serveur-Debian-php-et-dotclear-2#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/44</wfw:commentRss>
      </item>
    
  <item>
    <title>Serveur Debian - mysql</title>
    <link>http://www.paradoxal.org/blog/post/2007/06/09/Serveur-Debian-mysql</link>
    <guid isPermaLink="false">urn:md5:accec290a9c19e675de2958569e34599</guid>
    <pubDate>Sat, 09 Jun 2007 15:03:00 +0200</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Serveur Debian</category>
        <category>Innodb</category><category>Linux</category><category>Mysql</category><category>Mysqldump</category><category>Sécurité</category>    
    <description>&lt;p&gt;&lt;strong&gt;CHAPITRE 4&amp;nbsp;: &lt;a href=&quot;http://www.paradoxal.org/blog/tag/mysql&quot;&gt;MYSQL&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Pour nos futurs sites internet, nous allons avoir besoin de certain élément, nous possédons déjà le FTP pour créer des utilisateurs à notre guise, nous allons aussi avoir besoin d'une base de données. Aujourd'hui nous allons donc nous occuper de Mysql.&lt;/p&gt;


&lt;p&gt;Commençons par installer les paquets nécessaires&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ALBAN@bebeserv:~$ sudo -i
Password:
bebeserv:~# apt-get update
[...]
bebeserv:~# apt-get install mysql-client-5.0 mysql-server-5.0 mysql-common
[...]
&lt;/pre&gt;


&lt;p&gt;Ceci fait comme pour le FTP commencer par couper le serveur tout frais installer.&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# /etc/init.d/mysql stop
[...]
&lt;/pre&gt;


&lt;p&gt;Éditons la configuration&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# cd /etc/mysql
bebeserv:/etc/mysql# nano my.cnf
[...]
&lt;/pre&gt;


&lt;p&gt;Dans &lt;q&gt;« [mysqld] »&lt;/q&gt;
D'abord la langue&amp;nbsp;! ( très important :) )&lt;/p&gt;

&lt;pre&gt;
language        = /usr/share/mysql/french
&lt;/pre&gt;


&lt;p&gt;Puis puisque dans mon cas je n'ouvrirai pas Mysql à l'extérieur je laisse le&lt;/p&gt;

&lt;pre&gt;
skip-networking
bind-address à 127.0.0.1
&lt;/pre&gt;


&lt;p&gt;Pour enregistrer les mauvaises requêtes (coûteuses en performance).&lt;/p&gt;

&lt;pre&gt;
log_slow_queries        = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes
&lt;/pre&gt;


&lt;p&gt;Commentez les lignes suivantes, elles sont inutiles car nous ne feront pas de réplication Mysql.&lt;/p&gt;

&lt;pre&gt;
#log_bin                        = /var/log/mysql/mysql-bin.log
#expire_logs_days       = 10
#max_binlog_size         = 100M
&lt;/pre&gt;


&lt;p&gt;Puisque je compte utiliser Dotclear 2 qui nécessite le moteur &lt;q&gt;« &lt;a href=&quot;http://www.paradoxal.org/blog/tag/innodb&quot;&gt;innodb&lt;/a&gt; »&lt;/q&gt;, je ne décommenterai pas la ligne suivante&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
#skip-innodb
&lt;/pre&gt;


&lt;p&gt;Dans la section &lt;q&gt;« [&lt;a href=&quot;http://www.paradoxal.org/blog/tag/mysqldump&quot;&gt;mysqldump&lt;/a&gt;] »&lt;/q&gt; je rajoute ces options&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
skip-opt
add-drop-table
add-locks
create-options
set-charset
disable-keys
complete-insert
&lt;/pre&gt;


&lt;p&gt;Enregistrez et quittez.
Maintenant vous pouvez relancer Mysql.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/mysql# /etc/init.d/mysql start
[...]
&lt;/pre&gt;


&lt;p&gt;Maintenant il va falloir sécuriser Mysql car sont installation d'origine est plein de trou.
Entrez dans la console Mysql&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
bebeserv:~# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.0.32-Debian_7etch1-log Debian etch distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql&amp;gt;

Maintenant que vous êtes dans la console, tapez les commandes suivantes :

mysql&amp;gt; use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql&amp;gt; select User,Host,Password from user;
+------------------+-----------+-------------------------------------------+
| User             | Host      | Password                                  |
+------------------+-----------+-------------------------------------------+
| root             | localhost |                                           |
| root             | bebeserv  |                                           |
| debian-sys-maint | localhost | *23C6BA678DB0427E1A213D86DF1819114D2A80FD |
+------------------+-----------+-------------------------------------------+
&lt;/pre&gt;


&lt;p&gt;Nous observons un compte &lt;q&gt;« root »&lt;/q&gt; sous le nom &lt;q&gt;« bebeserv »&lt;/q&gt; qui ne servira pas puisque nous utiliserons uniquement Mysql en local. Nous allons donc le supprimé.&lt;/p&gt;

&lt;pre&gt;
mysql&amp;gt; delete from user where Host &amp;lt;&amp;gt; &amp;quot;localhost&amp;quot;;
Query OK, 1 row affected (0.00 sec)

mysql&amp;gt; select User,Host,Password from user;
+------------------+-----------+-------------------------------------------+
| User             | Host      | Password                                  |
+------------------+-----------+-------------------------------------------+
| root             | localhost |                                           |
| debian-sys-maint | localhost | *23C6BA678DB0427E1A213D86DF1819114D2A80FD |
+------------------+-----------+-------------------------------------------+
2 rows in set (0.00 sec)
&lt;/pre&gt;


&lt;p&gt;Maintenant modifions le compte &lt;q&gt;« root »&lt;/q&gt; pour plus de sécurité et renommons le au passage (remplacé **** par votre mot de passe dans la seconde commande):&lt;/p&gt;

&lt;pre&gt;
mysql&amp;gt; rename user root@localhost to bebeserv@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql&amp;gt; update user set password=password('****') where user = &amp;quot;bebeserv&amp;quot;;
Query OK, 1 row affected (0.00 sec)
Enregistrements correspondants: 1  Modifiés: 1  Warnings: 0

mysql&amp;gt; select User,Host,Password from user;
+------------------+-----------+-------------------------------------------+
| User             | Host      | Password                                  |
+------------------+-----------+-------------------------------------------+
| bebeserv         | localhost | *A7581E9CC269EDA8C16D974E1032E393B33DC199 |
| debian-sys-maint | localhost | *23C6BA678DB0427E1A213D86DF1819114D2A80FD |
+------------------+-----------+-------------------------------------------+
2 rows in set (0.00 sec)
&lt;/pre&gt;


&lt;p&gt;Parfait&amp;nbsp;! Appliquons tout ça&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
mysql&amp;gt; flush privileges;
Query OK, 0 rows affected (0.00 sec)
&lt;/pre&gt;


&lt;p&gt;Maintenant vérifions les bases présentes&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
mysql&amp;gt; show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
+--------------------+
2 rows in set (0.00 sec)
&lt;/pre&gt;


&lt;p&gt;Parfait encore&amp;nbsp;! Par défaut Mysql créer un utilisateur vide et une base test que nous aurions du supprimer car inutile voir dangereux pour l'utilisateur sans nom. Mais l'installation dans Debian était déjà propre.&lt;/p&gt;


&lt;p&gt;Maintenant quittons la console et tentons de nous loguer en &lt;q&gt;« root »&lt;/q&gt; (&lt;q&gt;« bebeserv »&lt;/q&gt; excuser moi !).&lt;/p&gt;

&lt;pre&gt;
mysql&amp;gt; exit
Bye

bebeserv:/etc/mysql# mysql -u bebeserv -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.0.32-Debian_7etch1-log Debian etch distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Parfait&amp;nbsp;! nous pouvons quitter sachant que tout fonctionne bien&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
mysql&amp;gt; exit
Bye
&lt;/pre&gt;


&lt;p&gt;Voilà ce chapitre est terminé.&lt;/p&gt;

&lt;pre&gt;
bebeserv:/etc/mysql# exit
logout
ALBAN@bebeserv:~$
&lt;/pre&gt;</description>
    
          <enclosure url="http://www.paradoxal.org/blog/public/tuto_debian/chapitre_4.pdf"
      length="86938" type="application/pdf" />
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/06/09/Serveur-Debian-mysql#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/06/09/Serveur-Debian-mysql#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/42</wfw:commentRss>
      </item>
    
  <item>
    <title>Recherche Développeur LAMP pour CDI</title>
    <link>http://www.paradoxal.org/blog/post/2007/03/29/34-recherche-developpeur-lamp-pour-cdi</link>
    <guid isPermaLink="false">urn:md5:63219b26e942b8860780058e141f3290</guid>
    <pubDate>Thu, 29 Mar 2007 21:15:00 +0000</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Actualité</category>
        <category>2007</category><category>CSS</category><category>Eclipse</category><category>Emploi</category><category>FTP</category><category>Javascript</category><category>Linux</category><category>Mysql</category><category>PHP</category><category>Windows</category><category>XHTML</category>    
    <description>&lt;p&gt;Et oui me revoilà après près de 2 semaines d'absence (et de lourds labeurs)&amp;nbsp;! Vous ne croyez tout de même pas que j'allais laisser tomber ce blog ainsi. Je viens chercher votre aide et un nouveau collègue (plus de un ?). Alors conformément à la conformitude je pose mon annonce&amp;nbsp;:&lt;/p&gt;    &lt;p&gt;Vous êtes développeur LAMP (Linux Apache Php Mysql), très motivé et professionnel dans le développement de vos applications PHP. Vous souhaitez intégré une équipe jeune, dynamique et performante, vous souhaitez intégré une société en plein essort, vous occupé de projet complet alors ce poste vous attends.&lt;/p&gt;
&lt;p&gt;J'ai besoin de quelqu'un ayant au moins une expérience dans le domaine notament dans l'e-commerce car vous aurez à travailler sur des sites générant plusieurs millions de visiteurs unique par mois.&lt;/p&gt;
&lt;p&gt;J'ai besoin de quelqu'un qui maitrise les outils de bases. C'est à dire le bloc note pour coder (accessoirement dreamweaver peut vous aider). Vous connaissez donc le bloc note, dreamweaver, eclipse, photoshop serais un plus. Vous travaillez aussi bien sous Windows que sous Linux. Vous savez administrer les serveur Apache et Mysql.&lt;/p&gt;
&lt;p&gt;Vous matriser les concepts et normes élémentaires nécessaires au développeur, bash, Javascript (AJAX), CSS2, XHTML, accessibilité, XML (RSS/ATOM), url rewriting, putty, gestion de système de cache, DNS, emailing...&lt;/p&gt;
&lt;p&gt;J'attends de vous que vous soyer pointilleux et précis dans votre travail. Vous n'êtes pas là pour assurer une charge de travail complémentaire mais pour apporter votre pierre à l'édifice et votre savoir.&lt;/p&gt;
&lt;p&gt;Vous avez une terrible envie que je sois votre chef =p&lt;/p&gt;
&lt;p&gt;Donc je résume, vous estimez pouvoir me convaincre alors n'hésiter pas&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;Je recherhe aussi un intégrateur pour donner vie au développement produit dans nos bureaux. Vous maitriser le XHTML, vous maitriser photoshop, vous vous senter l'ame d'un rédacteur, vous êtes à l'aise avec un client FTP vous souhaiter contribuer à la bonne qualité de nos sites alors contactez moi aussi.&lt;/p&gt;
&lt;p&gt;Le salaire sera agréable bien sur en fonction de vos compétence et expérience. Les postes à pouvoir sont bien entendu des CDI dans leur finalité.&lt;/p&gt;
&lt;p&gt;Pour me joindre rien de plus simple envoyer moi un petit email à seza [ @ ] paradoxal [ dot ] org&lt;/p&gt;
&lt;p&gt;J'espère que tous les lecteurs même non intéresser relaieront cette information de première urgence.&lt;/p&gt;
&lt;p&gt;Merci beaucoup.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/03/29/34-recherche-developpeur-lamp-pour-cdi#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/03/29/34-recherche-developpeur-lamp-pour-cdi#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/32</wfw:commentRss>
      </item>
    
  <item>
    <title>Un petit bug MySql</title>
    <link>http://www.paradoxal.org/blog/post/2007/03/11/31-un-petit-bug-mysql</link>
    <guid isPermaLink="false">urn:md5:6c8a21ba82bc044712f2b938a1b155a9</guid>
    <pubDate>Sun, 11 Mar 2007 19:05:00 +0000</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Bug</category>
        <category>Mysql</category>    
    <description>&lt;p&gt;Le post d'hier as disparu après un crash mysql je l'ai donc reposté en vitesse. Je m'excuse pour ce petit désagrément. Mon serveur semble crashé de temps en temps à cause de l'appli Cacti qui tourne sur mon serveur. Cette fois çi à été la fois de trop puisque la table des post de dotclear à été définitivement corrompu et mysqlcheck n'a su la réparée. J'ai donc remis la dernière sauvegarde de la veille en vitesse et je repost mon billet d'hier aujourd'hui.&lt;/p&gt;    &lt;p&gt;Je ne sais encore pourquoi cacti fait planté mon serveur mysql. C'est la 4ème fois que je suis obligé de redémaré mon serveur mysql après un tel crash.&lt;/p&gt;
&lt;p&gt;Je vais essayé de trouver le pourquoi du comment mais je ne pense malheuresement pas trouver la source du problème.&lt;/p&gt;
&lt;p&gt;Si vosu avez eu de telle mésaventure, je vous invite à partager vos infos ^^.&lt;/p&gt;
&lt;p&gt;Merci.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/03/11/31-un-petit-bug-mysql#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/03/11/31-un-petit-bug-mysql#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/29</wfw:commentRss>
      </item>
    
  <item>
    <title>Dotclear 2.0 passe en Beta 6</title>
    <link>http://www.paradoxal.org/blog/post/2007/03/10/30-dotclear-20-passe-en-le-beta-6</link>
    <guid isPermaLink="false">urn:md5:e98290e9396cc665dfa5a54ee9fa3b52</guid>
    <pubDate>Sat, 10 Mar 2007 19:22:00 +0000</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Actualité</category>
        <category>2007</category><category>Communauté</category><category>Dotclear</category><category>Mysql</category><category>PHP</category><category>Spam</category>    
    <description>&lt;p&gt;Malgré que je sois sous Dotclear 1 je suis le développement de Dotclear 2 avec attention tellement j'apprécie le système. aujourd'hui j'ai donc testé Dotclear 2 beta 6 sorti il y a peu. Le changement par rapport à DC1 est radical...&lt;/p&gt;    &lt;p&gt;DC2 malgré le fait qu'il soit encore en version beta fonctionne très bien. Certes il y a encore des petites imperfections mais dans la globalité cette nouvelle mouture est fort bien réussi.&lt;/p&gt;
&lt;p&gt;De nombreuses nouveautés sont présentes, la navigation peut être enrichie de widgets, le multi blog est supporté en natif, le système antispam, point crucial aujourd'hui, est très bien conçu avec 5 filtres différents cumulable. J'en passe énormément sur les innovations pour vous laisse l'envie et le plaisir d'en découvrir plus quand vous l'essaierez vous même.&lt;/p&gt;
&lt;p&gt;Alors pourquoi je ne suis pas encore passer sous DC2&amp;nbsp;? C'est ici que ça coince. DC2 est gourmand en pré requis. C'est à dire que qu'il vous faut utilisé PHP5 avec la librairie MySql car Dotclear 2 visiblement s'il a été fait en PHP5 n'utilise pas PDO c'est très dommage d'autant plus que Dotclear supporte maintenant aussi Postgres. Deuxième point noir mais facilement rattrapable par contre il faut que vous installiez InnoDB sur votre serveur MySql.&lt;/p&gt;
&lt;p&gt;Donc pour résumé n'ayant que PHP4 et n'ayant pas activer Innodb sur mon serveur, il faut d'abord que je reprenne le serveur pour pouvoir installer Dotclear 2. Sachant que j'ai des applis qui tournent toujours en PHP4 en dehors du blog, il faudrait que je migre toutes mes autres applis.. Pas une mince à faire puisque l'une d'elle est un projet sur lequel je bosse depuis près d'un an maintenant.&lt;/p&gt;
&lt;p&gt;Ça sera donc pour plus tard pour moi.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/03/10/30-dotclear-20-passe-en-le-beta-6#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/03/10/30-dotclear-20-passe-en-le-beta-6#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/28</wfw:commentRss>
      </item>
    
  <item>
    <title>Eclipse - PDT vs PHPEclipse - à la recherche de plugin's</title>
    <link>http://www.paradoxal.org/blog/post/2007/03/04/29-eclipse-pdt-vs-phpeclipse-a-la-recherche-de-plugin-s</link>
    <guid isPermaLink="false">urn:md5:4879eca69a5927af7a66678774fb16eb</guid>
    <pubDate>Sun, 04 Mar 2007 22:34:00 +0000</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Actualité</category>
        <category>2007</category><category>Communauté</category><category>CSS</category><category>Eclipse</category><category>FTP</category><category>Java</category><category>Javascript</category><category>Mysql</category><category>PHP</category><category>XHTML</category>    
    <description>&lt;p&gt;Depuis peu j'ai enfin décidé de me mettre à la plateforme &lt;a title=&quot;Page d'accueil de la plateforme Eclipse&quot; href=&quot;http://www.eclipse.org/&quot; hreflang=&quot;fr&quot;&gt;Eclipse&lt;/a&gt; notamment pour codé en &lt;a title=&quot;page d'accueil du site PHP&quot; href=&quot;http://www.php.net/&quot; hreflang=&quot;fr&quot;&gt;PHP&lt;/a&gt; avec le plugins &lt;a title=&quot;page d'accueil du projet PDT pour Eclipse&quot; href=&quot;http://www.eclipse.org/pdt/&quot; hreflang=&quot;fr&quot;&gt;PDT&lt;/a&gt; encore appelé PHP IDE supporté par la société &lt;a title=&quot;page d'accueil du site de la société Zend&quot; href=&quot;http://www.zend.com/&quot; hreflang=&quot;fr&quot;&gt;Zend&lt;/a&gt;. J'avais auparavant testé aussi le plugins &lt;a title=&quot;page d'accueil du plugin's PHPEclipse pour Eclipse&quot; href=&quot;http://www.phpeclipse.de/&quot; hreflang=&quot;fr&quot;&gt;PHPEclipse&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;PDT est donc tout nouveau tout neuf et encore en phase de développement puisque la version déployée actuellement est le 0.7 RC2. La version 0.7 finale de PDT devrai arrivé courant de ce mois ci. A l'heure actuelle je trouve cette version moins complète que PHPEclipse, la coloration syntaxique est pauvre par exemple néanmoins elle s'intègre mieux que PHPEclipse. Ainsi les exécutable php4 et php5 sont déjà présent et directement intégré, vous pouvez aussi du coup directement tester votre code dans la perspective PHPDebug fournie dans PDT, jouer avec les points d'arrêts etc... C'est ce qui faisait défaut à PHPEclipse ou devait être intégré à la main.&lt;/p&gt;
&lt;p&gt;Si dans un premier temps cette intégration complète de PHP dans Eclipse grâce à PDT est un avantage, il peut s'avérer très vite désavantageux. Je n'ai pas vraiment cherché à l'heure actuelle mais je sens le problème se profiler. Comment ajouter des éléments à PDT tel que &lt;a href=&quot;http://10.0.0.151/www.xdebug.org&quot; hreflang=&quot;fr&quot;&gt;XDebug&lt;/a&gt; pour faire du profiling etc...&lt;/p&gt;
&lt;p&gt;Côté PHPEclipse j'ai été directement coincé pour le debug car si PHPEclipse propose une configuration facile pour &lt;a href=&quot;http://www.apachefriends.org/fr/xampp.html&quot; hreflang=&quot;fr&quot;&gt;XAMPP&lt;/a&gt;, j'ai voulu installer &lt;a href=&quot;http://dd.cron.ru/dbg/&quot; hreflang=&quot;fr&quot;&gt;PHP DBG&lt;/a&gt; et celui ci ne s'accouple pas encore sur la version 5.2 de PHP.&lt;/p&gt;
&lt;p&gt;Voici les distributions que j'ai testé&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;PDT all-in-one :&lt;/strong&gt; contient Eclipse 3.2.2 ainsi que PDT et tout les plugins nécessaire au bon fonctionnement de PDT. A l'heure actuelle la page de téléchargement de PDT depuis Eclipse &lt;a href=&quot;http://www.eclipse.org/pdt/downloads.php&quot; hreflang=&quot;fr&quot;&gt;http://www.eclipse.org/pdt/downloads.php&lt;/a&gt; ne fonctionne pas, vous trouvé la distro sur le site de zend ici&amp;nbsp;: &lt;a href=&quot;http://www.zend.com/pdt&quot; hreflang=&quot;fr&quot;&gt;http://www.zend.com/pdt&lt;/a&gt; seulement l'adresse de mise à jour de PDT (dans find and install) ne fonctionne pas, il vous faudra recréer un lien vers&amp;nbsp;: &lt;a href=&quot;http://downloads.zend.com/pdt&quot; hreflang=&quot;fr&quot;&gt;http://downloads.zend.com/pdt&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eclipse seul et ajout de PDT à la main :&lt;/strong&gt; opération pas forcément évidente à faire que si vous possédez déjà un Eclipse bien installer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eclipse seul et ajout de PHPEclipse à la main :&lt;/strong&gt; Plus facile que PDT mais pour la peine il fait ajouter d'autre plugin's pour complété un peu votre distribution.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;EasyEclipse for PHP :&lt;/strong&gt; Distro tout faîte avec PHPEclipse. Elle est très simple d'installation avec beaucoup de plugins (peut être un peu trop de bazar dans Eclipse pour la peine). Une manière efficace de découvrir Eclipse sans passé des heure à comprendre comment il fonctionne. &lt;a href=&quot;http://www.easyeclipse.org/site/distributions/php.html&quot; hreflang=&quot;fr&quot;&gt;EasyEclipse for PHP c'est ici&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Jusqu'à maintenant celle qui me satisfait le plus est PDT all-in-one. Bien que par exemple EasyEclipse for PHP soit tout aussi satisfaisante en elle même, je m'y retrouve mieux dans cette première et j'espère beaucoup des futures versions préparer par zend. Si celle ci doit devenir le standard, autant s'y mettre dès maintenant. (Serais-je conformiste ?).&lt;/p&gt;
&lt;p&gt;Je tiens à mettre une série de plugin's que j'ai installé pour complété cette distro&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Hash ME :&lt;/strong&gt; permet de généré des hash type md5, sha-1 etc... pratique pour tester vos applications qui utilise les hashs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi Clipboard :&lt;/strong&gt; permet de garder en mémoire vos copier-coller. Très utile&amp;nbsp;!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Regex tester :&lt;/strong&gt; permet de tester vos regex, très bien construit mais payant. Vous pouvez obtenir une licence pour 5 euros via paiement par Paypal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL explorer :&lt;/strong&gt; afin de parcourir vos tables et les requêter sans quitter Eclipse. Pour l'utiliser avec MySql il vous faudra télécharger le driver java adéquat ici&amp;nbsp;: &lt;a title=&quot;page de téléchargement du driver mysql pour le plugins SQL explorer&quot; href=&quot;http://www.mysql.com/products/connector/j/&quot; hreflang=&quot;fr&quot;&gt;http://www.mysql.com/products/connector/j/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Webdav an FTP :&lt;/strong&gt; pour uploader vos sites et les synchroniser simplement&amp;nbsp;: &lt;a title=&quot;page d'accueil du projet webdav and ftp pour Eclipse&quot; href=&quot;http://www.eclipse.org/eclipse/platform-team/target.php&quot; hreflang=&quot;fr&quot;&gt;http://www.eclipse.org/eclipse/platform-team/target.php&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tout ça serais trop beau si il n'y avais pas eu quelques contraintes. Etant donné que je ne connais pas encore bien Eclipse il y va fort que la source des problèmes soit moi même. J'ai ajouter un dictionnaire français et ajouter le spell checker, beaucoup de mot même français sont mis en erreur. Je n'arrive pas non plus à obtenir des propositions de corrections et tous les éléments du code (mot clé, fonction ...) sont mis aussi en erreur. Ce qui n'est pas idéal j'ai donc été contraint de l'enlever. Malgré l'installation de WST incluse dans PDT je trouve que les fonctionnalité apportée sont très pauvre. Pas d'auto complétion du code pour Javascript ni CSS. La coloration syntaxique pour le Javascript est très pauvre.&lt;/p&gt;
&lt;p&gt;Il resterait beaucoup à dire mais pour ceci il faudrait que je sois un utilisateur un peu plus avancé pour assoir beaucoup de dire que je pourrai faire. Pour l'instant je souhaiterai perfectionner mon utilisation et aussi utiliser les bons outils donc si vous avez des astuces, solutions, plugin's à me présenter j'en serai ravi&amp;nbsp;!&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/03/04/29-eclipse-pdt-vs-phpeclipse-a-la-recherche-de-plugin-s#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/03/04/29-eclipse-pdt-vs-phpeclipse-a-la-recherche-de-plugin-s#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/27</wfw:commentRss>
      </item>
    
  <item>
    <title>MySql - round() - déconseillé</title>
    <link>http://www.paradoxal.org/blog/post/2007/02/25/28-mysql-rand-deconseille</link>
    <guid isPermaLink="false">urn:md5:616a6ad835acaf5764cf844ef7242ec4</guid>
    <pubDate>Sun, 25 Feb 2007 02:20:00 +0000</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Programmation</category>
        <category>Mysql</category>    
    <description>&lt;p&gt;J'ai découvert récemment que la fonction round() dans MySql n'était pas fiable sur les ciffres exactement entre deux entiers.&lt;/p&gt;    &lt;p&gt;Explication&amp;nbsp;: pour faire un arrondi en mysql il vient tout bonnement à l'idée d'utiliser la fonction round(). Or comme j'ai pu en faire l'expérience d'un server à l'autre cette fonction peut amener à des résultats différents pour la même requête.&lt;/p&gt;
&lt;p&gt;Dixit MySql&amp;nbsp;: &lt;q&gt;Notez que le comportement de l'opérateur ROUND(), lorsque l'argument est exactement entre deux entiers, dépend de la bibliothèque C active.&lt;/q&gt;&lt;/p&gt;
&lt;p&gt;Alors que faire pour être certain d'avoir un arrondi correct&amp;nbsp;? Puisqu'en france la règle veut que lorsque qu'un chiffre est exactement entre deux entiers il soit arrondi à l'entier supérieur, j'ai fait ce petit calcul&amp;nbsp;:&lt;/p&gt;
&lt;p&gt;Pour arrondir X à Z décimal&amp;nbsp;:&lt;/p&gt;
&lt;p&gt;FLOOR(0.5 + POW(10, Z) * X) / POW(10, Z)&lt;/p&gt;
&lt;p&gt;Voilà cette requête renverra toujours le même résultat peu importe le serveur. =)&lt;/p&gt;
&lt;p&gt;Bonne nuit.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/02/25/28-mysql-rand-deconseille#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/02/25/28-mysql-rand-deconseille#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/26</wfw:commentRss>
      </item>
    
  <item>
    <title>Backup de votre site internet (Correction)</title>
    <link>http://www.paradoxal.org/blog/post/2007/02/24/27-backup-de-votre-site-internet-correction</link>
    <guid isPermaLink="false">urn:md5:b3e20d6833f8cf28269a404d245c534a</guid>
    <pubDate>Sat, 24 Feb 2007 16:03:00 +0000</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Bug</category>
        <category>Linux</category><category>Mysql</category><category>Sécurité</category>    
    <description>&lt;p&gt;Je tiens à corriger une erreur qui s'est glissée dans mon article &lt;a title=&quot;Accédez à l'article backup de votre site internet&quot; href=&quot;http://www.paradoxal.org/blog/seza/2007/01/13/18-backup-de-votre-site-internet&quot; hreflang=&quot;fr&quot;&gt;Backup de votre site internet&lt;/a&gt; suite à la découverte d'un bug dans &lt;q&gt;mysqldump&lt;/q&gt;&lt;/p&gt;    &lt;p&gt;En effet je me suis rendu compte dans le backup de la base de donnée que l'option &lt;q&gt;--compatible=mysql40&lt;/q&gt; du &lt;q&gt;mysqldump&lt;/q&gt; faisait disparaitre l'attribut &lt;q&gt;autoincrément&lt;/q&gt; des clé primaires autoincrémentées. C'est un bug connu de MySql et jusqu'à maintenant non corrigé semble t-il.&lt;/p&gt;
&lt;p&gt;Je vous conseille donc vivement de retirer cette option de vos backup sous peine lors d'une restauration d'être rapidement embêter à moins que vous ne pensiez à tous les remettre à la main.&lt;/p&gt;
&lt;p&gt;Comment faire si vous souhaitez dumper des données de MySql 5 vers MySql 4 et qu'un simple dump ne permet pas la réinsertion de vos data&amp;nbsp;? Sans avoir testé je pense que la solution serait de générer deux dumps différents. un premier classique contenant uniquement la structure de vos bases et tables sans donnée et un second avec l'option &lt;q&gt;--compatible=mysql40&lt;/q&gt; avec uniquement des &lt;q&gt;insert&lt;/q&gt; sans &lt;q&gt;create table&lt;/q&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/02/24/27-backup-de-votre-site-internet-correction#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/02/24/27-backup-de-votre-site-internet-correction#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/24</wfw:commentRss>
      </item>
    
  <item>
    <title>Quand on fait des betises</title>
    <link>http://www.paradoxal.org/blog/post/2007/02/13/25-quand-on-fait-des-betises</link>
    <guid isPermaLink="false">urn:md5:b6c91a087aec2d5c0bbf063a2d72479a</guid>
    <pubDate>Tue, 13 Feb 2007 23:21:00 +0000</pubDate>
    <dc:creator>Seza</dc:creator>
        <category>Bug</category>
        <category>Inutile</category><category>Linux</category><category>Mysql</category>    
    <description>&lt;p&gt;Voici ce qui peut se passer quand un serveur ne fonctionne plus. Avec mes faibles compétences en administration linux voici ce qui arrive&amp;nbsp;: on fait des erreurs de jeunesse et de précipitation.&lt;/p&gt;    &lt;p&gt;Donc ce soir 20 heures passées, déjà tard, il est temps de rentrer bien au chaud chez soit et de laisser ses bébés s'endormir tout doucement.&lt;/p&gt;
&lt;p&gt;C'est toujours à ce moment que votre patron vient vous voir pour vous dire, dis donc je n'arrive plus à synchroniser mes emails.&lt;/p&gt;
&lt;p&gt;- &quot;Ah, je vais jeter un oeil&quot;.&lt;/p&gt;
&lt;p&gt;Un premier test outlook décevant, un second test en ligne de commande sous dos, en effet erreur MySql .... ne peut pas écrire dans le PID 111.&lt;/p&gt;
&lt;p&gt;Oui MySql, c'est un serveur administré par Plesk qui nécessite donc une base de données pour fonctionner.&lt;/p&gt;
&lt;p&gt;Je me connecte au serveur, un petit top. J'observe directement un processus plesk prenant 75 % de CPU. Etrange je poursuis mon chemin, je vais à la recherche du fichier mysql.sock, bien présent, bien les droits d'écriture pour l'utilisateur mysql.&lt;/p&gt;
&lt;p&gt;Pas le temps de chercher l'erreur malgré que ça soit intéressant, je redémarre MySql. Extinction du serveur&amp;nbsp;: Echec, redémarrage du serveur Echec, impossible d'écrire dans le fichier mysql.log. Tiens encore plus étrange j'avais jamais vu cette erreur. je vais voir le fichier de log, il a pas les droits d'écriture et visiblement il n'a jamais écrit dedans puis qu'aucun log gziper apparait et que le fichier mysql.log fait 0 octet. Je met donc les droits d'écriture pour mysql et là une erreur que je n'avais jamais vu non plus&amp;nbsp;: impossible de changer les droits pour ce fichier. Je suis pourtant root qu'est ce qui se passe&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;Dernière tentative je kill le process plesk qui semble boucler, peut etre qu'il bloque les fichiers... &quot;ça serait peut probable mais bon...&quot;&lt;/p&gt;
&lt;p&gt;Une fois le process killé, je retente de mettre les droits correct&amp;nbsp;: Echec cuisant. Dernière tentative de redémarrage de MySql, échec cuisant.&lt;/p&gt;
&lt;p&gt;Il reste une dernière solution encore plus bourrinne que de redémarrer MySql, le redémarrage du serveur. Un petit&amp;nbsp;: init 0 et .... merde c'était init 6 qu'il fallait faire... Echec très cuisant et j'ai vraiment l'air d'un imbécile.&lt;/p&gt;
&lt;p&gt;Au moins le serveur ne chaufferas plus le datacenter pour rien ^^ La morale de cette histoire, ne pas se précipiter face à un problème, prendre le temps de l'analyser, ne pas être présent au bureau après 19 heures.&lt;/p&gt;
&lt;p&gt;Bonne soirée à tous&amp;nbsp;!&lt;/p&gt;</description>
    
    
    
          <comments>http://www.paradoxal.org/blog/post/2007/02/13/25-quand-on-fait-des-betises#comment-form</comments>
      <wfw:comment>http://www.paradoxal.org/blog/post/2007/02/13/25-quand-on-fait-des-betises#comment-form</wfw:comment>
      <wfw:commentRss>http://www.paradoxal.org/blog/feed/rss2/comments/23</wfw:commentRss>
      </item>
    
</channel>
</rss>