Elle traînait dans le cartons depuis plus d'un an, elle arrive enfin : la nouvelle version de mon site est enfin en ligne !
C'est Aymeric aka Miho qui a réalisé le graphisme que je trouve très clair et laissant bien la place pour le contenu avec une bonne lisibilité.
Je l'ai développé en utilisant mon propre framework qui optimise toutes les requêtes vers le serveur en compressant les pages HTML, mais aussi les CSS et les JavaScript.
Voilà, notre serveur est maintenant opérationnel en tout point.
Encore faut-il ajouter des sites internet dessus, transférer les fichiers, faire pointer les DNS dessus, etc...
Voici donc la marche à suivre pour ajouter un nouveau site sur le site :
I : Ajouter un nouvel utilisateur avec la commande :
useradd -m -g www-data DOMUSER
Comme nous avons créer le dossier www dans /etc/skel, la création de l'utilisateur va directement crée le /home de ce dernier avec le dossier pour contenir les fichiers du futur site web.
Dans ce dernier billet, je vais recensé tout un tas de petites choses qui améliore la vie du serveur et de l'administrateur.
Tout d'abord, je vous conseille de modifier les heures d'exécution des tâches cron dans /etc/crontab pour mettre des heures de creux de votre serveur ; pensez aux graphes de munin pour définir ces heures !
Ensuite, installons de nouveaux paquets :
apt-get install screen ncftp ntpdate apticron
Screen permet de lancer un nouveau shell dans un shell courant.
UPDATE : voir la version à jour pour Debian Squeeze pour l'installation de Munin.
UPDATE : voir la version à jour pour Debian Squeeze pour l'installation de Monit.
Notre serveur fonctionne bien, avec quelques bans pour différents services. Mais qu'arrive-t-il si un démon tombe en panne ? Et puis comment connait-on la charge du serveur ?
Monit va répondre à la première question en vérifiant à intervalle régulier tous les services et les redémarrer si besoin.
UPDATE : voir la version à jour pour Debian Squeeze.
fail2ban est utilisé pour lire les log de tous les autres démons et bannir des adresses IP s'ils ont échoués à plusieurs reprises de se connecter.
On installe simplement par apt :
apt-get install fail2ban
Puis on configure fail2ban dans /etc/fail2ban/jail.conf
bantime = 600
destemail = server@domain.tld
action = %(action_mwl)s
[postfix]
action = %(action_)s
bantime = 3600
De cette façon, on recevra un email lorsque fail2ban fera une action quelconque.
UPDATE : voir la version à jour pour Debian Squeeze.
Cette partie sera la plus grande car la plus complexe. Et on ne se facilite pas la tâche puisque le serveur de mail incluras un antispam avec vérifications des éventuels virus contenu dans les emails. L'antispam pourra aussi apprendre de ses erreurs lorsque l'utilisateur final déplacera simplement ses emails dans les dossiers IMAP.
Bref, commençons par supprimer l'éventuel Exim 4 qui serait présent sur le serveur :
UPDATE : voir la version à jour pour Debian Squeeze.
J'ai choisi PowerDNS plutôt que Bind parce que sa configuration peut se faire de différentes façons. J'ai choisi d'utiliser MySQL. On désinstalle donc bind avant d'installer PowerDNS :
apt-get remove bind9
apt-get install pdns-server pdns-backend-mysql pdns-recursor
PowerDNS est découpé de deux façon différentes et indépendantes : le serveur qui permet de définir vos zones (vos sites, sous-domaines, etc...) et le recursor qui permet d'effectuer des requêtes DNS vers l'extérieur.
UPDATE : voir la version à jour pour Debian Squeeze.
On installe le serveur :
apt-get install mysql-server
Durant l'installation, il vous sera demandé le mot de passe de l'utilisateur MySQL root.
MySQL vient avec une commande sympathique qui permet de sécurisé le serveur :
mysql_secure_installation
# Current password : VOTRE_MOT_PASSE
# set new password : N
# remove anonymous Users : Y
# Disallow root login remotley : Y
UPDATE : voir la version à jour pour Debian Squeeze.
On installe le paquet simplement :
apt-get install vsftpd
Puis on modifier le fichier de configuration /etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
force_dot_files=YES
De cette façon, chaque utilisateur de notre serveur (un utilisateur étant associé à un site) pourra se connecter par FTP et n'avoir accès qu'à son répertoire.
On recharge la configuration :
/etc/init.d/vsftpd force-reload
Et on passe au serveur de base de données, MySQL.
UPDATE : voir la version à jour pour Debian Squeeze.
Et c'est là qu'on découvre les joies de Debian :
apt-get install apache2 apache2-dev libapache2-mod-gnutls php5 php5-mysql php5-dev php-pear php5-gd php5-mcrypt
Nous installes tout le nécessaire pour apache avec PHP5.
Un peu ce paramétrage s'impose quand même : dans le fichier /etc/apache2/mods-available/userdir.conf, remplacer public_html par www.
En effet, sur notre serveur, chaque site aura un utilisateur associé avec un dossier www où les fichiers web seront déposés.