Mettre un fichier en ligne via apache sur Debian

Un petit mémo assez court pour me rappeler comment faire pour mettre un fichier ne se trouvant pas dans un répertoire web en ligne.

Pour l’exemple, disons que le fichier que je veux mettre en ligne se trouve dans le répertoire /home/toto/photo.jpg.

Pour commencer il faut expliquer à Apache où se trouve se fichier.

Ouvrez le fichier /etc/apache2/sites-available/000-default.conf.  Au début du fichier, rajoutez la ligne Alias /photo /home/toto/photo.jpg.
Grâce à ça, Apache saura que /photo renvoi vers le fichier photo.jpg qui se trouve dans le home de l’utilisateur toto.

Ensuite, dans le virtualhost (entre les balises <VirtualHost *:80> et </VirtualHost>), rajoutez ce bloc

[pastacode lang=”apacheconf” manual=”%3CDirectory%20%2Fphoto%3E%0ARequire%20all%20granted%0A%3C%2FDirectory%3E” message=”” highlight=”” provider=”manual”/]

La balise <Directory /photo> indique que les lignes qui se trouvent entre les balises location ne concerne que l’alias /photo, donc le fichier photo.jpg.

La ligne Require all granted est l’équivalent de Allow from all qui était présent sur les versions antérieures à la 2.4 de Apache.
Elle permet de rendre le fichier public. N’importe qui connaissant l’adresse (http://IPduserveur/photo) pour accéder à ce fichier.

Il faut redémarrer Apache pour que la modif soit prise en compte.

Un dernier truc. Même si Apache sait où se trouve le fichier ou le dossier (pour le dossier il suffit de mettre un Alias sur un dossier et non un fichier) à mettre en ligne, encore faut il qu’il y ait accès.

Deux solutions :

  • Soit vous mettez les droits 774 sur ce fichier (tout le monde peut y accéder en lecture)
  • Soit vous mettez en groupe propriétaire du fichier le groupe www-data et vous mettez les droits 770 ou 740 ou encore 744.

A vous de voir 😉

 

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.