web-dev-qa-db-fra.com

Comment configurer Apache pour servir des pages dans un dossier partagé à partir de la machine hôte?

J'utilise Ubuntu 18.10 sur Windows 10 avec Virtualbox 5.2.22

Laissez-moi vous expliquer ce que j'essaie de réaliser. Sous Windows, j'ai deux environnements en développement. Je développe en utilisant un serveur WAMP. J'utilise Dropbox pour synchroniser mes deux environnements de développement. Voici comment: j'ai un répertoire d:\Dropbox\_www puis 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 de cette façon depuis un an sans aucun problème.

Mon seul problème, c’est que j’utilise mon ordinateur personnel comme l’un des environnements et que celui-ci est rempli de jeux, d’autres programmes, etc., j’ai donc pensé que ce serait une bonne idée de répliquer mon environnement sur un environnement propre VM utilisant Linux.

J'ai fait d:\dropbox\_www un dossier partagé, et il se monte sur /media/sf__www. J'ai un accès complet à ce dossier. Je peux utiliser VS Code pour éditer des fichiers, etc.

Maintenant, j'ai configuré le serveur LAMP, Apache 2, PHP et MySQL fonctionnent parfaitement, j'ai créé une petite page sur /var/www/test et tout va bien.

Mon problème est que je ne peux pas configurer le serveur virtuel d'Apache pour qu'il pointe sur /media/sf__www. C'est ce que j'ai fait:

Dans/etc/hosts j'ai ajouté:

laravel.com.devel    127.0.0.1

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

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /media/sf__www/lara/
    ErrorLog ${Apache_LOG_DIR}/error.log
    CustomLog ${Apache_LOG_DIR}/access.log combined
    ServerName laravel.com.devel
</VirtualHost>

Dans le Apache2.conf, j'ai les éléments suivants:

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

Puis j'ai activé le site et redémarré Apache:

Sudo a2ensite laravel.conf
service Apache2 reload

Maintenant, quand je vais au navigateur, tout ce que je reçois 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 pourrait être lié aux autorisations dans le système de fichiers (je suis assez novice dans Ubuntu), j’ai fait un Sudo chmod 777 lara -R pour modifier toutes les autorisations du répertoire, mais cela m’a tout de même donné la 403.

Donc, avez-vous une idée de la façon dont je dois configurer Apache pour pouvoir utiliser un répertoire situé en dehors de /var/www/?

EDIT: La 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*

On dirait que vous ne pouvez pas chmod/chown 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

Il dit "opération non prise en charge" pour chaque fichier. Je lis dans un autre site, cela pourrait être lié aux partitions


MODIFIER: [RESOLU]

Je tiens à remercier George Udosen ( https://askubuntu.com/users/459561/george-udosen utilisateur: 459561), il est resté dans le chat 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 gros, le problème était d'ajouter un utilisateur au groupe vboxsf comme indiqué:

Sudo adduser www-data vboxsf

Merci beaucoup, vous avez pris trop de temps de votre journée de Noël pour aider un inconnu, vous êtes une personne formidable.

3
luisfer

Essayer d'accéder à un dossier partagé d'accès Apache à partir d'un hôte Windows sur un invité Ubuntu est délicat, car Virtualbox monte le dossier partagé avec l'utilisateur rootet le groupe vboxsfname__. Pour que cela fonctionne après que 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é. Une solution de contournement a été utilisée. Nous avons ajouté l'utilisateur Apache www-data au groupe vboxsfà l'aide de la commande

 Sudo adduser www-data vboxsf

et après cela, Apache sur l'invité a pu accéder à cet emplacement.

1
George Udosen

Moi-même est un débutant, mais je peux vous donner un petit indice pour résoudre ce problème. Nous avons généralement la structure de répertoires qui appartient à l'utilisateur root (par défaut). Si nous voulons que notre utilisateur habituel puisse modifier les fichiers de nos répertoires Web, vous pouvez changer le propriétaire en procédant comme suit:

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

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

0
Imrank