Développer un site dans votre home

Tags:: linux :: apache

Ce week-end, un ami est passé à la maison et nous avons discuté de la facilité d'utiliser Windows pour développer un site html/php alors que sous Linux nous nous trouvons vite bloqué par des droits... Effectivement, la configuration de Apache vous demande de développer dans /var/www/html mais votre utilisateur n'a pas du tout le droit de toucher ce répertoire. Cela complique les choses pour un néophyte et peut même être bloquant.

Il existe une solution pour passer outre cela, je vais vous montrer ce que j'ai expliqué à cet ami pour pouvoir développer dans /home/votre_login sans aucune difficulté.

Note: En lisant ce ticket, remplacez votre_login par votre login Linux

Apache a un module nommé "mod_user" généralement installé sur vos distribution. Voici comment faire.

Tout d'abord, nous allons créer un répertoire dans votre home qui se nommera "public_html". Puis nous changeons les droits de ce répertoire pour que le groupe apache puisse y accéder:


cd /home/votre_login
mkdir /home/votre_login/public_html
chmod -R 755 /home/votre_login/public_html
 

Maintenant le souci c'est que, même si vous avez laissé la lecture à tout le monde sur le répertoire "public_html", le répertoire "/home/votre_login" n'est pas "traversable". Nous allons changer cela:


cd /home
chmod 711 /home/votre_login
 

Cette commande va permettre à tout le monde de "traverser" votre répertoire. Cela ne veut pas dire que tout le monde pourra "lire" mais juste descendre jusqu'à des répertoires qui seront authorisés. "public_html" est justement un répertoire que nous laissons en lecture autorisé.

Reste maintenant à activer la configuration "mod_user" pour apache:


su -c "gedit /etc/httpd/conf/httpd.conf"
ou sur Ubuntu:
sudo gedit /etc/httpd/conf/httpd.conf
 

Après avoir tapé votre mot de passe, l'éditeur s'ouvre. Chercher ce bloc:


<IfModule mod_userdir.c>
   #
   # UserDir is disabled by default since it can confirm the presence
   # of a username on the system (depending on home directory
   # permissions).
   #
   UserDir disable

   #
   # To enable requests to /~user/ to serve the user's public_html
   # directory, remove the "UserDir disable" line above, and uncomment
   # the following line instead:
   #
   #UserDir public_html

</IfModule>
 

Ce que vous devez faire, c'est :

  • ajouter un dièse devant "UserDir disable"
  • enlever celui qui est devant "UserDir public_html".

Vous devriez donc avoir cela:


<IfModule mod_userdir.c>
   #
   # UserDir is disabled by default since it can confirm the presence
   # of a username on the system (depending on home directory
   # permissions).
   #
   #UserDir disable

   #
   # To enable requests to /~user/ to serve the user's public_html
   # directory, remove the "UserDir disable" line above, and uncomment
   # the following line instead:
   #
   UserDir public_html

</IfModule>
 

Il doit y avoir, généralement juste en dessous, un bloc "Directory" de cette forme:


