ubuntu-fr

Communauté francophone des utilisateurs d'Ubuntu

Planet Ubuntu-fr - Php

Fil des billets

lundi, août 11 2008

Gravatar de tigrouOptimiser son site sous Ubuntu : Configurer l'en-tête Expires via tigrou

Lire un livre sur comment optimiser son site web c'est bien, appliquer les conseils qui s'y trouvent c'est encore mieux. Parmi les 14 bonnes pratiques, 3 peuvent être appliquées très rapidement au niveau système en quelques lignes de commande et de configuration du serveur web pour un résultat quasi immédiat :

Dans un premier temps, je vais m'intéresser à la règle 3, je suppose que vous avez déjà un serveur web Apache2 actif servant des fichiers (peu importe la technologie autour). La configuration suivante est utilisée sur ma Dedibox sous Ubuntu avec Apache2 mais doit pouvoir s'appliquer à peu près partout.

Ajoutez et configurez l'en-tête Expires

L'en-tête Expires indique quand un élément devra expirer du cache du navigateur; mettre une date d'expiration dans un futur lointain permet de maximiser l'utilisation du cache navigateur et donc d'éviter les téléchargements inutiles, ce qui est particulièrement utile pour les éléments statiques (images, feuilles de style, ...) qui ont tendances à changer ... peu fréquemment mais à ralentir l'affichage de la page si ils ne sont pas en cache. Pour ces éléments, il est possible de configurer l'expiration dans Apache avec le module expires . Pour les pages dynamiques ou éléments générés dynamiquement, c'est au script d'envoyer l'en-tête et sa valeur adéquate par exemple avec la fonction header() en PHP .

L'activation du module pour Apache2, il faut utiliser a2enmod avec la ligne suivante et ensuite recharger apache :

$ sudo a2enmod expires
$ sudo /etc/init.d/apache2 reload

Il reste alors à configurer ce module. Je stocke la configuration de ce module dans le fichier /etc/apache2/conf.d/expires dont voici le détail :

ExpiresActive On
ExpiresByType image/gif "access plus 30 days"
ExpiresByType image/jpg "access plus 30 days"
ExpiresByType image/jpeg "access plus 30 days"
ExpiresByType image/png "access plus 30 days"
ExpiresByType image/x-icon "access plus 30 days"
ExpiresByType text/css "access plus 30 days"
ExpiresByType application/x-javascript "access plus 30 days"

Tous les éléments statiques des types listés expirent 30 jours après leur premier téléchargement. Après un nouveau reload d'Apache, vous devriez voir apparaître l'en-tête Expires par exemple avec l'extension Firebug de Firefox au premier chargement des éléments de la page. Ensuite le navigateur utilisera son cache ce qui devrait accélérer l'affichage des pages suivantes utilisant les mêmes éléments.

vendredi, juin 20 2008

Gravatar de SplitschInstaller opensuse 11 sans gravure, en passant par Grub via Splitsch

Bonjour!

Vous n’êtes pas sans savoir que opensuse 11 est sortie.

Je vous propose un petit tutoriel concernant son installation sans gravure, en passant par grub.

Le secret: faire en sorte que, au démarrage, grub lance le média d’installation (dvd ou cd d’installation) de opensuse.

Prérequis

Il vous faut une partition d’au moins 4,3 Gio, sur laquelle va venir se placer l’image décompressée du dvd d’installation d’opensuse. Le point de montage de cette partition ne pourra pas être défini lors de la procédure d’installation, puisqu’il s’agit de la partition contenant le média d’installation.

Grub doit être installé (ceci peut-etre fait via un live cd quelconque si vous avez windows, ou le Grub “habituel” si vous avez déjà une distribution installée.

Quelques connaissances en matière de dénominations de disques durs…mais rien de bien grave, puisque j’y suis arrivé ;)

Fonctionnement

Grub se lance lors du démarrage de l’ordinateur, et permet de choisir quel système lancer. Le truc est de rajouter une ligne proposant l’installation de opensuse: grub va booter sur le kernel du media d’installation et proposer une installation “classique”.

Préparation

Il vous faut télécharger une iso du dvd d’installation (ca doit aussi marcher avec un cd…retours d’utilisation bienvenus :)): http://software.opensuse.org/.

Ensuite, il faut la monter et copier son contenu sur la partition qui va servir d’installation:

En console:

On crée le dossier dans lequel l’iso sera montée:
$ mkdir /home/votre identifiant/opensuse11
En root, on monte:
# mount -o loop -t iso9660 /chemin/vers/l'iso/d'opensuse11.iso /home/votre identifiant/opensuse11
Ensuite, on copie le contenu de l’iso:
# cp -a /home/votre/identifiant/opensuse11/* /la/partition/que/vous/choisissez/opensuse (retenez la !!!)

Modification de Grub

Laissez faire le système. une fois cette copie terminée, il faut modifier Grub, en modifiant le fichier /boot/grub/menu.lst en ce sens:
title Installation opensuse v11
root (hd0,5)
kernel /le chemin sur la partition/que/vous/choisissez/opensuse/boot/i386/loader/linux splash=silent showopts
initrd /le chemin sur la partition/que/vous/choisissez/opensuse/boot/i386/loader/initrd

Notez que la dénomination (hd0,5) correspond à la 6e partition de mon premier disque dur.

