Axude PHP, MySQL, Apache, Debian, et bien d'autres!
  • scissors
    mars 30th, 2012neriqueDebian

    La question de la sauvegarde est toujours un sujet un peu tendu lorsque l’on gère ses serveurs. il existe beaucoup de solutions plus ou moins complexes à mettre en oeuvre, et puis on se rabat souvent sur la solution de facilité: le petit script

    fait maison qui va bien. Pourtant il existe une solution très simple qui gère tout un tas de choses pour vous: backup-manager!

    Voici donc la procédure d’installation de backup-manager pour sauvegarder quelques répertoires et toute votre base MySQL! Un seul mot d’ordre: SIM-PLI-CI-TE !

    apt-get install backup-manager
    mkdir -p /home/backup
    Archives location:
    /home/backup
    Owner user of the repository:
    root
    Owner group of the repository:
    root
    Directories to backup: (listez ici, séparés par un espace, l'ensemble des répertoires que vous souhaitez sauvegarder)
    /etc /home/web /var/www

    Par défaut backup-manager ne fait qu’une sauvegarde en local
    Nous allons éditer le fichier de config pour que backup-manager fasse tous les jours une sauvegarde complète par FTP
    vi /etc/backup-manager.conf
    Nous faisons le choix de sauvegarder les fichiers sous forme d’archives tarball, et se sauvegarder également le mysql
    BM_ARCHIVE_METHOD="tarball mysql"
    Changez le nombre d’archives que vous souhaitez garder (ici 10 jours, par défaut 5)
    BM_ARCHIVE_TTL=10
    Si vous voulez exclure des répertoires (des logs par exemple), editez la variable
    BM_TARBALL_BLACKLIST="/var/archives"
    Définissez les login/pass de l’utilisateur mysql qui vous permettra de faire la sauvegarde (Créez un utilisateur dédié)
    BM_MYSQL_ADMINLOGIN="backup"
    BM_MYSQL_ADMINPASS="backuppassword"

    Maintenant les modifications pour envoyez les archives par FTP:
    BM_UPLOAD_METHOD="ftp"
    BM_UPLOAD_HOSTS="ftp.domaine.com"
    BM_UPLOAD_DESTINATION="/"
    BM_UPLOAD_FTP_USER="ftpuser"
    BM_UPLOAD_FTP_USER="ftppassword"
    BM_UPLOAD_FTP_HOSTS="ftp.domaine.com"

    On crée ensuite uns script qui va vérifier le backup après le process pour être sur que tout est ok (vous recevrez un petit mail de confirmation à chaque backup)
    BM_POST_BACKUP_COMMAND="/etc/backup-manager-post"

    On sauvegarde le fichier puis on crée le script post-backup
    vi /etc/backup-manager-post
    Et on met dedans:

    #!/usr/bin/php

    <?php

    $dest = array('VOTRE@EMAIL.COM');
    $archives = '/home/backup';

    $host = trim(file_get_contents('/etc/hostname'));

    clearstatcache();

    $dir = opendir($archives);
    if($dir) {
    while(false !== ($filename = readdir($dir))) {
    if($filename[0]!='.' && preg_match('/'.date('Ymd').'/',$filename)) {
    $thefile = $archives.'/'.$filename;
    $size = exec("ls -l '".$thefile."' | awk '{print $5}'");
    if($size>0) {
    $pagetext.= $filename." (".round($size/1000000000,2)." Go)n";
    } else {
    $pagetext.= $filename." (? Go)n";
    }
    $totalsize += $size;
    }
    }
    $pagetext .= "nTotal : ".round($totalsize/1000000000,2)." Gon";
    }

    foreach($dest as $d) {
    mail($d,'['.$host.'] Backup OK',$pagetext);
    }

    ?>

     

    Et voilà backup-manager va automatiquement tout sauvegarder tous les jours, et en plus vous envoyer un mail de

    confirmation!

    Tags: , , , , ,
  • scissors
    mars 7th, 2012neriqueDéveloppement

    Voilà une info astucieuse pour les flémards qui ne veulent pas passer leur temps à récupérer les infos de partout! Parce qu’un dev flémard,

    c’est le meilleur!

    Vous pouvez récupérer la

    liste dans de nombreux formats, tels que

    • Text
    • JSON
    • YAML
    • XML
    • HTML
    • CSV
    • SQL
    • PHP
    • MySQL
    • SQLite
    • SQL Server

    Rien que ça!!

    A trouver sur  Umpirsky Software development blog

    Tags: , , , , ,
  • scissors
    juin 20th, 2011neriquephpMyAdmin

    Pour

    évtier de se retrouver coincé lors d’un import de fichier trop volumineux dans phpMyAdmin, voici la marche à suivre:

    Editer le fichier php.ini

    et augmenter les deux valeurs suivantes:

    upload_max_filesize=50M (50M est donné à titre d’exemple, la valeur par défaut est 2M)

    post_max_size=50M

    Tags: , , ,
  • scissors
    octobre 21st, 2010neriqueMySQL

    Su vous obtenez l’erreur
    ERROR 1064 (42000): You have an error in your

    SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near  » at

    line 3
    lors de la création d’une procédure stockée, vérifiez deux choses:

    - les procédures stockées sur MySQL ne sont disponibles que depuis la version 5.0.11. mettez donc à jour votre MySQL si nécessaire.
    - N’oubliez pas les « ; » à la fin des instructions dans la proédure!!

    Tags: , , , ,
  • scissors
    octobre 15th, 2010neriqueMySQL

    phpMyAdmin est un incontournable dans le monde de MySQL pour qui veut gérer ses bases de données.

    Mais il existe des alternatives! Déjà, en version desktop, celles proposées par MySQL qui sont MySQL Administrator et MySQL Query Browser.
    Si ces ou

    tils fonctionnent parfaitement, on ne peut pas dire que l’erognomie soit parfaite, notamment pour le query browser.

    Nous allons donc aujourd’hui découvrir ensemble Chive.

    Pour l’installer:

    wget -O - http://launchpad.net/chive/trunk/0.3.0/+download/chive_0.3.0.tar.gz|tar -xzp

    Cette commande va télécharger l’archive et l’extraire dans un répertoire nommé chive.
    Pensez donc à l’executer

    depuis votre document root Apache afin que celui-ci soit accessible par votre navigateur.

    Voici un tableau disponible sur le site de Chive et comparant les différents outils de gestion en mode Web de MySQL (Chive, phpMyADmin, SQL Buddy)

    Je ne peux que vous conseiller de créer un virtual host dédié, comme il est d’ailleurs conseillé de le faire sur un phpmyadmin en mettant autre chose que phpmyadmin.mondomaine.com pour éviter les attaques sur les urls trop communément utilisées (j’en ai fait les frais)

    vi /etc/apache2/sites-available/chive
    <VirtualHost *>
            ServerName monchive.mondomaine.com
            DocumentRoot /var/www/chive/
            CustomLog /var/log/apache2/chive.log combined
            ErrorLog /var/log/apache2/chive_err.log
            <Directory /var/www/chive/>
                    Order Deny,Allow
            </Directory>
    </VirtualHost>
    a2ensite chive

    On peut ensuite se rendre à l’url: http://monchive.mondomaine.com

    En testant la première fois, j’ai obtenu l’erreur

    Warning: CApplication::require(protected/config/main.php) [capplication.require]: failed to open stream: No such file or directory in /home/web/chive/yii/base/CApplication.php on line 100
    
    Fatal error: CApplication::require() [function.require]: Failed opening required 'protected/config/main.php' (include_path='/home/web/library/') in /home/web/chive/yii/base/CApplication.php on line 100

    Editez le fichier

    vi /var/www/chive/index.php

    Modifiez la ligne

    $app = Yii::createWebApplication('protected/config/main.php');
    et changez la par
    $app = Yii::createWebApplication('./protected/config/main.php');

    Voilà vous avez donc accès à Chive et à toutes ses fonctionnalités, dont un éditeur SQL avec syntaxe colorée, très pratique!
    Abusez aussi des routines, c’est merveilleux.

    Une chose me manque toutefois, car je gère plusieurs serveurs mysql. Je ne vais pas taper à la main à chaque fois le nom d’hôte de chaque machine, on va donc modifier un peu le code pour mettre ça en place :)

    Trois étapes pour cela
    - On édite le fichier de config pour y ajouter la liste des hôtes à gérer

    vi /var/www/chive/protected/config/main.php

    on va ligne 228 du fichier, et on rajoute dans le tableau params une nouvelle entrée nommée hosts sous forme de tableau

    on remplace
    'params' => array(
            'iconPack' => 'fugue',
            'version' => '0.3.0',
    ),
    PAR
    // application-level parameters
    'params' => array(
            'iconPack' => 'fugue',
            'version' => '0.3.0',
            //host list for connection
            'hosts' => array(
            'NOM HOTE 1 DANS LA SELECT BOX' => 'monhote1.mondomaine.com',
            'NOM HOTE 2 DANS LA SELECT BOX'  => 'monhote2.mondomaine.com',
            'NOM HOTE 3 DANS LA SELECT BOX' => 'monhote3.mondomaine.com'
            ),
    ),

    - on a maintenant défini les paramètres, il faut les utiliser dans le page de login

    vi /var/www/chive/protected/views/site/login.php

    aux alentours de la ligne 78, on remplace le champ texte ‘host’ par une select box (on garde toujours l’ancien en commentaire au cas ou)
    Pour accéder au tableau hosts défini dans le fichier de config: Yii::app()->params['hosts']

    On remplace
    <?php //echo CHtml::activeTextField($form, 'host', array('class'=>'text')); ?>
    PAR
    <?php
    	//echo CHtml::activeTextField($form, 'host', array('class'=>'text'));
    	echo CHtml::activeDropDownList($form, 'host', Yii::app()->params['hosts'], array('class'=>'text'));
    ?>

    Enfin, on fait un peu de CSS, c’est pas jojo sans ça

    vi /var/www/chive/themes/standard/css/form.css

    Au début du fichier, il y a le bloc

    input[type=text],
    input[type=password],
    input[type=submit],
    input[type=reset],
    input[type=button],
    textarea {
            background-color: #F7F7F7;
            border: solid 1px #CCC;
            color: #333;
            padding: 4px 0px 4px 4px;
    }

    On y ajoute input[type=select]

    input[type=select],
    input[type=text],
    input[type=password],
    input[type=submit],
    input[type=reset],
    input[type=button],
    textarea {
            background-color: #F7F7F7;
            border: solid 1px #CCC;
            color: #333;
            padding: 4px 0px 4px 4px;
    }
    vi /var/www/chive/themes/standard/css/style.css

    ligne 158, après le bloc #login input

     #login input
      {
            font-size: 18px;
            padding: 3px;
      }
    
      #login select
      {
            font-size: 18px;
            padding: 3px;
      }

    On ajoute un bloc #login select

    #login select
      {
            font-size: 18px;
            padding: 3px;
            background-color: #F7F7F7;
      }

    Et voilà une image pour voir ce que ca donne!

    Tags: , , , , ,
  • scissors
    octobre 8th, 2010peypeyMySQL

    Introduction :

    La réplication MySQL est une méthode permettant d’avoir des copies de données d’un serveur MySQL sur différents autres

    serveurs MySQL.
    Depuis la version 3.23.15, MySQL supporte la réplication unidirectionnelle interne. Un se

    rveur sert de maître, et les autres serveurs servent d’esclaves. Le serveur entretient des logs binaires de toutes les modifications qui surviennent. Il entretient aussi un fichier d’index des fichiers de logs binaires, pour garder la trace de la rotation des logs. Chaque esclave, après connexion réussie au serveur maître, indique au maître le point qu’il avait atteint depuis la fin de la dernière réplication, puis rattrape les dernières modifications qui ont eu lieu, puis se met en attente des prochains événements en provenance du maître.
    Un esclave peut aussi servir de maître à son tour, pour réaliser une chaîne de réplication.
    Notez que lorsque vous utilisez la réplication, toutes les modifications de tables sont répliquées, et doivent intervenir sur le serveur maître. Sinon, vous devez être prudents dans vos interventions, pour ne pas créer de conflits entre les modifications de tables sur le maître et celles qui interviennent sur l’esclave.
    La réplication unidirectionnelle permet de renforcer la robustesse, la vitesse et l’administration du serveur :
    La robustesse est augmentée par la configuration maître/esclave. Dans le cas où un problème survient sur le maître, vous pouvez utiliser un esclave comme serveur de secours.
    L’accélération provient de la répartition de la charge de traitement des requêtes

    clients entre le maître et les esclaves, permettant un meilleur temps de réponse. Les requêtes SELECT peuvent être envoyées aux esclaves pour réduire la charge du maître. Les requêtes de modifications des données sont envoyées au maître, qui les transmettra aux esclaves. Cette stratégie de répartition de charge est efficace si les lectures sont plus nombreuses que les écritures, ce qui est la situation la plus courante.
    Un autre avantage de la réplication est que vous pouvez faire des sauvegardes non-bloquantes de vos données sur l’esclave et non plus sur le serveur principal : ce dernier n’est pas perturbé.
    Extrait du site : dev.mysql.com
    Dans ce document nous décrivons comment mettre en place une réplication entre un seul serveur MASTER et un ou plusieurs serveur SLAVE.

    Read the rest of this entry »

    Tags: , , , ,
  • scissors
    septembre 23rd, 2010peypeyMySQL

    Il vous suffit d’ajouter les 2 lignes suivantes à votre

    my.cnf et de redémarrer le serveur MySQL:

    log-slow-queries = /var/log/mysql/slow.log
    long_query_time = 1
    

    De cette façon, le MySQL écrira dans le fichier de log

    /var/log/mysql/slow.log toutes les requêtes dont le temps d’exécution aura dépassé 1 seconde.

    Il existe un autre paramètre qui permet de détecter les requêtes qui ne se servent pas des indexes. Il s’agit de

    log-queries-not-using-indexes = fichier/de/log
    

    Pour l’activer, il vous suffit d’ajouter la ligne suivante à votre fichier de configuration mysql my.cnf et de redémarrer votre serveur:

    log-queries-not-using-indexes=/var/log/mysql/no_index.log 
    
    Tags: , , ,
  • scissors
    septembre 21st, 2010peypeyMySQL

    1- Activer toutes les logs MySQL en ajoutant les lignes suivantes dans votre my.cnf

    log = /var/log/mysql/log.log
    log_error = /var/log/mysql/error.log
    log-slow-queries = /var/log/mysql/slow.log
    log-queries-not-using-indexes=/var/log/mysql/no_index.log
    long_query_time = 1

    2- Redémarrer le serveur

    MySQL (

    sous debian : /etc/init.d/mysql restart

    )
    3- Désormais les logs MySQL sont actifs. vous pouvez le voir en faisant:

    tail -f /var/log/mysql/log.log

    4- Effacer les fichiers de logs ou les déplacer vers un répertoire de sauvegarde:

    mv /var/log/mysql/log.log /tmp/

    5- Créer un lien le symbolique suivant:

    ln -s /dev/null /var/log/mysql/log.log

    6- Se connecter sur la console MySql et faire un flush logs:

    mysql> flush logs;

    Si vous souhaitez à nouveau activer les logs :
    1- Effacer les liens symboliques casinos en ligne précédemment créés:

    rm /var/log/mysql/log.log

    2- Se connecter sur la console MySql et faire un flush logs:

    mysql> flush logs;
    Tags: ,