Debianiste logo

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

lundi, août 29 2011

Passer PostgreSQL en UTC

Contexte

Parfois la politique de l'entreprise impose certaines contraintes à bien respecter comme l'encodage en UTF8 (ou non), la version de logicielle à utiliser... Bref, aujourd'hui je vais vous montrer comment réaliser très facilement un changement de timezone sur une base de donnée PostgreSQL. Cette astuce a été validée avec PostgreSQL 9 provenant des backports Debian pour Squeeze.

Let's do it!

Dans ton client PostgreSQL :

ALTER DATABASE mybd SET timezone TO 'UTC';

On redémarre PostgreSQL :

/etc/init.d/postgresql restart

A noter

Cette astuce se règle par base de donnée, si vous voulez une application globale, il faut changer la timezone dans le fichier postgresql.conf (par défaut il s'agit de la timezone système).

Have fun!

dimanche, mars 13 2011

Rediriger tous les sous-domaines d'une zone DNS avec Bind9

Contexte

Lorsque je développe des sites web en local, j'aime bien différencier monsite.com avec mon développement en local. J'utilise donc un "surdomaine", en gros monsite.com devient monsite.com.loc qui pointe sur localhost. La solution rapide est de rajouter à la main ou par script dans /etc/hosts et de rajouter un vhost dans apache. L'autre solution plus propre et "universelle" est de monter notre serveur DNS perso pour créer une zone sur bind9 qui fera pointer tous les ".loc" sur 127.0.0.1. Sur ce billet, je traiterai uniquement l'aspect "DNS".

Installation et configuration

On fait une installation classique par les dépots

aptitude install bind9

Editer /etc/bind/named.conf.loc

Ajouter au fichier :

zone "loc" {
        type master;
        file "/etc/bind/db.loc";
};

Créer le fichier de zone pour le zone "loc"

La solution la plus simple est de copier le fichier d'exemple, le résultat final est :

;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     loc. root.loc. (
                              5         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      loc.
@       IN      A       127.0.0.1
@       IN      AAAA    ::1
*       IN      A       127.0.0.1                                                  

La dernière ligne est celle qui nous intéresse le plus... L'étoile signifie tous les sous-domaines de la zone.

Prendre en compte le serveur DNS perso

Ajouter en première ligne du fichier /etc/resolv.conf :

nameserver 127.0.0.1

Tutoriel simple est rapide :) Pour en savoir plus sur la gestion DNS, je vous conseille un tutoriel plus complet. Celui-ci n'a juste vocation à montrer l'intérêt de l'étoile dans une zone.

mercredi, mars 9 2011

Installation d'eAccelerator avec Apache sous Debian

Un bon petit optimizer de PHP ?

D'habitude je n'ai pas trop de soucis de performance... j'installe de manière classique mon LAMP. Mais j'ai voulu tester eAccelerator. Voici un petit tuto comme on aime pour une installation propre !

Paquets nécessaires

Bon je ne vais pas aborder l'installation d'apache/mysql/php... Je considère que c'est fait. Mais il faut avoir ces paquets pour pouvoir tout installer de manière propre :

# aptitude install php5-dev checkinstall

Installation

Pour commencer, il faut compiler eaccelerator.

# cd /tmp
# wget -c http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.zip
# unzip eaccelerator-0.9.6.1.zip
# cd eaccelerator-0.9.6.1
# phpize
# ./configure
# make

On va faire une installation "propre" avec checkinstall. Ce programme permet de générer un joli ".deb" et de l'installer. Mais il faut faire attention à ce programme, on peut vite partir en mode "porky". Les commandes ci-dessous permettent de rajouter la dépendance "php5" sur ce nouveau paquet. Cette contrainte permettera éventuellement de déployer ce paquet sur un dépot local pour le mettre éventuellement sur plusieurs serveurs.

# checkinstall 

checkinstall 1.6.1, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran
           This software is released under the GNU GPL.


The package documentation directory ./doc-pak does not exist. 
Should I create a default set of package docs?  [y]: 

Preparing package documentation...OK

Please write a description for the package.
End your description with an empty line or EOF.
>> PHP accelerator and optimizer          
>> EOF
>> 

*****************************************
**** Debian package creation selected ***
*****************************************

This package will be built according to these values: 

0 -  Maintainer: [ root@debianiste.org ]
1 -  Summary: [ PHP accelerator and optimizer ]
2 -  Name:    [ eaccelerator ]
3 -  Version: [ 0.9.6.1 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ amd64 ]
8 -  Source location: [ eaccelerator-0.9.6.1 ]
9 -  Alternate source location: [  ]
10 - Requires: [  ]
11 - Provides: [ eaccelerator ]

Enter a number to change any of them or press ENTER to continue: 10
Enter the additional requirements: 
>> php5

This package will be built according to these values: 

0 -  Maintainer: [ root@debianiste.org ]
1 -  Summary: [ PHP accelerator and optimizer ]
2 -  Name:    [ eaccelerator ]
3 -  Version: [ 0.9.6.1 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ amd64 ]
8 -  Source location: [ eaccelerator-0.9.6.1 ]
9 -  Alternate source location: [  ]
10 - Requires: [ php5 ]
11 - Provides: [ eaccelerator ]

Enter a number to change any of them or press ENTER to continue: 

Installing with make...Installing with install...

========================= Installation results ===========================
Installing shared extensions:     /usr/lib/php5/20060613/

======================== Installation successful ==========================

Copying documentation directory...
./
./NEWS
./README
./AUTHORS
./README.win32
./ChangeLog
./doc/
./doc/php/
./doc/php/dasm.php
./doc/php/info.php
./doc/phpdoc.ini
./COPYING
grep: /var/tmp/tmp.klGKOTwxjc/newfile: Aucun fichier ou répertoire de ce type

Copying files to the temporary directory...OK

Stripping ELF binaries and libraries...OK

Compressing man pages...OK

Building file list...OK

Building Debian package...OK

Installing Debian package...OK

Erasing temporary files...OK

Deleting temp dir...OK


**********************************************************************

 Done. The new package has been installed and saved to

 /tmp/eaccelerator-0.9.6.1/eaccelerator_0.9.6.1-1_amd64.deb

 You can remove it from your system anytime using: 

      dpkg -r eaccelerator

**********************************************************************

Configuration PHP d'eAccelerator

Voici la configuration recommandée par eAccelerator. Pour l'instant cela fonctionne très bien chez moi. Je recommande de faire des tests afin de trouver la meilleure solution. Par défaut eaccelerator écrit dans /tmp, je préfère qu'il aie son propre dossier pour tout écrire :

# mkdir /var/cache/eaccelerator
# chown www-data: /var/cache/eaccelerator

Voici la configuration du module PHP :

zend_extension="/usr/lib/php5/20060613/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

Attention ! Ce module doit être chargé après Zend Optimizer. Pour ma part j'ai réutiliser mon fichier /etc/php5/conf.d/zend.ini ; j'ai collé les lignes ci-dessus après la déclaration de Zend Optimizer.

Vérification

On peut vérifier facilement en utilisant php-cli :

$ php -v
PHP 5.2.6-1+lenny9 with Suhosin-Patch 0.9.6.2 (cli) (built: Aug  4 2010 06:06:53) 
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
    with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator
    with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies

Cette solution fonctionne parfaitement sous Debian Lenny. Je n'ai pas eu l'occasion de valider sur Squeeze. Mais d'après eAccelerator, ce module s'adapte parfaitement à PHP 5.1, 5.2 et 5.3... Pas de soucis à priori. Si tout est OK, vous pouvez redémarrer Apache sans soucis !

mardi, novembre 16 2010

Ignorer un dossier existant avec mod_rewrite

Après un joli RTFM, j'ai enfin résolu un petit problème concernant le développement d'un site Web. Mon problème était que toutes les requêtes (sauf css, js, images...) étaient redirigées vers index.php ! Mais j'avais mis du code dans un dossier particulier. Pour y accéder on peut utiliser cette petite ligne ci-dessous dans un htaccess.

RewriteRule ^ledossier/.*$ - [PT]

Have fun !

- page 1 de 9

Real Time Web Analytics