Si votre chemin vers l’image décompressée de opensuse sur la 1 partition du 2e disque dur, par exemple, alors, ca sera dénommé comme ceci: (hd1,0) ==>Le premier chiffre correspond au disque dur, le deuxième, à la partition. grub commence à compter à 0 (zéro), et pas à 1 !

Pour connaître ses partition, en console:
mount
Par exemple, chez moi, ça donne ceci:
/dev/hda1 on / type ext3 (rw)
none on /proc type proc (rw)
/dev/hda6 on /home type ext3 (rw)
/dev/hda7 on /media/autre_distrib type ext3 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
none on /sys/fs/fuse/connections type fusectl (rw)

Voila, vous avez mis à jour vitre fichier menu.lst.

Installation

Il suffit maintenant de redémarrer l’ordinateur, et, quand Grub se lance, choisir l’entrée “installation opensuse v11″.

Normalement, le kernel devrait se lancer, et ensuite, une interface austère vous proposant de “Make sure the CD1 is in the drive”. Répondez “Back”

Choisissez votre langue, pays et clavier

Choisissez ensuite “démarrer l’installation ou le système”

Ensuite “démarrer l’installation ou la mise à jour”

Sélectionner le support source -> disque dur -> /votre partition où se trouve l’image décompressée de opensuse  -> /le chemin/sur/cette partition/vers le dossier “opensuse”.

L’installation “normale” démarre, graphiquement, comme d’hab’.

Cas pratique

