Lighttpd не работает при обслуживании из общей папки Virtualbox [закрыто]

У меня есть веб-сервер lighttpd, настроенный на гостевой системе Debian 6 в Virtualbox 4. У меня есть каталог www в общей папке виртуального бокса, так что я могу разработать веб-сайт в Хост Windows.

Моя проблема в том, что два идентичных файла, созданные разными текстовыми редакторами, по-разному обслуживаются lighttpd.Vim работает так, как должен, но создание файлов с помощью echo (или любого другого редактора) создает файлы, которые хорошо выглядят на диске, но становятся поврежденными, как только lighttpd их обслуживает. Эта проблема присутствует только тогда, когда корень документа находится в общей папке виртуального бокса. Возможно, проще показать эту проблему, чем объяснить ее, поэтому я выполнил тестовый пример ниже.

РЕДАКТИРОВАТЬ: Это своего рода проблема с кешированием: запускается echo 3> / proc / sys / vm / drop_caches до того, как wget заставит загруженный файл нормально работать. Все еще не объясняет, почему на vim не влияет ...

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??
1
задан 25 February 2011 в 03:17
2 ответа

Хорошо, зафиксированный это. По-видимому, это потому что sendfile() от virtualbox совместно используемых папок повреждается. Можно заставить lighttpd использовать запись syscall для отправки файлов вместо этого, путем добавления директивы server.network-backend = "writev". Так как это только для разработки, не грандиозного предприятия.

Источник:

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

2
ответ дан 3 December 2019 в 22:15

У меня также были некоторые проблемы со служащими файлами от совместно используемой папки VBox. В моем случае я редактирую файлы на хост-машине, но изменения не отражаются в VM.

Для работы вокруг этого я имею к umount и mount совместно используемая папка в VM, чтобы заставить это видеть новые файлы. Возможно, что-то подобное происходит здесь, и Вы, возможно, должны были бы также sync это или сила сброс umount и mount совместно используемая папка также.

Если это работает, возможно, существует опция сделать это автоматически.

0
ответ дан 3 December 2019 в 22:15

Теги

Похожие вопросы