Як встановити Apache2 DocumentRoot на загальну папку "vboxsf" VirtualBox? (видача дозволів?)


17

Я встановлюю 32-розрядний робочий стіл Ubuntu 11.04 на VM 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
Заощадило мені купу часу, кочуючи ручним кріпленням .. дякую!
xorinzor

Це рішення зафіксувало мене на Ubuntu 15. Дякую!
Ian Lewis

3

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

Отже, вам потрібно запустити цю команду (оскільки це Ubuntu, зверніть увагу на sudo):

sudo chmod 775 /media/sf_Dev/

Це додасть читання та виконання для "інших" та залишить повні дозволи для власника та групи.

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


1
А-а-а, але коли я це роблю , це не вносить потрібні мені зміни. Щось про vboxfs не дозволяє вносити ці зміни (наприклад: як NFTS) ... oooh, що може бути проблемою, файли спочатку розміщуються на NTFS (оскільки це хост Windows), тому я не думаю, що я може це зробити. ~~ Я забув подивитися на список помилок, перш ніж запитати. Я перевірю це сьогодні ввечері. Однак припустимо, що це помилка дозволів.
jcolebrand

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

@jcolebrand Отже, дурне запитання: Ви перезапустили апаш? sudo apache2ctl restart
Джордж Маріан

хахахахаха, тому мені потрібна допомога, я дб і .net хлопець;) ... да, я на самому ділі впав в sudo suодин раз він почав бути дівка , щоб я міг вникати в усі каталоги , і подивитися , що «зламана» ... я зроблю те, що запропонував Джош пізніше з файлом PHP.
jcolebrand

1
Можливо, vboxsf не підтримує дозволи на встановлення кореневої папки файлової системи, і він може надавати параметри режиму, 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

Спробуйте змінити дозволи, /media/sf_Dev/як він сказав.

Я думаю, ви можете краще попрацювати з цією директивою Alias, оскільки це дозволить вам робити лише певні частини документа DocumentRoot у місцях, що знаходяться за межами:

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

EDIT: Якщо на сервері Apache є mod_php(не FastCGI PHP) і він не використовується suexec, ви можете визначити, чи працює Apache під належним GID (ідентифікатор групи) за допомогою наступного фрагмента PHP:

<?php

var_dump(posix_getegid());

Переконайтеся, що повертає той самий GID, що і vboxsf. (Ви можете знайти GID для vboxsf в /etc/groups)


Я забув подивитися на список помилок, перш ніж запитати. Я перевірю це сьогодні ввечері. Однак припустимо, що це помилка дозволів. Дивіться мою відповідь на Джорджа вище
jcolebrand

ДОБРЕ. Тоді ми повинні зосередитись на тому, щоб Apache запустився як GID vboxsf. Чи можете ви редагувати та розміщувати відповідні частини, де ви змінили Group?
Джош

Я відредагував один рядок у envvars, і він сказав групу, але я зараз не дивлюсь на поле.
jcolebrand

0

Якщо ви налаштували спільну папку для автоматичного встановлення. Потім потрібно спочатку відключити те саме і змонтувати загальну папку вручну. Якщо вам потрібен автоматичний запуск кожного разу, коли ви запускаєте vm, вам потрібно додати відповідний запис у / etc / fstab. (Здається, є проблема монтажу спільної папки vbox через fstab. Тому додавання нижче згаданої команди всередині /etc/rc.local працювало для того, щоб встановити її на старті).

Завантажте загальну папку з правильним користувачем / групою

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

sudo usermod -a -G vboxsf www-data

Зараз ми змонтуємо спільну папку та призначимо її користувачеві та групі даних www. Щоб перевірити ідентифікатор користувача та групи, ви можете ознайомитись з файлом / 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.