Voici les commandes que j’ai effectuées sur mon système:
$ mkdir /home/splitsch/Bureau/opensuse11
# mount -o loop -t iso9660 /home/téléchargement/opensuse11.iso /home/splitsch/Bureau/opensuse11
$ cp -a /home/splitsch/Bureau/opensuse11/* /home/splitsch/bureau/opensuse

Mon menu.lst:
title Installation Suse v11
root (hd0,5)
kernel /home/splitsch/Bureau/opensuse/boot/i386/loader/linux splash=silent showopts
initrd /home/splitsch/Bureau/opensuse/boot/i386/loader/initrd

Lors de l’installation, j’ai choisi le disque dur sda6, et comme chemin, j’ai choisi : /splitsch/Bureau/opensuse/

Conclusion

Et voilà le travail !

Voici une méthode qui est plus difficile, certes, mais plus rapide et qui coute moins de dvd ;)

Merci à alionet et Tyrtamos, j’ai adapté la méthode grâce à eux :)

Cette méthode fonctionne peut-être avec d’autre distributions! Je serai heureux d’avoir des retours d’expérience à ce niveau-là :)

jeudi, mai 15 2008

Gravatar de SplitschUtiliser Gmail comme serveur smtp pour phpbb3 via Splitsch

Bonjour à tous!

Après quelques petites recherches, il apparaît que l’on sait utiliser son compte gmail pour envoyer des emails directement depuis l’interface de phpbb3, en utilisant gmail comme serveur smtp.
Voici comment procéder:

Dans le panneau d’administration, dans le menu de gauche, cliquez sur “Paramètres des e-mails”, sous le titre “Communication”.
Dans “Paramètres généraux, choisissez “messagerie e-mail via forum: activé”
Dans “Paramètres SMTP”, choisissez “Oui” pour “utiliser un serveur SMTP pour l’envoi d’e-mails”.
Adresse sur serveur:

tls://smtp.gmail.com

Port du serveur: 465
Méthode d’identification: PLAIN
Nom d’utilisateur SMTP: votre identifiant gmail, sous la forme: “utilisateur@gmail.com”
Mot de passe SMTP: votre mot de passe gmail.

Sauvegardez le tout, et normalement, vous devriez pouvoir utiliser gmail pour envoyer des mails à tous les utilisateurs de votre forum.

mardi, mai 13 2008

Gravatar de TenshuInstallation de Perl + Php: Get the facts … via Tenshu

Get the facts est un programme de Microsoft qui vise à démontrer la supériorité de son produit Windows dans certains domaines. En fait il sert surtout à discréditer les qualités de systèmes concurrents, et tout particulièrement de GNU/Linux.

Comme on peut l’imaginer, les “faits” exposés sont souvent biaisés et la firme de Redmond y voit surtout ce quelle veut bien y voir.

Pour preuve le dernier Get the facts veut comparer l’installation de Perl et de Php sous Windows server et Ubuntu 7.04. Comme le relate bien mieux que moi le blog GNU Squad, il semblerait que la bonne foi ne soit pas encore de mise.

Petits extraits de choix:

[...] le screencast Windows : celui-ci démarre par l’installation de Perl en mode CGI accompagné d’un script de test, pour cela, ils ont eu besoin d’un double clic, de 32 clics et de 4 commandes à taper puis [...] à l’installation de PHP, [...] et qui a nécessité quant à lui, 5 double-clics et 18 clics ce qui fait au total : 6 double-clics, 50 clics et 4 commandes à taper !!!

[...] screencast Ubuntu: [...] donne au total 2 double-clics et 7 commandes à taper.

Malgré un temps d’installation plus court sur le système Ubuntu et de nombreuses irrégularités constatées: installation en cgi comparée à une installation de modules, temps de téléchargement des programmes non décomptés pour Windows, utilisation sûrement volontaire de la ligne de commande plutôt que de synaptic (ou autre); il semblerait que ces screencast devraient démontrer une supériorité de l’os privateur.

Bref si l’on résume on obtient un FUD, un protocole de test abusif, une bonne grosse dose de mauvaise foie et de méthode Coué.

N’empêche que l’on revient sur un point que j’ai soulevé récemment (un an c’est récemment ici :q), les gestionnaire de paquets actuellement sont assez insatisfaisant s’agissant d’une utilisation grand public.

Malgré leur caractère crucial des système GNU/Linux n’apparaissent pas comme une évidence, ou même comme un des premiers avantages que fournissent ses systèmes. Il est agréable de voir que des initiatives pour améliorer ce point sont en chantier, comme l’ajout de captures d’écrans dans le menu ajouter/supprimer d’Ubuntu.

Tags:, , , ,
mardi, avril 15 2008

Gravatar de SplitschTraduction d’un thème: IAMWW w2 DnD via Splitsch

IAMWW w2 DnD est un thème sobre, élégant et sans chichi !

Il est très facilement customisable, puisque il n’y a pas d’image. L’on peut donc modifier le css à sa guise pour le colorer à son goût.

Description de l’auteur:

The IAMWW w2 DnD theme is a completely Drag n' Drop version of the original IAMWW w2 theme for WordPress. IAMWW w2 was built from the core of Upstart Blogger Minim.

Traduction: Le thème IAMWW w2 DnD est une version totalement Drag n’ Drop du thème original IAMWW w2 pour WordPress. IAMWW w2 a été construit à partir du coeur de Upstart Blogger Minim.

Je vous propose une traduction en français de ce thème.

Pour la téléchargée, rendez-vous ici:

IAMWW_w2_dnd_FR.zip

Si vous trouvez la moindre erreur, n’hésitez pas à m’en faire part, et je verrai ce que je peux améliorer !

Je vais en outre bientôt mettre ce thème en fonctionnement, légèrement modifié à ma sauce, avec, notamment, dans le menu latéral, les derniers messages de mon forum phpBB3.

Je posterai donc un tuto sur la manière de procéder

A bientôt !

mardi, novembre 27 2007

Gravatar de GuyKPADJIKEnvoyer des mails depuis PHP avec Ubuntu et esmtp ! via Renaud Littolff

MailJ'ai actuellement un projet de site web qui a besoin d'envoyer un mail... rien de bien extraordinaire en fait. Mais envoyer un mail depuis PHP sur une station Ubuntu est moins facile qu'il n'y parait.

1ère solution: installer Postfix ou Sendmail, 2 gros bazookas pour une petite mouche.

2ème solution: installer nullmailer ou installer esmtp. Chez moi, nullmailer ne marchant pas pour des raisons obscures et sombres, j'ai installé esmtp qui fonctionne à merveille.

Installation:
sudo apt-get install esmtp

Configuration:
sudo vim /etc/esmtprc

Il suffit d'indiquer un serveur smtp (celui de son FAI, par exemple), éventuellement un login/pass au besoin.

Pour l'utiliser avec gmail, en revanche, c'est un poil plus complexe, mais la documentation d'esmtp est bien faite.

Enfin, pour terminer, il suffit de faire un lien symbolique de /usr/bin/sendmail vers esmtp comme suit pour que tout fonctionne parfaitement:
sudo ln -s /usr/bin/esmtp /usr/bin/sendmail

lundi, juin 25 2007

Gravatar de mumblyMettre en place un serveur type "hébergement" avec ISPConfig sous Ubuntu Gnu/Linux Feisty Fawn via mumbly

Cela fait maintenant assez longtemps que je cherche une solution simple et efficace afin d'héberger plusieurs sites persos et d'autres sites de collègues, d'amis, de la famille, etc.
J'ai d'abord commencé à installer "à la main" différents éléments indispensables à des conditions d'hébergement "normales", que ce soit le serveur Apache, php, un serveur Mysql, un serveur de Mail, etc.
Je me suis vite aperçu que cette solution fonctionnait bien (après moult réglages ...) mais que, avec l'arrivée de nouveaux sites, l'administration devenait assez lourde pour un non professionnel comme moi.
L'idéal aurait été de trouver un "script" qui permette de gérer TOUT d'un seul coup.

Imaginez : je clique sur un bouton après avoir rentré quelques coordonnées, adresse e-mail et nom de domaine et ... HOP! tout est mis à jour aussi bien les DNS que les alias mail ou la base de données MySQL, etc. ... et bien ca existe ! :o)
Oui, je sais, je débarque mais bon. Vieux motard que jamais ! :o)

Cette solution a été testée avec succès sur un serveur personnel placé chez moi avec une connexion de type adsl dégroupée (environ 100 Ko/s en up) et sur un serveur dédié de type Dédibox... le tout sous Ubuntu !
Sur la base de divers posts, tutos et documentations trouvées sur le Net, je vais vous proposez maintenant d'installer ce serveur complet.

Je tiens à signaler que je me suis beaucoup basé sur le tuto paru sur howtoforge.com "The perfect setup feisty fawn". Je tiens enfin à signaler que comme l'autorisation d'utiliser "tel quel" ce tuto m'a été refusée par l'auteur ... (!?!), j'ai re-adapté le tout en français et j'ai ajouté certains détails trouvés sur le Net qui complètent l'installation, notamment sur les forums d'ISPConfig.

1 - Choix de l'OS : Ubuntu Feisty Fawn 7.04 server sans configuration de type LAMP. Tout est fait "à la main" utltérieurement.

2- Choix des applications Le "script" d'hébergement : mon choix s'est porté sur ISPConfig (http://www.ispconfig.org/) : licence d'utilisation BSD, gratuité, simplicité d'utilisation et communauté dynamique ... Les applications de type "serveur" : Apache2 + SSL, php5, Mysql 5, Postfix, Proftpd, imap/pop3, etc. Les "+" : quota, statistiques, etc.

Aller, c'est parti :

Première commande, premier troll !
Eh oui, on va installer un bon vieux compte root !
sudo passwd root
... et donner un mot de passe au compte root !

Puis nous allons faire un petit changement important :
sudo ln -sf /bin/bash /bin/sh
/bin/sh est un lien "symlink" vers /bin/dash, mais nous nous voulons /bin/bash. La commande précédente permet de s'assurer que nous aurons bien /bin/bash...

Installons premièrement le server SSH indispensable surtout si vous êtes à distance :
$ sudo apt-get install ssh openssh-server

[UPDATE du 27/06/07] : Afin de renforcer la sécurité dudit serveur, vous pouvez modifier le /etc/ssh/sshd_config
sudo vim /etc/ssh/sshd_config

.. et ajouter la ligne suivante (ce qui interdira à root de se connecter) :
PermitRootLogin no

Configurons le fichier /etc/hosts afin qu'il ressemble à ça :
sudo vim /etc/hosts

127.0.0.1 localhost.localdomain localhost
82.244.xx.xx monserveur.serveur.com monserveur
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

ATTENTION : à adapter avec votre vraie adresse IP ! :o)

Maintenant tapez :
sudo echo monserveur.serveur.com > /etc/hostname
et rebootez votre système. Au redémarrage, essayez les commandes suivantes :
hostname
hostname -f


Les deux devraient vous retourner : monserveur.serveur.com.

Editons ou vérifions maintenant le fichier /etc/apt/sources.list et soyez sur d'avoir ajouté les sources pour universe et multiverse.
Puis tapez les commandes suivantes :
sudo apt-get update
sudo apt-get upgrade


Nous allons maintenant installer quota qui va nous permettre de limiter ou de définir une taille maxi d'hébergement.
sudo apt-get install quota

Il va falloir maintenant éditer /etc/fstab :
sudo vim /etc/fstab

... ce qui va donner quelque chose comme ca :
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# /dev/hda1
UUID=9e00f33f-33e5-457b-a32a-fde2911b7c67 /               ext3    defaults,errors=remount-ro,usrquota,grpquota 0       1
# /dev/hda5
UUID=39504888-6254-49ff-a738-277053b3f53d none            swap    sw              0       0
/dev/hdc        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/hdd        /media/cdrom1   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

L'important étant de rajouter usrquota et grpquota sur la ligne de la partition principale !
Pour activer quota, il va falloir rentrer les commandes suivantes, dans l'ordre :
sudo touch /quota.user /quota.group
sudo chmod 600 /quota.*
sudo mount -o remount /
sudo quotacheck -avugm
sudo quotaon -avug


Passons à un gros morceau : le serveur DNS
sudo apt-get install bind9

Pour des raison de sécurité, nous allons configurer bind afin qu'il tourne dans un environnement chrooté.
sudo /etc/init.d/bind9 stop

Il faut éditer /etc/default/bind9 :
sudo vim /etc/default/bind9

et veillez à ce que le fichier ressemble à ça :
OPTIONS="-u bind -t /var/lib/named"
# Set RESOLVCONF=no to not run resolvconf
RESOLVCONF=yes

Créons maintenant les fichiers, les répertoires et la configuration indispensables à cet environnement chrooté de bind :
sudo mkdir -p /var/lib/named/etc
sudo mkdir /var/lib/named/dev
sudo mkdir -p /var/lib/named/var/cache/bind
sudo mkdir -p /var/lib/named/var/run/bind/run
sudo mv /etc/bind /var/lib/named/etc
sudo ln -s /var/lib/named/etc/bind /etc/bind


puis

sudo mknod /var/lib/named/dev/null c 1 3
sudo mknod /var/lib/named/dev/random c 1 8
sudo chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
sudo chown -R bind:bind /var/lib/named/var/*
sudo chown -R bind:bind /var/lib/named/etc/bind


Nous allons maintenant modifier le fichier /etc/default/syslogd afin qu'il ressemble à ça :
sudo vim /etc/default/syslogd

#
# Top configuration file for syslogd
#

#
# Full documentation of possible arguments are found in the manpage
# syslogd(8).
#

#
# For remote UDP logging use SYSLOGD="-r"
#
SYSLOGD="-a /var/lib/named/dev/log"

On redémarre le daemon :
sudo /etc/init.d/sysklogd restart

Puis on redémarre bind :
sudo /etc/init.d/bind9 start

Nous allons maintenant installer le serveur MySQL :
sudo apt-get install mysql-server mysql-client libmysqlclient15-dev

Puis nous allons éditer le fichier /etc/mysql/my.cnf :
sudo vim /etc/mysql/my.cnf

et nous allons commenter la ligne :
[...]
#bind-address = 127.0.0.1
[...]

afin que le serveur "écoute" non seulement sur le localhost mais aussi sur toutes les adresses.

On redémarre le serveur MySQL :
sudo /etc/init.d/mysql restart

Il faut maintenant "sécuriser" MySQL et mettre un mot de passe à l'utilisateur root :
sudo mysql_secure_installation

 ... et répondez aux questions !

Nous allons maintenant installer Postfix avec le SMTP-AUTH et TLS :
sudo apt-get install postfix libsasl2 sasl2-bin libsasl2-modules libdb3-util procmail

A la première question posée dans la console (Type de configuration) répondez Site Internet et à la deuxième (Nom de courrier) répondez : monserveur.serveur.com (à adapter avec votre vraie config biensur !)
Mais par défaut, postfix n'est pas assez bien "configuré". Nous allons le reconfigurer :
sudo dpkg-reconfigure postfix

et répondre aux questions suivantes :
Type de configuration? <-- Site Internet
Destinataire du courrier destiné au superutilisateur : <-- [laisser blanc, ne rien mettre]
Nom de courrier ? <-- monserveur.serveur.com
Autres destinations pour lesquelles le courrier sera accepté (champ vide autorisé) : <-- monserveur.serveur.com, localhost.serveur.com, localhost.localdomain, localhost
Faut-il forcer des mises à jour synchronisées de la file d'attente des courriels ? <-- Non
Réseaux internes : <-- 127.0.0.0/8
Taille maximale des boîtes aux lettres : <-- 0
Caractère d'extension des adresses locales : <-- +
Protocoles internet à utiliser : <-- tous (ou ipv4)

Puis, il va falloir faire un peu de configuration :
sudo postconf -e 'smtpd_sasl_local_domain ='
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
sudo postconf -e 'broken_sasl_auth_clients = yes'
sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
sudo postconf -e 'inet_interfaces = all'
sudo echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
sudo echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf


sudo mkdir /etc/postfix/ssl
sudo cd /etc/postfix/ssl/

sudo openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024

sudo chmod 600 smtpd.key
sudo penssl req -new -key smtpd.key -out smtpd.csr
sudo openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
sudo openssl rsa -in smtpd.key -out smtpd.key.unencrypted


sudo mv -f smtpd.key.unencrypted smtpd.key
sudo openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650


sudo postconf -e 'smtpd_tls_auth_only = no'
sudo postconf -e 'smtp_use_tls = yes'
sudo postconf -e 'smtpd_use_tls = yes'
sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
sudo postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key'
sudo postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt'
sudo postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_received_header = yes'
sudo postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
sudo postconf -e 'tls_random_source = dev:/dev/urandom'
sudo postconf -e 'myhostname = monserveur.serveur.com' (cette ligne est à adapter à votre vraie configuration !)


 Et puis nous faisons :
sudo /etc/init.d/postfix restart

Maintenant, il y a deux ou trois trucs à changer pour que l'authentification fonctionne correctement :
sudo mkdir -p /var/spool/postfix/var/run/saslauthd

Puis il faut vérifier que /etc/default/saslauthd ressemble à ça :
sudo vim /etc/default/saslauthd

#
# Settings for saslauthd daemon
#

# Should saslauthd run automatically on startup? (default: no)
START=yes

# Which authentication mechanisms should saslauthd use? (default: pam)
#
# Available options in this Debian package:
# getpwent  -- use the getpwent() library function
# kerberos5 -- use Kerberos 5
# pam       -- use PAM
# rimap     -- use a remote IMAP server
# shadow    -- use the local shadow password file
# sasldb    -- use the local sasldb database file
# ldap      -- use LDAP (configuration is in /etc/saslauthd.conf)
#
# Only one option may be used at a time. See the saslauthd man page
# for more information.
#
# Example: MECHANISMS="pam"
MECHANISMS="pam"

# Additional options for this mechanism. (default: none)
# See the saslauthd man page for information about mech-specific options.
MECH_OPTIONS=""

# How many saslauthd processes should we run? (default: 5)
# A value of 0 will fork a new process for each connection.
THREADS=5

# Other options (default: -c)
# See the saslauthd man page for information about these options.
#
# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
# Note: See /usr/share/doc/sasl2-bin/README.Debian
OPTIONS="-c  -m /var/spool/postfix/var/run/saslauthd -r"

On redémarre saslauthd :
sudo /etc/init.d/saslauthd start

Installons maintenant tout ce qui est relatif au serveur pop, imap, etc. :
sudo apt-get install courier-authdaemon courier-base courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-ssl gamin libgamin0 libglib2.0-0

Lors de l'installation, à la première question vous répondrez non et à la deuxième simplement OK

Maintenant installons apache, php5 etc. :
sudo apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-json php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Répondez OUI à la question concernant le support Maildir ... Puis :
sudo vim /etc/apache2/mods-available/dir.conf

et on va changer la ligne DirectoryIndex comme cela :
#DirectoryIndex index.html index.cgi index.pl index.php index.xhtml
DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.xhtml

Puis on rajoute l'écoute sur le port httpd 443 :
sudo vim /etc/apache2/ports.conf

Listen 80
Listen 443

On met en place les modules apache :
sudo a2enmod ssl
sudo a2enmod rewrite
sudo a2enmod suexec
sudo a2enmod include


 ... et on relance apache :
sudo /etc/init.d/apache2 force-reload

Maintenant nous allons désactiver php de "manière globale". En effet, sous ISPConfig, vous pouvez autoriser ou non l'utilisation de php pour les sites hébergés. Cette étape n'est pas indispensable mais c'est à vous de voir si cela sera utile ou non dans votre cas ...
sudo vim /etc/mime.types

 ... et on commente les lignes relatives à php :
[...] #application/x-httpd-php phtml pht php
#application/x-httpd-php-source phps
#application/x-httpd-php3 php3
#application/x-httpd-php3-preprocessed php3p
#application/x-httpd-php4 php4
[...]

Puis :
sudo vim /etc/apache2/mods-enabled/php5.conf

# AddType application/x-httpd-php .php .phtml .php3
# AddType application/x-httpd-php-source .phps

# AddType application/x-httpd-php .php .phtml .php3
# AddType application/x-httpd-php-source .phps


On redémarre apache :
sudo /etc/init.d/apache2 restart

On installe maintenant le serveur ftp (proftpd):
sudo apt-get install proftpd ucf

A la question posée, vous choisissez de faire tourner proftpd séparément (standalone)
Au redémarrage de proftpd vous allez certainement avoir une erreur du type :
- IPv6 getaddrinfo 'server1.example.com' error: Name or service not known

On va facilement corriger ce problème :
sudo vim /etc/proftpd/proftpd.conf

 ... et vos allez asser la ligne UseIPV6 à off comme cela :
UseIPv6 off

On renforce un peu la sécurité de proftpd :
sudo vim /etc/proftpd/proftpd.conf

et on rajoute :
DefaultRoot ~
IdentLookups off
ServerIdent on "FTP Server ready."

Afin de rendre compatible le fichier de configuration de proftpd avec ISPConfig, on fait une petite manip :
sudo ln -s /etc/proftpd/proftpd.conf /etc/proftpd.conf

Puis on redémarre proftpd :
sudo /etc/init.d/proftpd restart

On installe webalizer pour les stats de fréquentation des sites :
sudo apt-get install webalizer

On installe ce qu'il faut pour synchroniser l'horloge du serveur :
sudo apt-get install ntp ntpdate

Puis on termine la config avec l'installation de quelques packages indispensables pour ISPConfig (notamment spammassassin) :
sudo apt-get install libhtml-parser-perl libdb-file-lock-perl libnet-dns-perl

Voila la config du serveur à proprement parler est terminée !!!

Installons ISPConfig :
Récupérez la dernière version stable (au 25/06/07) :
cd /home/user/Desktop
(user est à remplacer par votre vrai nom d'utilisateur ! :o) )

Puis :
wget http://ovh.dl.sourceforge.net/sourceforge/ispconfig/ISPConfig-2.2.14.tar.gz

Puis :
tar xvfz ISPConfig-2.2.14.tar.gz

Puis :
cd install_ispconfig

ATTENTION : Vous avez besoin de plusieurs packages à ce niveau afin de compiler correctement les applications comme notamment gcc, flex, libmysqlclient15-dev.

Puis lançons l'installation :
sudo ./setup

L'installateur va désormais lancer un long processus de compilation (relatif à la puissance de votre machine - 30 min environ sur un Athlon XP 2000+ et 1 Go de RAM DDR) de apache, php5, etc. Il s'agit en fait de compiler un serveur apache qui va écouter sur le port 81 pour faire tourner ISPConfig. Il n'y a pas d'interférence avec l'installation du apache "normal" qui a été installé avant. De plus, ISPConfig installe un apache1.3 alors que nous avons installés tout à l'heure un apache2.

Vous choisissez votre langage (français serait idéal en l'occurence ... !)
Vous acceptez les licences...
Mode d'installation : choisissez standard

Lorsque l'apache d'ISPConfig est compilé, un certificat SSL est créé. Par conséquent on va vous poser quelques questions... regardez les exemples fournits et adaptez à vos besoins.

ATTENTION : Aux étapes 7 et 8, "crypter la clé ..." etc. : répondez NON !!! Sans quoi ISPConfig ne pourra être redémarré que en fournissant la bonne clé !

Si la compilation échoue, l'installation s'arrête et tous les fichiers de compil en cours sont effacés ! Même le répertoire install_ispconfig disparait ! Vous devriez avoir un message d'erreur qui vous indique quel est le véritable problème ... En général, il manque une config ou un package ... Recommencez depuis le début de l'installation de ISPConfig (tar xvfz ISPConfig-2.2.14.tar.gz, etc.) puis suivez la même procédure...

Puis vers la fin de l'installation, on vous pose quelques questions :
Serveur mysql : répondez localhost
utilisateur mysql: root
mot de passe mysql : le mot de passe de root
Le nom de la base de données IPSCOnfig : ispconfigdb

Attention pour la suite choisissez bien votre adresse IP :
L'adresse IP du serveur ISPConfig : 192.168.0.1 (si vous êtes connecté à domicile, derrière une freebox en mode routeur par exmeple) sinon rentrer votre adresse IP publique (exemple : 82.244.xx.xx)
Le nom d'hote: www Le domaine : votrenomdedomaine.com (à adapter, biensur !)
Sélection du protocole (http ou https (crypté)) pour accéder à ISPConfig :
Personnellement, j'ai choisi 1 pour SSL Vous pourrez donc accéder à votre système ISPConfig à l'adresse https://www.votrenomdedomaine.com:81.

Pour la prmière fois, connectez vous avec l'identifiant admin et le mot de passe admin. Changez vite ce mot de passe dans les paramètres de ISPCOnfig ! :o)))

Et voila : c'est terminé !!!

Il ne vous reste plus qu'à vous familiariser avec l'interface, la config, etc. Dans le menu Aide, vous trouverez des tutos en francais fots bien faits. Allez les consulter pour apprendre à vous servir de toute l'interface !
vendredi, juin 1 2007

Gravatar de BastNicFranciser phpLDAPadmin via BastNic

phpLDAPadmin est une interface web d'administration d'annuaires LDAP. Vous pouvez l'installer par la commande

sudo aptitude install phpldapadmin

Et la documentation sur les annuaires OpenLDAP se trouve sur le wiki ubuntu-fr. Néanmoins je ne parlerais ici que de sa traduction et non de son utilisation.

 46 /* The language setting. If you set this to 'auto', phpLDAPadmin will attempt
 47    to determine your language automatically. Otherwise, available lanaguages
 48    are: 'ct', 'de', 'en', 'es', 'fr', 'it', 'nl', and 'ru'
 49    Localization is not complete yet, but most strings have been translated.
 50    Please help by writing language files. See lang/en.php for an example. */
 51 //$config->custom->appearance['language'] = 'auto';

