Instaluję 32-bitowy system Ubuntu 11.04 na maszynie wirtualnej VirtualBox z folderem współdzielonym na hoście. Folder współdzielony to
/media/sf_Dev/
Chcę zmienić Apache2, aby wskazywał na DocumentRoot
ten folder, więc edytowałem, /etc/apache2/sites-available/default
aby zastąpić istniejące dwie ścieżki w tym pliku na / media / sf_Dev / zamiast / var / www i nie będzie pokazywał index.html.
Kiedy patrzę /var
z ls -l
widzę
drwxr-xr-x 2 root root ... www
a kiedy ls -l /media/
widzę
drwxrwx--- 1 root vboxsf ... sf_Dev
i Apache nie widzi cp /var/www/index.html /media/sf_Dev/
indeksu.html umieszczam w tym katalogu ( iirc)
Próbowałem także edytować envvary, aby grupa była vboxsf, ale myślę, że źle to zrobiłem.
export APACHE_RUN_GROUP=www-data
do
export APACHE_RUN_GROUP=vboxsf
Co robię źle, co muszę zrobić, aby Apache2 wyświetlał pliki z tego katalogu? (technicznie rzecz biorąc chcę podawać pliki dla apache, /media/sf_Dev/apache/www
ale robię krok po kroku, więc jeśli to pomoże ci zewrzeć rzeczy, niech tak będzie)
źródło
To wygląda na problem z uprawnieniami. Będziesz musiał odczytać i wykonać zezwolenie na
/media/sf_Dev/
„inne” (trzecia grupa bitów uprawnień, które obecnie nie mają uprawnień lub---
).Musisz uruchomić to polecenie (ponieważ jest to Ubuntu, zwróć uwagę na sudo):
sudo chmod 775 /media/sf_Dev/
Spowoduje to dodanie odczytu i wykonanie dla „innych” i pozostawi pełne uprawnienia właścicielowi i grupie.
Upewnij się także, że plik indeksu faktycznie istnieje w / media / sf_Dev /. (Zakładam, że zapomniałeś sudo w poleceniu cp i że nie działasz jako root).
źródło
sudo apache2ctl restart
sudo su
kiedy to zaczęło być dziewką, więc mogłem przeglądać wszystkie katalogi i sprawdzać, co zostało „zepsute” ... Zrobię to, co Josh zasugerował później z plikiem PHP.Nie powiedziałeś tylko, jaki był konkretny błąd
Pomógłby konkretny błąd. Możesz to zgłosić w Apache
error_log
, który zazwyczaj znajduje się/var/log/apache2/error.log
pod Ubunt, ale można go skonfigurować poprzezErrorLog
dyrektywę w twoim<VirtualHost>
Bez faktycznego błędu zakładam, że George Marian ma rację i jest to błąd uprawnień. Możesz sprawdzić, pod jaką grupą działa Apache, używając:
Spróbuj się uporać z uprawnieniami,
/media/sf_Dev/
jak powiedział.Myślę, że lepiej jest poradzić sobie z tym za pomocą dyrektywy Alias, ponieważ pozwoli to na wskazanie tylko niektórych części twojego DocumentRoot na lokalizacje poza:
EDYCJA: Jeśli serwer Apache ma
mod_php
(nie FastCGI PHP) i nie używasuexec
, możesz ustalić, czy Apache działa pod odpowiednim GID (ID grupy) z następującym snippitem PHP:Upewnij się, że zwraca ten sam identyfikator GID co
vboxsf
. (Możesz znaleźć GID dla vboxsf w/etc/groups
)źródło
vboxsf
. Czy możesz edytować i publikować odpowiednie części, w których zmieniłeśGroup
?Jeśli skonfigurowano folder współdzielony do automatycznego montowania. Następnie musisz to samo wyłączyć i ręcznie zamontować folder współdzielony. Jeśli potrzebujesz go automatycznie zamontować za każdym razem, gdy uruchamiasz vm, musisz dodać odpowiedni wpis w pliku / etc / fstab. (Wygląda na to, że wystąpił problem z montowaniem folderu współdzielonego vbox przez fstab. Więc dodanie poniżej wspomnianego polecenia wewnątrz /etc/rc.local działało dla mnie, aby zamontować go na starcie).
Załaduj folder współdzielony z poprawnym użytkownikiem / grupą
O ile mi wiadomo, ten błąd wynika z właściciela i grupy udostępnionego folderu. Apache oczekuje, że pliki będą renderowane w grupie www-data. Domyślnie jednak folder współdzielony w VirtualBox należy do użytkownika vboxsf. Dodamy tego użytkownika do grupy danych www. W tym celu edytuj właściwości grupy gościa:
sudo usermod -a -G vboxsf www-data
Zamontujemy teraz folder współdzielony i przypiszemy go do użytkownika i grupy danych www. Aby sprawdzić identyfikator użytkownika i grupy, możesz zajrzeć do pliku / etc / passwd na maszynie gościa (cat / etc / passwd | grep 'www-data'). W systemie operacyjnym opartym na Debianie oba identyfikatory są zwykle ustawione na wartość 33. Więc po prostu wydaj następującą komendę na gościu:
mount -t vboxsf -o rw,uid=33,gid=33 website /media/sf_website
Zauważ, że strona internetowa to nazwa folderu współdzielonego (jak pokazano na zrzucie ekranu powyżej), a / media / sf_website to miejsce, w którym folder zostanie zamontowany.
Aby uzyskać więcej informacji, zapoznaj się z tym linkiem http://jimmybonney.com/articles/configure_virtualbox_shared_folder_apache_virtual_host/
źródło