Как установить Apache2 DocumentRoot в общую папку VirtualBox «vboxsf»? (проблема с разрешениями?)


17

Я установил 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но я рассчитываю один шаг за раз, так что, если это поможет вам замкнуть накоротко, пусть будет так)

Ответы:


22

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

Ubuntu:

sudo usermod -a -G vboxsf www-data

Fedora:

sudo usermod -a -G vboxsf apache

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


Но работает ли приложение apache под именем apache? Я думал, что изменилось>.>
— Jcolebrand

Вы правы, я смешал пользователя apache для fedora и ubuntu. отредактировано :)
— Fuu

1
Сэкономил мне кучу времени возиться с ручным монтажом .. спасибо!
— Ксоринзор,

Это решение исправило это для меня на Ubuntu 15. Большое спасибо!
— Ян Льюис

3

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

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

sudo chmod 775 /media/sf_Dev/

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

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


1
Аааа, но когда я делаю это, он не вносит необходимые мне изменения. Что-то в vboxfs не позволяет вносить эти изменения (например, как в NFTS) ... ооо, что может быть проблемой, файлы изначально размещены на NTFS (так как это хост Windows), поэтому я не думаю, что могу сделать это. ~~ Я забыл посмотреть журнал ошибок, прежде чем спрашивать. Я проверю это сегодня вечером. Однако предположим, что это ошибка прав доступа.
— Jcolebrand

@jcolebrand Правило № 1 устранения неполадок: подключено ли оно? Не берите в голову, что я думаю о долгосрочной полезности ответа и знаю вас как парня из БД и .NET. : P
— Джордж Мариан

@jcolebrand Итак, глупый вопрос: ты перезапустил apache? sudo apache2ctl restart
— Джордж Мариан

хахахахаха, вот почему мне нужна помощь, я парень из db and .net;) ... да, я действительно зашел, sudo suкогда он стал девкой, поэтому я мог зайти во все каталоги и посмотреть, что "сломалось" ... Я сделаю то, что предложил Джош позже с файлом PHP.
— Jcolebrand

1
Вполне возможно, что vboxsf не поддерживает установку разрешений для корневой папки файловой системы и может предоставить параметры монтирования mode, uid и gid для глобальных настроек разрешений для файлов.
— billc.cn

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

Попробуй разрешения на chainging, /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 (идентификатор группы) с помощью следующего фрагмента PHP:

<?php

var_dump(posix_getegid());

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


Я забыл посмотреть журнал ошибок, прежде чем спрашивать. Я проверю это сегодня вечером. Однако предположим, что это ошибка прав доступа. Смотрите мой ответ Джорджу выше
— jcolebrand

OK. Тогда мы должны сосредоточиться на том, чтобы заставить Apache работать как GID vboxsf. Можете ли вы отредактировать и опубликовать соответствующие части, где вы изменили Group?
— Джош

Я отредактировал одну строку в envvars, и там говорилось о группе, но я сейчас не смотрю на коробку.
— Jcolebrand

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/

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.