D'après l'aide, pour passer l'interface en français il faut décommenter la ligne et mettre fr. Mais tel quel, ça ne marche pas !

Analysons le problème : Sur Ubuntu, le paquet installe par défaut les fichiers dans /etc/phpldapadmin/ pour les fichiers de conf et templates et dasn /usr/share/phpldapadmin/ pour les fichiers systèmes. Le passage que j'ai cité ci-dessus se trouve dans /etc/phpldapadmin/config.php.

Fichier /usr/share/phpldapadmin/lib/common.php, ligne 121 :

121     # Grab the language file configured in config.php
122     if ($language != null) {
123         if (strcmp($language,'english') == 0)
124             $language = 'en_GB';
125         $language_file = LANGDIR.$language ;
126         
127         # Set language
128         putenv('LANG='.$language); # e.g. LANG=de_DE
129         setlocale(LC_ALL,$language.".UTF-8"); # set LC_ALL to de_DE
130         bindtextdomain('messages',LANGDIR);
131         bind_textdomain_codeset('messages','UTF-8');
132         textdomain('messages');
133         header('Content-type: text/html; charset=UTF-8', true);
134     }

On constate dans ce bout de code que les instructions sur la langue doit-être du type 'fr_FR' plutôt que 'fr'.

Fichier /etc/phpldapadmin/config.php, ligne 51

  51  $config->custom->appearance['language'] = 'fr_FR';

