User Tools

Site Tools


coursieps:20050624

Apache, la suite

Exercice: creation d'un hote virtuel

  • créer le répertoire /var/www/hote_virtuel
mkdir /var/www/hote_virtuel
  • créer un hôte virtuel dans /etc/apache2/sites-available/
vi /etc/apache2/sites-available/hote_virtuel
contenant:
<code><VirtualHost *>
Servername www.hote-virtuel.com
DocumentRoot /var/www/hote_virtuel/

</VirtualHost></code>

  • faire un lien symbolique du fichier crée dans /etc/apache2/sites-enabled
ln -s /etc/apache2/sites-available/hote_virtuel /etc/apache2/sites-enabled/hote_virtuel
  • ajouter une entrée dans /etc/hosts
127.0.0.1   ww.hote-virtuel.com
  • tester la configuration
apache2ctl configtest
  • relancer Apache
/etc/init.d/apache2 reload
  • tester avec un browser

La directive Options

  • ajouter un sous-répertoire testdir contenant 2 fichiers file1 et file2
mkdir /var/www/hote_virtuel/testdir
touch /var/www/hote_virtuel/testdire file1
touch /var/www/hote_virtuel/testdire file2

on obtient une erreur:

Forbidden
  You don't have permission to access /testdir/ on this server.
  • pour permettre de browser dans les répertoires ne contenant pas de DirectoryIndex (index.html, index.php, etc. comme défini dans /etc/apache2/apache2.conf), il faut ajouter dans la directive VirtualHost du fichier /etc/apache2/sites-available/hote_virtuel ce qui suit:
<Directory /var/www/hote_viruel>
Options Indexes

et ensuite redémarrer apache:

/etc/init.d/apache reload

Pour avoir plus d'infos, cf. l'excellente documentation en local (http://localhost/manual/) installée par le paquet apache2-doc également disponible sur le site officiel d'apache: http://httpd.apache.org/docs-2.0/

Dans ce cas-ci, il faut lire http://httpd.apache.org/docs-2.0/mod/core.html#options

On y voit que par défaut, toutes les options sont activées (Default All).

Si on utilise la directive Options pour activer une ou plusieurs options, toutes les autres sont désactivées.

Comment désactiver explicitement?

Il suffit de mettre un signe moins (-) devant l'option:

Options -Indexes

Pour activer explicitement, il suffit de mettre un signe plus (+) devant l'option:

Options +Indexes

Ces options sont héritées des répertoires parents et de la configuration Apache au niveau serveur.

Fichiers .htaccess

Il est préférable de mettre les directives dans les fichiers de configuration /etc/apache2:

  • pour de meilleures performances: à chaque requête, il doit regarder dans le répertoire s'il y a un fichier .htaccess → perte de temps
  • pour faciliter l'administration: c'est plus simple d'avoir toutes les directives dans /etc/apache2

Cependant, si on n'y a pas accès, on peut utiliser un fichier nommé .htaccess dans le répertoire où doivent s'appliquer sur les directives.

L'administrateur Apache peut interdire ou restreindre l'utilisation de fichiers .htaccess. cf. la directive AllowOverride: http://httpd.apache.org/docs-2.0/mod/core.html#allowoverride Il faut la mettre dans une directive <Directory>. Dans notre cas (ferme de serveurs), on va imaginer qu'il y a plusieurs types d'abonnement et donc faire la restriction au niveau de l'hôte virtuel. Ici, nous allons empêcher l'utilisateur des fichiers .htaccess Editer /etc/apache2/sites-enabled/hote_virtuel

<VirtualHost *>
        ServerName www.hote-virtuel.com
        DocumentRoot /var/www/hote_virtuel/
        <Directory /var/www/hote_virtuel/>
                Options +Indexes +FollowSymLinks
                AllowOverride None
        </Directory>
</VirtualHost>

et redemarrer apache:

/etc/init.d/apache2 reload

Pour vérifier, créons un fichier .htaccess dans /var/www/hote_virtuel/testdir/ contenant:

<Directory /var/www/hote_virtuel/testdir/>
        Options -Indexes
</Directory>

Si ça fonctionne correctement, on doit pouvoir visionner le contenu du répertoire (puisque la directive dans le .htaccess est ignorée et que dans le VirtualHost on l'a autorisé).

Authentification avec .htaccess

Mettre dans l'hôte virtuel

AllowOverride AuthConfig

au lieu de

AllowOverride None

pour prendre les .htaccess en compte. Ajouter dans /var/www/hote_virtuel/testdir/.htaccess:

Request valid-user
AuthUserFile /home/linux/htpasswd

Ensuite, il faut créer la liste des utilisateurs autorisés (identifiant et mot de passe) dans le fichier /home/linux/htpasswd:

htpasswd -c /home/linux/htpasswd toto

et entrer le mot de passe (deux fois). l'argument -c signifie crée le fichier /home/linux/htpasswd.

Redémarrer apache:

/etc/init.d/apache2 reload

HOWTO sur le site d'Apache.

Activation de sites personnels

Pour activer le site de l'utilisateur linux de la machine, il faut d'abord créer le répertoire /home/linux/public_html/ qui sera la racine du site de l'utilisateur linux:

mkdir /home/linux/public_html/

Ensuite, il faut juste s'assurer que le module userdir est activé:

ls -l /etc/apache2/mods-enabled/
total 0
lrwxrwxrwx  1 root root 40 Jun 16 08:03 actions.load -> /etc/apache2/mods-available/actions.load
lrwxrwxrwx  1 root root 36 Jun 16 08:01 cgi.load -> /etc/apache2/mods-available/cgi.load
lrwxrwxrwx  1 root root 37 Jun 16 08:01 php4.conf -> /etc/apache2/mods-available/php4.conf
lrwxrwxrwx  1 root root 37 Jun 16 08:01 php4.load -> /etc/apache2/mods-available/php4.load
lrwxrwxrwx  1 root root 40 Jun 16 15:16 rewrite.load -> /etc/apache2/mods-available/rewrite.load
lrwxrwxrwx  1 root root 40 Jun 16 08:01 userdir.conf -> /etc/apache2/mods-available/userdir.conf
lrwxrwxrwx  1 root root 40 Jun 16 08:01 userdir.load -> /etc/apache2/mods-available/userdir.load

Et vérifier son contenu:

<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root

        <Directory /home/*/public_html>
                AllowOverride FileInfo AuthConfig Limit
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
        </Directory>
</IfModule>

Et surfer sur: http://localhost/~linux/

Si ça ne fonctionne pas, s'assurer que l'utilisateur www-data a accès en exécution à tous les répertoires jusqu'à /home/linux/public_html (donc /home et /home/linux).

coursieps/20050624.txt · Last modified: 2013/01/30 17:50 (external edit)