Mettre son dossier www dans home pour chaque utilisateur linux

Longtemps je me suis cassé la tête et les dents à coup de chmod et chown pour résoudre la question de comment mettre son dossier www dans home pour chaque utilisateur linux. Aujourd’hui, je vous présente un moyen simple d’y parvenir avec le module Apache userdir.Avant de connaitre l’astuce que je vais vous présenter, je me torturais, comme beaucoup d’auters j’imagine, à configurer apache d’une part, et des permissions tarabiscotées à coup de chmod d’autre part. C’était sans compter sur un petit module apache fort pratique, à savoir userdir.

Pourquoi mettre son dossier www dans le répertoire /home de l’utilisateur ?

D’abord parce que c’est plus propre : chaque utilisateur à son login et son mot de passe, et donc son répertoire. Ainsi on sépare bien toutes nos entités et on s’y retrouve plus facilement.

Ensuite, parce que c’est plus sécurisé : Comme dit juste avant, on ferme tout et chaque utilisateur accède à son espace et pas celui des autres, grâce à son login/mot de passe. De plus, si comme moi vous avez installé votre /home sur une partition distincte de la partition système, vous ne risquez pas de perdre vos données web si jamais quelque chose tournait mal et que vous vouliez récupérer votre boulot.

Ce qu’on va faire

Création d’un espace individuel pour chaque site
Activation du module Apache UserDir
Configuration d’un virtual host associé

Avant de commencer

Toutes les manipulations présentées ici sont réalisées sur un système Debian 7 Wheezy, mais ça fonctionne également sur tout système de base Debian avec Apache2 d’installé, comme Ubuntu. Il va de soit que tout se passe en ligne de commande et qu’un minimum de connaissance du shell est nécessaire.

On y va 🙂

Création d’un utilisateur

Activation du module Apache userdir

On active le module (1ère commande), puis on modifie sa configuration (2ème commande)

Dans le fichier de config, on a juste un truc à modifier : public_html qu’on va transformer en www aux lignes 2 et 5. On pourrait très bien garder le nom « public_html », mais on va garder la cohérence du dossier /var/www.

Voilà ce que ça donne :
Ce qu’on a fait ici c’est simplement dire que les fichiers visibles et accessibles (nos sites) se trouvent toujours dans le dossier /home/*/www (l’astérisque sert à dire n’importe quel utilisateur). Pensez à sauvegarder.

Création du virtualhost

On se rend dans le dossier des vhost, et on commence par jeter un oeil à celui par défaut.

Ça c’est mon vhost par défaut. Le votre est peut etre différent, mais ce qui importe c’est qu’il indique DocumentRoot /home/*/www
Vous remarquez ? Comme dans mon userdir.conf 🙂

Vu qu’il est bon, on le copie colle en le renommant du nom de notre site, et on l’édite.

Renseignez bien le chemin tel qu’il existe cette fois ci, cf lignes 5 et 10, et faites en sorte d’avoir un alias/name valide, sans quoi ça ne fonctionnera pas.

Activation du site et reload d’apache

Le reload est important, il permet de prendre en compte le nouveau site activé, mais aussi le module qui a été activé, userdir.

Création du site et tests

Rien de méchant, on se connecte avec le user qu’on a créé précédemment, et on lui fait créer un dossier www dans son propre espace.

Alors oui c’est vrai on pourrait mettre tous les fichiers du site à la racine du user, mais je préfère procéder ainsi et me garder la liberté de pouvoir mettre des choses à côté du répertoire de mon site si je le souhaite, comme mes backups de base de données par exemple, ou simplement une nouvelle version du site en cours de développement.

Testez votre site en créant un bête index.html dans www et profitez 🙂

Fini la prise de tête avec chmod !