Update du 3/06 : En fait il existe une méthode auto_lang justement pour passer la langue de "fr" à "fr_FR". Du coup la modification devient.

Fichier /usr/share/phpldapadmin/lib/common.php, ligne 125 :

125         $language = auto_lang($language);

Malgrès cette correction, phpLDAPadmin n'est toujours pas en français.
Heureusement, bien que ce soit assez peu documenté sur Internet, on trouve assez facilement qu'il manque ligne 129 une précision sur le codage du texte. phpLDAPadmin est tout en UTF-8, on en conclut donc qu'il faut ajouter :

Fichier /usr/share/phpldapadmin/lib/common.php, ligne 129 :

129         setlocale(LC_ALL,$language.".UTF-8"); # set LC_ALL to de_DE

On recharge la page, et tout est maintenant en français.

Rapport de bug : Bug 118322 signalé sur le launchpad.

Gravatar de BastNicFranciser phpLDAPadmin via BastNic

phpLDAPadmin est une interface web d'administration d'annuaires LDAP. Vous pouvez l'installer par la commande

sudo aptitude install phpldapadmin

Et la documentation sur les annuaires OpenLDAP se trouve sur le wiki ubuntu-fr. Néanmoins je ne parlerais ici que de sa traduction et non de son utilisation.

 46 /* The language setting. If you set this to 'auto', phpLDAPadmin will attempt
 47    to determine your language automatically. Otherwise, available lanaguages
 48    are: 'ct', 'de', 'en', 'es', 'fr', 'it', 'nl', and 'ru'
 49    Localization is not complete yet, but most strings have been translated.
 50    Please help by writing language files. See lang/en.php for an example. */
 51 //$config->custom->appearance['language'] = 'auto';

