17

Я установил Ubuntu 11.04 32-битный рабочий стол на виртуальной машине VirtualBox с общей папкой на хосте. Общая папка

/media/sf_Dev/

Я хочу изменить Apache2, чтобы указать DocumentRoot на эту папку, поэтому я отредактировал /etc/apache2/sites-available/default чтобы заменить два существующих пути в этом файле на /media /sf_Dev / вместо / var / www, и он выиграл не показывать index.html.

Когда я смотрю на /var с помощью ls -l я вижу

drwxr-xr-x  2 root root ... www

и когда я ls -l /media/ я вижу

drwxrwx---  1 root vboxsf ... sf_Dev

и Apache, похоже, не видит index.html, который я поместил в этот каталог (cp /var/www/index.html /media/sf_Dev/ iirc)

Я также попытался отредактировать envvars, чтобы сделать группу vboxsf, но я думаю, что сделал эту часть неправильно.

export APACHE_RUN_GROUP=www-data

в

export APACHE_RUN_GROUP=vboxsf

Что я делаю не так, что мне нужно сделать, чтобы Apache2 обслуживал файлы из этого каталога? (технически я хочу обслуживать файлы для apache из /media/sf_Dev/apache/www но я рассчитываю один шаг за раз, так что, если это поможет вам замкнуть накоротко , пусть будет так)

4 ответа4

21

Вероятно, было бы проще добавить группу vboxsf в качестве дополнительной группы для apache.

Ubuntu:

sudo usermod -a -G vboxsf www-data

Fedora:

sudo usermod -a -G vboxsf apache

Это делает это для меня, когда я хочу получить доступ к автоматически смонтированным общим папкам. Вы также можете добавить свое имя пользователя в группу vboxsf для доступа к файлам.

3

Это похоже на проблему с разрешениями. Вам понадобится разрешение на чтение и выполнение для /media/sf_Dev/ для "других" (третья группа битов разрешений, которые в настоящее время не имеют разрешений или ---).

Итак, вам нужно запустить эту команду (так как это Ubuntu, обратите внимание на sudo):

sudo chmod 775 /media/sf_Dev/

Это добавит чтение и выполнение для "других" и оставит полные права для владельца и группы.

Также убедитесь, что индексный файл действительно существует в /media /sf_Dev /. (Я предполагаю, что вы забыли sudo в команде cp и что вы не работаете от имени пользователя root.)

2

Вы не сказали, в чем была конкретная ошибка, только

и Apache, кажется, не видит index.html, который я помещаю в этот каталог

Конкретная ошибка поможет. Вы можете сохранить это в Apache error_log , который обычно находится в /var/log/apache2/error.log в Ubunt, но может быть настроен с помощью директивы ErrorLog в вашем <VirtualHost>

Без фактической ошибки я предполагаю, что Джордж Мариан прав, и это ошибка прав доступа. Вы можете проверить, в какой группе работает Apache, используя:

ps -o pid,group -o atime,comm=CMD awx | grep apache

Попробуйте поискать разрешения на /media/sf_Dev/ как он сказал.

Я думаю, что вам лучше справиться с этим с помощью директивы Alias, поскольку это позволит вам указывать только определенные части вашего DocumentRoot на места вне:

Alias /info /media/sf_Dev
<Directory /media/sf_Dev >
  Order allow,deny
  Allow from all
</Directory>

РЕДАКТИРОВАТЬ: Если сервер Apache имеет mod_php (не FastCGI PHP) и не использует suexec , вы можете определить, работает ли Apache с правильным GID (ID группы), с помощью следующего фрагмента PHP:

<?php

var_dump(posix_getegid());

Убедитесь, что он возвращает тот же GID, что и vboxsf . (Вы можете найти GID для vboxsf в /etc/groups)

0

Если вы настроили общую папку для автоматического монтирования. Затем вам нужно сначала отключить то же самое и смонтировать общую папку вручную. Если вам нужно автоматически монтировать его при каждом запуске vm, вам нужно добавить соответствующую запись в ваш /etc /fstab. (Кажется, есть проблема с монтированием общей папки vbox через fstab. Поэтому добавление нижеупомянутой команды в /etc/rc.local помогло мне смонтировать ее при запуске).

Загрузите общую папку с правильным пользователем / группой

Насколько я могу судить, эта ошибка связана с владельцем и группой общей папки. Apache ожидает, что файлы для рендеринга принадлежат группе www-data. Однако по умолчанию общая папка в VirtualBox принадлежит пользователю vboxsf. Мы добавим этого пользователя в группу www-data. Для этого отредактируйте свойства группы в гостевой системе:

sudo usermod -a -G vboxsf www-data

Теперь мы смонтируем общую папку и назначим ее пользователю и группе www-data. Чтобы проверить идентификатор пользователя и группы, вы можете посмотреть файл /etc /passwd на гостевой машине (cat /etc /passwd | grep 'www-data'). В ОС на основе Debian оба идентификатора обычно имеют значение 33. Итак, просто введите следующую команду для гостя:

mount -t vboxsf -o rw,uid=33,gid=33 website /media/sf_website

Обратите внимание, что веб-сайт - это имя общей папки (как показано на скриншоте выше), а /media /sf_website - это место, где будет смонтирована папка.

Для получения более подробной информации перейдите по этой ссылке http://jimmybonney.com/articles/configure_virtualbox_shared_folder_apache_virtual_host/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .