Я установил Ubuntu 11.04 desktop 32 bit на виртуальную машину 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
но я рассчитываю один шаг за раз, так что, если это поможет вам замкнуть накоротко, пусть будет так)
источник
Это похоже на проблему с разрешениями. Вам понадобится разрешение на чтение и выполнение
/media/sf_Dev/
для «другого» (третья группа битов разрешений, для которых на данный момент нет разрешений или---
).Итак, вам нужно выполнить эту команду (так как это Ubuntu, обратите внимание на sudo):
sudo chmod 775 /media/sf_Dev/
Это добавит чтение и выполнение для «других» и оставит полные права для владельца и группы.
Также убедитесь, что индексный файл действительно существует в / media / sf_Dev /. (Я предполагаю, что вы забыли sudo в команде cp и что вы не работаете от имени пользователя root.)
источник
sudo apache2ctl restart
sudo su
когда он стал девкой, поэтому я мог зайти во все каталоги и посмотреть, что "сломалось" ... Я сделаю то, что предложил Джош позже с файлом PHP.Вы не сказали, в чем была конкретная ошибка, только
Конкретная ошибка поможет. Вы можете подать это в Apache
error_log
, который обычно находится/var/log/apache2/error.log
под Ubunt, но может быть настроен черезErrorLog
директиву вашего<VirtualHost>
Без фактической ошибки я предполагаю, что Джордж Мариан прав, и это ошибка прав доступа. Вы можете проверить, в какой группе работает Apache, используя:
Попробуй разрешения на chainging,
/media/sf_Dev/
как он сказал.Я думаю, что вам лучше справиться с этим с помощью директивы Alias, так как это позволит вам сделать так, чтобы только определенные части вашего DocumentRoot указывали на места вне:
РЕДАКТИРОВАТЬ: Если сервер Apache имеет
mod_php
(не FastCGI PHP) и не используетsuexec
, вы можете определить, работает ли Apache под правильным GID (идентификатор группы) с помощью следующего фрагмента PHP:Убедитесь, что возвращает тот же GID, что и
vboxsf
. (Вы можете найти GID для vboxsf в/etc/groups
)источник
vboxsf
. Можете ли вы отредактировать и опубликовать соответствующие части, где вы изменилиGroup
?Если вы настроили общую папку для автоматического монтирования. Затем вам нужно сначала отключить то же самое и смонтировать общую папку вручную. Если вам нужно автоматически монтировать его при каждом запуске 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/
источник