D'après l'aide, pour passer l'interface en français il faut décommenter la ligne et mettre fr. Mais tel quel, ça ne marche pas !

Analysons le problème : Sur Ubuntu, le paquet installe par défaut les fichiers dans /etc/phpldapadmin/ pour les fichiers de conf et templates et dasn /usr/share/phpldapadmin/ pour les fichiers systèmes. Le passage que j'ai cité ci-dessus se trouve dans /etc/phpldapadmin/config.php.

Fichier /usr/share/phpldapadmin/lib/common.php, ligne 121 :

121     # Grab the language file configured in config.php
122     if ($language != null) {
123         if (strcmp($language,'english') == 0)
124             $language = 'en_GB';
125         $language_file = LANGDIR.$language ;
126         
127         # Set language
128         putenv('LANG='.$language); # e.g. LANG=de_DE
129         setlocale(LC_ALL,$language.".UTF-8"); # set LC_ALL to de_DE
130         bindtextdomain('messages',LANGDIR);
131         bind_textdomain_codeset('messages','UTF-8');
132         textdomain('messages');
133         header('Content-type: text/html; charset=UTF-8', true);
134     }

On constate dans ce bout de code que les instructions sur la langue doit-être du type 'fr_FR' plutôt que 'fr'.

Fichier /etc/phpldapadmin/config.php, ligne 51

  51  $config->custom->appearance['language'] = 'fr_FR';

Update du 3/06 : En fait il existe une méthode auto_lang justement pour passer la langue de "fr" à "fr_FR". Du coup la modification devient.

Fichier /usr/share/phpldapadmin/lib/common.php, ligne 125 :

125         $language = auto_lang($language);

Malgrès cette correction, phpLDAPadmin n'est toujours pas en français.
Heureusement, bien que ce soit assez peu documenté sur Internet, on trouve assez facilement qu'il manque ligne 129 une précision sur le codage du texte. phpLDAPadmin est tout en UTF-8, on en conclut donc qu'il faut ajouter :

Fichier /usr/share/phpldapadmin/lib/common.php, ligne 129 :

129         setlocale(LC_ALL,$language.".UTF-8"); # set LC_ALL to de_DE

On recharge la page, et tout est maintenant en français.

Rapport de bug : Bug 118322 signalé sur le launchpad.

dimanche, mai 13 2007

Gravatar de tigrouLes titres de OuiFM en OSD via tigrou

J'aime beaucoup écouter la radio parisienne OuiFM . Pour les provinciaux, il est possible de l'écouter directement sur le site via une animation flash qui affiche le titre en cours ou avec son lecteur préféré via le flux MP3 qui est probablement capable d'en faire de même, mais il n'est pas très pratique devoir remettre au premier plan le lecteur (et/ou de changer de bureau virtuel). Je trouve aussi pénible que le lecteur affiche systématiquement le titre comme le font certains, je préfère avoir le titre à la demande. J'ai donc écrit un petit script shell qui va récupèrer le titre sur le site de OuiFM comme le fait l'animation flash et l'affiche en OSD . Pour l'utiliser sous Ubuntu (et probablement Debian), il faut installer le paquet xosd-bin et php (4 ou 5) en mode ligne de commande avec la commande suivante :

