1 votes

Lighttpd ne fonctionne pas lorsqu'il est utilisé à partir d'un dossier partagé de Virtualbox

J'ai un serveur web lighttpd installé sur un invité Debian 6 dans Virtualbox 4. J'ai placé le répertoire www dans un dossier partagé de Virtualbox, afin de pouvoir développer un site web sur l'hôte Windows.

Mon problème est que deux fichiers identiques créés par des éditeurs de texte différents sont servis différemment par lighttpd. Vim fonctionne comme il se doit, mais la création de fichiers avec echo (ou tout autre éditeur) produit des fichiers qui semblent corrects sur le disque mais qui sont corrompus une fois que lighttpd les sert. Ce problème n'est présent que lorsque la racine du document se trouve dans un dossier partagé de la boîte virtuelle. Il est peut-être plus facile de montrer ce problème que de l'expliquer, c'est pourquoi j'ai fait un test ci-dessous.

EDIT : Il s'agit d'un problème de mise en cache. echo 3 > /proc/sys/vm/drop_caches avant que wget ne fasse fonctionner correctement le fichier téléchargé. Cela n'explique toujours pas pourquoi vim n'est pas affecté...

root@Apricots:/var/www/xxx.org/http# vim vim.txt
    (I type 'Line 1' into vim, on one line)
root@Apricots:/var/www/xxx.org/http# echo 'Line 1' >> echo.txt
root@Apricots:/var/www/xxx.org/http# md5sum vim.txt echo.txt
376cbf50d47a30459adca22b15964912  vim.txt
376cbf50d47a30459adca22b15964912  echo.txt
root@Apricots:/var/www/xxxt.org/http# cd ~
root@Apricots:~# wget xxx.org/vim.txt xxx.org/echo.txt
    (The two files download OK)
root@Apricots:~# md5sum vim.txt echo.txt
376cbf50d47a30459adca22b15964912  vim.txt
376cbf50d47a30459adca22b15964912  echo.txt
root@Apricots:~# cat vim.txt
Line 1
root@Apricots:~# cat echo.txt
Line 1
root@Apricots:~# cd /var/www/xxx.org/http/
root@Apricots:/var/www/xxx.org/http# vim vim.txt
    (I type 'Line 2' in a second line in vim)
root@Apricots:/var/www/xxx.org/http# echo 'Line 2' >> echo.txt
root@Apricots:/var/www/xxx.org/http# md5sum vim.txt echo.txt
ef3095884e8daf72dc4d2ea71306caa7  vim.txt
ef3095884e8daf72dc4d2ea71306caa7  echo.txt
root@Apricots:/var/www/xxx.org/http# cat vim.txt
Line 1
Line 2
root@Apricots:/var/www/xxx.org/http# cat echo.txt
Line 1
Line 2
root@Apricots:/var/www/xxx.org/http# cd ~
root@Apricots:~# rm vim.txt echo.txt
root@Apricots:~# wget xxx.org/vim.txt xxx.org/echo.txt
    (They both download fine again)
root@Apricots:~# md5sum vim.txt echo.txt
ef3095884e8daf72dc4d2ea71306caa7  vim.txt
0b8835dcb6bb73c7a4eb25301101699a  echo.txt
root@Apricots:~# cat vim.txt
Line 1
Line 2
root@Apricots:~# cat echo.txt
Line 1
root@Apricots:~# hexdump vim.txt
0000000 694c 656e 3120 4c0a 6e69 2065 0a32
000000e
root@Apricots:~# hexdump echo.txt
0000000 694c 656e 3120 000a 0000 0000 0000
000000e
root@Apricots:~# echo "what the hell just happened there??"
what the hell just happened there??

2voto

KJ Tsanaktsidis Points 139

D'accord, je l'ai corrigé. Apparemment, c'est parce que sendfile() à partir des dossiers partagés de virtualbox est interrompue. Vous pouvez faire en sorte que lighttpd utilise l'appel de système write pour envoyer des fichiers à la place, en ajoutant la directive server.network-backend = "writev" . Comme il s'agit d'un simple développement, ce n'est pas grave.

Source :

http://forums.virtualbox.org/viewtopic.php?f=6&t=38973

http://forums.virtualbox.org/viewtopic.php?f=8&t=24905&p=129089&hilit=vboxsf+web+server

0voto

J'ai également rencontré des problèmes lors de l'envoi de fichiers à partir d'un dossier partagé de la VBox. Dans mon cas, je modifie les fichiers sur la machine hôte, mais les changements ne sont pas répercutés dans la VM.

Pour contourner le problème, je dois umount y mount le dossier partagé à l'intérieur de la VM pour qu'elle voie les nouveaux fichiers. Il se peut que quelque chose de similaire se produise ici et que vous deviez soit sync ou de forcer une chasse d'eau en umount y mount le dossier partagé également.

Si cela fonctionne, il y a peut-être une option pour le faire automatiquement.

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