3 votes

Comment configurer Apache pour qu'il serve les pages d'un dossier partagé à partir de la machine hôte ?

J'utilise Ubuntu 18.10 sur Windows 10 avec Virtualbox 5.2.22.

Permettez-moi d'expliquer ce que j'essaie de faire. Dans Windows, j'ai deux environnements de développement. Je développe en utilisant un serveur WAMP. J'utilise Dropbox pour synchroniser mes deux environnements de développement. Voici comment procéder : J'ai un répertoire d:\Dropbox\_www mes deux Apaches sont configurés exactement de la même manière. En développement, j'utilise SQLite, je n'ai donc aucun problème avec la base de données. Je travaille ainsi depuis plus d'un an sans aucun problème.

Mon seul problème est que j'utilise mon ordinateur personnel comme l'un des environnements, et qu'il a été rempli de jeux, d'autres programmes et autres, alors j'ai pensé que ce serait une bonne idée de répliquer mon environnement sur une VM propre utilisant Linux.

J'ai fait d:\dropbox\_www un dossier partagé, et il est monté sur /media/sf__www J'y ai un accès complet, je peux utiliser VS Code pour éditer des fichiers et autres.

Maintenant j'ai configuré le serveur LAMP, Apache 2, PHP et mySQL fonctionnent parfaitement, j'ai fait une petite page à /var/www/test et tout va bien

Mon problème est que je n'arrive pas à configurer le serveur virtuel d'Apache pour qu'il pointe vers /media/sf__www . Voici ce que j'ai fait :

Dans le fichier /etc/hosts, j'ai ajouté :

laravel.com.devel    127.0.0.1

J'ai créé un laravel.conf en /etc/apache2/sites-available avec les éléments suivants :

<VirtualHost *:80>
    ServerAdmin whatever@gmail.com
    DocumentRoot /media/sf__www/lara/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    ServerName laravel.com.devel
</VirtualHost>

En el apache2.conf Je dispose des éléments suivants :

<Directory "/media/sf__www/lara/">
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

J'ai ensuite activé le site et redémarré Apache :

sudo a2ensite laravel.conf
service apache2 reload

Maintenant, quand je vais dans le navigateur, tout ce que j'obtiens est un 403 :

Forbidden

You don't have permission to access / on this server.
Apache/2.4.34 (Ubuntu) Server at laravel.com.devel Port 80

Pensant que cela pouvait être lié aux permissions dans le système de fichiers (je suis assez novice en Ubuntu), j'ai fait un sudo chmod 777 lara -R pour changer toutes les permissions dans le répertoire, mais je reçois toujours le message 403.

Donc, une idée sur la façon dont je dois configurer Apache afin de travailler avec un répertoire en dehors de la base de données. /var/www/ ?

EDIT : Sortie partielle de ll /media/sf__www/lara est :

drwxrwx--- 1 root vboxsf   4096 oct 23 17:51 ./
drwxrwx--- 1 root vboxsf   4096 dic  8 09:58 ../
drwxrwx--- 1 root vboxsf   4096 oct 26 21:05 app/
-rwxrwx--- 1 root vboxsf   1686 oct 22 18:44 artisan*
drwxrwx--- 1 root vboxsf      0 oct 21 12:08 bootstrap/
-rwxrwx--- 1 root vboxsf   1477 oct 22 18:44 composer.json*
-rwxrwx--- 1 root vboxsf 144373 oct 22 18:48 composer.lock*

Il semble que vous ne puissiez pas chmoder/chowner ce répertoire.


EDIT : Sortie des groupes

luisferfranco@luisfer-vb:/media/sf__www/lara$ groups
luisferfranco adm cdrom sudo dip plugdev lpadmin sambashare vboxsf

EDIT : Sortie de setfacl sur le répertoire :

luisferfranco@luisfer-vb:/media/sf__www/lara$ sudo setfacl -d -R -m u:$USER:rwx,g:www-data:rwx,o:rx /media/sf__www/lara
[sudo] contraseña para luisferfranco: 
setfacl: /media/sf__www/lara: La operación no está soportada
setfacl: /media/sf__www/lara/app: La operación no está soportada
setfacl: /media/sf__www/lara/app/Console: La operación no está soportada
setfacl: /media/sf__www/lara/app/Exceptions: La operación no está soportada

Pour chaque fichier, il est indiqué "opération non prise en charge". J'ai lu sur d'autres sites que cela pouvait être lié aux partitions.


EDIT : [SOLVED]

Je tiens à remercier George Udosen ( https://askubuntu.com/users/459561/george-udosen user:459561), il est resté en ligne pendant plus d'une heure pour m'aider à résoudre ce problème. Il a essayé beaucoup de choses différentes jusqu'à ce que cela fonctionne. En fait, ce qui a résolu le problème, c'est l'ajout d'un utilisateur au groupe vboxsf, comme indiqué :

sudo adduser www-data vboxsf

Merci beaucoup, vous avez pris trop de temps sur votre journée de Noël pour aider un parfait inconnu, vous êtes quelqu'un de bien.

2voto

George Udosen Points 33267

Essayer de faire accéder apache à un dossier partagé depuis un hôte Windows sur un invité Ubuntu est délicat car Virtualbox monte le dossier partagé avec l'utilisateur root et le groupe vboxsf . Pour que cela fonctionne, nous (OP et moi) avons essayé de remonter cet emplacement avec la commande

 sudo mount -t vboxsf -o remount,uid=1000,gid=1000,rw __www /media/sf__www

Cela n'a pas fonctionné et nous avons donc utilisé une solution de contournement en ajoutant l'utilisateur apache www-data au groupe vboxsf avec la commande

 sudo adduser www-data vboxsf

et après cela, apache sur l'invité a été capable d'accéder à cet emplacement.

0voto

Zefiryn Points 2220

Je suis moi-même un débutant, mais je peux vous donner un petit conseil pour résoudre ce cas, nous avons généralement une structure de répertoire qui est détenue par l'utilisateur root (par défaut). Si nous voulons que l'utilisateur normal puisse modifier les fichiers dans nos répertoires web, vous pouvez changer la propriété en procédant comme suit :

sudo chown -R $USER:$USER /media/sf__www/lara/

Assurez-vous que le répertoire Lara appartient à l'utilisateur général. Si ce n'est pas le cas, essayez la commande ci-dessus et redémarrez Apache, cela pourrait fonctionner pour vous, puis plus tard vous pourrez changer le mode du répertoire en 755 comme d'habitude. Faites-moi savoir si cela résout votre problème.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X