<Directory /home/*/public_html>
 

Enlevez alors tous les dièses depuis cette ligne jusqu'à </Directory> inclut.

Maintenant, relancez Apache:


su -c "/etc/init.d/httpd restart"
 

Allez dans votre répertoire /home/votre_login/public_html et créez un fichier index.html... tapez un peu de code HTML ou simplement "Hello". Enfin, ouvrez un navigateur et allez sur l'adresse: http://127.0.0.1/~votre_login/index.html et admirrez le fonctionnement.

Voilà, vous ne serez plus bloqué par les droits du répertoire /var/www/html et vous pourrez travailler facilement. Attention tout de même, cette configuration ne doit pas être une configuration de production, elle ne doit servir que pour développer un site.

Utilisez le code barre pour ouvrir le ticket dans votre mobile:
This ticket on you mobile
1 Lundi 30 Juin 2008 11:47:36, Guillaume

"Attention tout de même, cette configuration ne doit pas être une configuration de production, elle ne doit servir que pour développer un site."

2 questions à ce propos :
- Pourquoi ?
- En ce cas, quelle configuration de production adopter ?

2 Lundi 30 Juin 2008 15:48:56, Metal3d

Parce que tu ouvres un accès de traversée au répertoire de ton user, ce qui est plus risqué.

En plus de cela, tu auras des soucis pour configurer ton chemin pour un domaine précis puisque Apache attend le nom de l'user avec le tilde "~" dans l'url...

En plus tu annonce explicitement que tu as un user nommé tel quel dans ta config...

En prod, on place les sites comme spécifié dans /var/www ou /var/www/html. Ce répertoire, si possible monté avec depuis un autre disque, devra prendre les droits apache ou www-data. Seule l'utilisateur "système" nommé apache ou www-data devra y accèder. Le fait est que tu ne peux pas te loguer en SSH avec les users système. De ce fait, tu n'annonce pas à la terre entière qu'un user "guillaume" existe sur ton serveur, tu n'a pas ouvert des droits de travers à n'importe quel utilisateur, etc...

Il vaut mieux travailler avec logique et normalisations. Le module mod_user ne sert pas à de la prod.

3 Mardi 01 Juillet 2008 09:45:53, Guillaume

On trouve souvent de l'aide pour des environnements de développement mais beaucoup moins pour mettre en place un environnement de production. Donc, merci pour ces éclaircissements :)

Ajouter un commentaire
Veuillez répondre à la question suivante : Taper "geek" sans les guillemets

Trackbacks

Pour ajouter un trackback (retrolien) sur ce ticket, utilisez cette adresse: http://www.metal3d.org/index.php/trackback/default/tb?id=blog%2F95

Tags

Blog Copix Communication PC Config Fedora Vidéo Humour Autre Web Materiel Informatique PHP Développement Mootools HTML Linux WEB IE CSS Vista Microsoft Sympa XHTML Quizz Widget Klik CWE Voeux Bonne année Musique CCRMA Son Audio MAO Reconnaissance vocale Windows Mac Compiz MacOS Mysql Sun Base de données BD Screenlets Screenlet RPM compiz Ubuntu Live FireFox Derambarsh Facebook media informations Sécurité javascript SSH Commande Marketing concours ipod wii QT Trooltech Nokia Libre Logiciels GPL Attali Gnome Dock Compiler Bench undelete reiserfs recovery recover Thread Serveur Optimisation Server Apache Album RSS Flash Air XML Firefox Blender Opensource Orange Internet LiveBox Animaux Droits Logiciels Libres Google Loi RBS netcat Bash Téléphone Spam 3D NIDIA Standards Widgets Merise UML Streaming Developpement Perl MySQL Firewall Parfeu Bayes Novell Réseau Python LVS Salon FTP Dedibox Chrome Administration IRC Gentoo troll video Nouveauté Finance Etudiant spéctacle OpenOffice Javascript Java Info Eclpise ATI design mootools KDE Bureau Design GNU C Pages Jaunes Fun Bijoux Art mail Admin vmware fedora linux VirtualBox VMWare Qemu KVM vim Grep Fglrx Webkit GTK google web JQuery Coup de gueule coup de gueule Lois SVG Raycaster Canvas Hadopi Desktop Jeux Les Sims développement astuces Screen firefox Mobile Safaru Wine bash commande astuce Wave ooc C++ C# Netbook Hercules Bureautique Twitter Safari W3C chrome kazehakaze midori navigateur gecko webkit Links Liens Pyhon Nouvelles Metal Perso Conférence JDLL PCC Roadsend OOC News Acteur Cinéma Chanteur Seven windows orthographe pcc php jdll Slide Application mysql Html twitter python screen curses SVN Android Gphone iPhone OpenGL MindMap Projet Javascrtip Ajax Guitare Tab Tablature JSON firebug Chromium Iphone Titanium music sound android ogg ogv streaming Arkyne svn subversion gnome VLC Tv encoder ffmpeg Cryptage apple microsoft HTML5 Max Apple code youtube quvi git uzbl webgl chromium

  Catalogue professionnel de musique libre


  • twitter entries...
follow me on Twitter

Valid XHTML 1.0 Strict

tumblr visitor