$ sudo apt-get install xosd-bin php5-cli

Le paquet xosd-bin fournit le programme osd_cat qui permet de lire un fichier à la manière de cat en affichant le résultat en OSD selon différents paramètres (couleur, police, position, ...). J'ai associé l'exécution de ce script à la touche F9 dans Openbox , ainsi si un titre passe et je ne connais pas l'artiste, je peux connaître rapidement le titre en pressant cette touche.

#! /bin/sh
 
URL_DATA="http://www.ouirock.com/data1.php"
 
TMP_FILE="/tmp/ouifm_data"$$".txt"
DATA_OSD=""
 
OSD_FONT='-bitstream-dejavu sans-bold-r-*-*-17-*-*-*-*-*-*-*'
OSD_VER_POS="bottom"
OSD_HOR_POS="right"
OSD_COLOR="#95b9c8"
OSD_DELAY=30
OSD_LINE_FROM_BOTTOM=2
 
get_infos ()
{
    DATA_SHELL=`wget "$1" -q -O - | sed 's/&/ /g'`
    eval $DATA_SHELL
    DATA_OSD=`echo '$artiste' - '$titre'"))."\n"; ?>' | php`
}
 
display_infos ()
{
    get_infos $URL_DATA
    echo "$DATA_OSD" > $TMP_FILE
    osd_cat -l $OSD_LINE_FROM_BOTTOM  -f "$OSD_FONT" -p "$OSD_VER_POS" -A "$OSD_HOR_POS" -c "$OSD_COLOR" -d "$OSD_DELAY" $TMP_FILE
}
 
touch $TMP_FILE
display_infos $URL_DATA
rm -f $TMP_FILE

Le seul point particulier concerne la fonction get_infos qui récupère les données sur le site de OuiFM puis crée les variables avec eval et les décode avec un tout petit morceau de PHP passé directement à l'interprèteur.

Billet rédigé en écoutant entre autres "Hey Gravity - Risen (She Said)", "Rinocerose - Cubicle", "Green Day - Basket Case", ... :-)

vendredi, avril 20 2007

Gravatar de mumblyThe Perfect Setup - Ubuntu Feisty Fawn (Ubuntu 7.04 server) via mumbly

Comme à chaque sortie d'une nouvelle version d'Ubuntu, HowtoForge nous gratifie d'un excellent et simple tuto (en anglais) pour installer un serveur basé sur Ubuntu Gnu/Linux 7.04 "Feisty Fawn".
Et tout y est, ou presque ... : Apache web server (SSL-capable), Postfix mail avec SMTP-AUTH et TLS, BIND, DNS server, Proftpd FTP server, MySQL server, Courier POP3/IMAP, Quota, Firewall, etc.
... et c'est ici que ça se passe : http://www.howtoforge.com/perfect_setup_ubuntu704
samedi, mars 10 2007

Gravatar de tigrouWarning au lancement de scripts PHP4 en CLI via tigrou

J'ai un warning pénible lors du lancement d'un script PHP4 en ligne de commande (CLI) sur ma Ubuntu Edgy Eft installée sur ma Dedibox . Rien de bien grave, mais à chaque lancement d'un script (au hasard un de ceux d'eZ Publish :-), j'ai le message suivant :

$ php4 update/common/scripts/cleanup.php -s plain_site_admin expired_session
PHP Warning:  mime_magic: type regex            BEGIN[[:space:]]*[{]    application/x-awk invalid in Unknown on line 0

Un moyen de supprimer ce message systématique trouvé sur Launchpad et sur l'outil de rapport de bug de Debian est d'aller commenter la ligne 273 du fichier /usr/share/file/magic.mime . Simple, un peu crade mais au moins ça marche et puis je ne pense pas que cette modification ait beaucoup d'impact sur le reste du système...