Debianiste logo

Aller au contenu | Aller au menu | Aller à la recherche

mardi, avril 13 2010

GeoIP Apache sous Debian Lenny et Ubuntu

Un petit module que j'aime beaucoup avec Apache c'est la lib geoip elle permet de retrouver le pays du client par rapport à son IP ! Cela fonctionne très bien pour ma part sur Debian Lenny et Ubuntu 9.10 !

Installation et configuration

L'installation est très simple (si tout est bien configuré au niveau apache), il suffit d'installer le paquet libapache2-mod-geoip. Et remplacer la base opensource (pas à jour) par celle de Maxmind.

# sudo aptitude install libapache2-mod-geoip
# cd /usr/share/GeoIP/
# wget -c http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
# mv GeoIP.dat GeoIP.dat.bak
# zcat GeoIP.dat.gz > GeoIP.dat

Tests

un petit fichier php dans un coin fera l'affaire avec un petit print_r($_SERVER), chez moi cela donne :

Array
(
    [GEOIP_COUNTRY_CODE] => FR
    [GEOIP_COUNTRY_NAME] => France
...

Attention, tester avec une IP privée (type 192.168.0.0/16), ne rendera rien !

Pour trouver la liste des pays dans le bon format (name ou code) il suffit de se rendre ici !

Bon joujou avec ce module !

EM

lundi, février 15 2010

Migration de serveur MySQL

Cet article montre comment déplacer les données d'un serveur MySQL sous Debian Lenny sur une autre machine Debian ! Attention je ne garantie pas que cela fonctionne sur d'autres versions de Debian.

Petit cours théorique Debian et MySQL

J'ai un petit business avec quelques bases de données, ayant un petit serveur (Celeron 1.2GHz, 512Mo de ram) : la machine s'épuise très vite avec une charge faible. J'ai investi dans un serveur bien plus puissant (Xeon Quad Core et 4Go de ram), là on passe à quelque chose de sérieux !

Alors petit topo sur Debian :

  • Les utilisateurs MySQL sont géré dans la base de donnée "mysql".
  • Le lancement et l'arrêt de MySQL (avec /etc/init.d/) est géré par l'utilisateur : debian-sys-maint et son mot de passe est généré par le système.

Alors ce qui peut être assez facile de se dire : "tiens je fais un bon gros dump des toutes mes bdd, j'insère dans le nouveau serveur, un ptit coup de flush privileges et c'est fini !". Oui mais attention, comme je l'ai indiqué avant, l'utilisateur debian-sys-maint est primordial ! Alors les questions qui doit t'arriver en tête : comment Debian utilise cet utilisateur ? quel est son mot de passe ?

En fait, lorsque t'utilises la commande "mysql" en console souvent : mysql -u monutilisateur -p, il te demande le mot de passe. Mais parfois, dans un script il faut pouvoir se connecter sans utiliser de mot de passe et l'utilisation du programme expect n'est pas très judicieux. Donc MySQL, a crée les fichiers *.cnf, ces fichiers permettent (avec un chmod 600 pour la sécurité) d'utiliser un mot de passe en clair stocké dans un fichier.

Donc ton raisonnement doit aller vite : lorsque MySQL est lancé par le système init par root, il a aussi besoin de debian-sys-maint donc d'un fichier *.cnf ! Et voilà tu as tout compris, qu'à l'installation via aptitude (apt-get pour les vieux) il génère ce fichier et qu'il faut le copier sur la nouvelle machine.

En pratique

  • Dump de toute la base de donnée du serveur à migrer :
  • Copie du fichier /etc/mysql/debian.cnf
  • Recharger les privileges de MySQL
  • Redemarrer MySQL pour tout vérifier !

Script à mettre sur le nouveau serveur :

#!/bin/bash
date=$(date "+%d%b%Y" | sed 's/\.//g')
sqlfile="/$USER/backupsql$date.sql"
passroot='mdpmysqlroot'

mysql -u root --password='$passroot' < $sqlfile
mysql -u root --password='$passroot' -e 'flush privileges'
/etc/init.d/mysql restart

Voici un petit script qui envoie toutes les données au nouveau serveur (j'ai un utilisateur qui a accès en lecture à toutes les base de données, et authentification ssh par clé publique) :

#!/bin/bash
user_sql='user_reader'
pass_sql='user_reader'
cnf='/etc/mysql/debian.cnf'
date=$(date "+%d%b%Y" | sed 's/\.//g')
sqlfile="/home/$USER/backups/backupsql$date.sql"
server='mon-nouveau-server.com'

mysqldump -A -u $user_sql --password=$pass_sql > $sqlfile
scp $sqlfile root@$server:/root/
scp $cnf root@$server:$cnf
ssh root@$server "/root/script.sh" # changer la valeur de la variable

Et voilà ! Tu as une instance de MySQL qui est exactement la même que l'ancienne !

dimanche, février 14 2010

Vider la swap

Comment vider la swap rapidement ? Il m'arrive très souvent d'utiliser beaucoup de programmes qui consomme énormément de RAM : skype, iceweasel/firefox, eclipse (le pire de tous), virtualbox... Et parfois ça swap alors qu'il reste pas mal de ram ! Bon je ferme certains programmes, mais bon voir toujours 300Mo dans la swap j'aime pas trop. Il existe une technique ultra simple (j'en ai même fait un alias) avec les commande swapoff et swapon. Alors un ptit RTFM dans la manpage permet de voir pas mal d'argument, mais dans 98% des cas, il faut utiliser l'argument -a.

# swapoff -a && swapon -a

En gros ces programmes permettent de désactiver toutes les partitions swap (dans la très grande majorité des cas, il y en a qu'une), ce qui induit que les données en swap "reviennent" en RAM. Puis réactive les partitions swap.

Attention : le faire uniquement uniquement si l'espace vide en RAM est supérieure à l'espace occupée en swap ! Je recommande par ailleurs de le faire uniquement quand la machine n'est pas en charge.

mardi, février 2 2010

Citrix à chier !

Et voilà j'ai eu un super cours de virtualisation sur Citrix. Alors j'explique le topo, Citrix permet de virtualiser des application en méthode client-serveur. Quel intérêt me diras tu ? Bah écoute je cherche encore. N'étant pas du tout un croyant aveugle à la centralisation des services... je ne sais pas quoi te répondre.

Alors concrètement comment ça se passe ? En fait, déjà il faut avoir un Windows Server 2008 (attention pas de R2, ça ne fonctionne pas "lol"). Installer TSE et IIS (temps de mise en place 15 min). En plus de monter une usine à gaz, il faut installer Citrix, alors il y a 50 possibilités (les superbes évolutions du clic clic). Bref, l'usine à gaz installée, il faut le configurer... Bon créer un site + l'équivalent d'un webservice bon ça se fait vite. Et voilà ta config est faite ! Mais bon c'est tellement bien qu'il faut déployer les applications une à une ! Bon il y a plusieurs modes : streaming et exécuté sur le serveur, j'ai rien compris à leur différence.

Alors là il faut configuré le client, bref utiliser une iso/cd pour installer... droit administrateur bien entendu ça mouline tu perds du temps. Bref c'est installé... ça communique (accès au serveur web) si tout se passe bien mais toujours pas accès à des applications partagées.

Et là il faut partager une appli alors bien entendu, une windows vista ne fonctionne pas de la même manière que XP... après il faut faire un bouzin indescriptible, avec un "golden client". Avec un peu de chance tout fonctionne.

Et voilà en seulement 4h ton client peut executer Word 2007 à distance avec toute la latence que ça entraine ?! Évolution ? NOOOOOON révolution ! c'est le retour en arrière avec les Terminaux/MainFrames !

Vous voulez perdre votre temps, votre pognon et toute la baisse de productivité que ce la induit ? Utilisez Citrix ! Pour ma part je vais m'éclater à utiliser Iceweasel à travers SSH avec une redirection X11, ça me prendra moins de temps que de cliquer sur Démarrer - Programmes... ;-)

Les ordinateurs sont fait pour exécuter des applications, pas pour être de vulgaires esclaves d'un système centralisé/rendondant...

- page 1 de 8

Real Time Web Analytics