Bagaimana cara mengatur Apache2 DocumentRoot ke Folder Bersama VirtualBox “vboxsf”? (masalah izin?)

17

Saya mengatur Ubuntu 11.04 desktop 32 bit pada VirtualBox VM dengan folder bersama ke host. Folder yang dibagikan adalah

/media/sf_Dev/

Saya ingin mengubah Apache2 untuk mengarahkan DocumentRootke folder itu, jadi saya mengedit /etc/apache2/sites-available/defaultuntuk mengganti dua jalur yang ada di file itu ke / media / sf_Dev / bukan / var / www dan itu tidak akan menampilkan index.html.

Ketika saya melihat /vardengan ls -lsaya melihat

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

dan ketika ls -l /media/saya melihat

drwxrwx---  1 root vboxsf ... sf_Dev

dan Apache sepertinya tidak melihat index.html saya masukkan ke direktori itu ( cp /var/www/index.html /media/sf_Dev/iirc)

Saya juga mencoba mengedit envvars untuk membuat grup menjadi vboxsf tapi saya pikir saya salah melakukannya.

export APACHE_RUN_GROUP=www-data

untuk

export APACHE_RUN_GROUP=vboxsf

Apa yang saya lakukan salah, apa yang harus saya lakukan untuk mendapatkan Apache2 untuk melayani file dari direktori itu? (secara teknis saya ingin menayangkan file untuk apache dari /media/sf_Dev/apache/wwwtetapi saya mencari selangkah demi selangkah, jadi jika itu membantu Anda hal-hal pendek, jadi itu)

jcolebrand
sumber

Jawaban:

22

Mungkin akan lebih mudah untuk menambahkan grup vboxsf sebagai grup pelengkap untuk apache.

Ubuntu:

sudo usermod -a -G vboxsf www-data

Fedora:

sudo usermod -a -G vboxsf apache

Ini berguna bagi saya ketika saya ingin mengakses folder bersama yang dipasang secara otomatis. Anda mungkin juga ingin menambahkan nama pengguna Anda sendiri ke grup vboxsf untuk mengakses file.

Fuu
sumber
Tetapi apakah aplikasi apache berjalan di bawah apache nama pengguna? Saya pikir itu berubah>.>
jcolebrand
Anda benar, saya mencampur pengguna apache untuk fedora dan ubuntu. diedit :)
Fuu
1
Menyelamatkan saya banyak waktu mengutak-atik dengan pemasangan manual .. terima kasih!
xorinzor
Solusi ini memperbaikinya untuk saya di Ubuntu 15. Terima kasih banyak!
Ian Lewis
3

Itu terlihat seperti masalah izin. Anda harus membaca dan menjalankan izin /media/sf_Dev/untuk "lainnya" (grup ketiga dari bit izin, yang saat ini tidak memiliki izin atau ---).

Jadi, Anda harus menjalankan perintah ini (karena ini Ubuntu, perhatikan sudo):

sudo chmod 775 /media/sf_Dev/

Itu akan menambah baca dan jalankan untuk "lain" dan meninggalkan izin penuh untuk pemilik dan grup.

Pastikan juga file indeks benar-benar ada di / media / sf_Dev /. (Saya akan berasumsi bahwa Anda lupa sudo dalam perintah cp dan bahwa Anda tidak menjalankan sebagai root.)

George Marian
sumber
1
Ahhh, tapi ketika saya melakukan itu itu tidak membuat perubahan yang saya butuhkan. Sesuatu tentang vboxfs tidak membiarkan perubahan itu dibuat (yaitu: seperti NFTS) ... oooh, yang mungkin menjadi masalah, file-file tersebut awalnya di-host di NTFS (karena itu adalah host windows) jadi saya tidak berpikir saya dapat melakukannya. ~~ Saya lupa melihat errorlog sebelum bertanya. Saya akan periksa malam ini. Namun, anggap itu adalah kesalahan izin.
jcolebrand
@jcolebrand Rule # 1 untuk pemecahan masalah: apakah terhubung? Nevermind bahwa saya sedang memikirkan kegunaan jangka panjang dari jawaban dan bahwa saya mengenal Anda sebagai seorang pria DB dan .NET. : P
George Marian
@ jcolebrand Jadi, pertanyaan konyol: Apakah Anda memulai kembali apache? sudo apache2ctl restart
George Marian
hahahahaha, ini sebabnya saya butuh bantuan, saya seorang pria db dan .net;) ... ya, saya benar-benar jatuh ke dalam sudo suketika itu mulai menjadi dara sehingga saya bisa pergi ke semua direktori dan melihat apa yang "rusak" ... Aku akan melakukan apa yang disarankan Josh nanti dengan file PHP.
jcolebrand
1
Ada kemungkinan bahwa vboxsf tidak mendukung pengaturan izin untuk folder root sistem file dan mungkin menyediakan mode, opsi pemasangan uid dan gid untuk mengatur izin file secara global.
billc.cn
2

Anda tidak mengatakan apa kesalahan spesifiknya, hanya

dan Apache sepertinya tidak melihat index.html yang saya masukkan ke dalam direktori itu

Kesalahan spesifik akan membantu. Anda dapat mengajukan ini di Apache error_log, yang biasanya di /var/log/apache2/error.logbawah Ubunt, tetapi dapat dikonfigurasikan melalui ErrorLogArahan di komputer Anda<VirtualHost>

Tanpa kesalahan yang sebenarnya, saya menganggap George Marian benar dan itu adalah kesalahan izin. Anda dapat memeriksa untuk melihat grup apa yang dijalankan Apache menggunakan:

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

Coba dapatkan izin /media/sf_Dev/seperti yang dia katakan.

Saya pikir Anda sebaiknya menangani ini dengan arahan Alias karena itu akan memungkinkan Anda untuk membuat hanya bagian-bagian tertentu dari DocumentRoot Anda ke lokasi di luar:

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

EDIT: Jika server Apache memiliki mod_php(bukan FastCGI PHP) dan tidak menggunakan suexec, Anda dapat menentukan apakah Apache berjalan di bawah GID (ID grup) yang tepat dengan potongan PHP berikut:

<?php

var_dump(posix_getegid());

Pastikan bahwa mengembalikan GID yang sama dengan vboxsf. (Anda dapat menemukan GID untuk vboxsf di /etc/groups)

Josh
sumber
Saya lupa melihat errorlog sebelum bertanya. Saya akan periksa malam ini. Namun, anggap itu adalah kesalahan izin. Lihat tanggapan saya terhadap George di atas
jcolebrand
BAIK. Maka kita harus fokus untuk menjalankan Apache sebagai GID vboxsf. Bisakah Anda mengedit dan memposting bagian yang relevan di mana Anda mengubah Group?
Josh
Saya mengedit satu baris di utusan, dan berbunyi grup, tapi saya tidak melihat kotak itu sekarang.
jcolebrand
0

Jika Anda telah mengonfigurasi folder bersama untuk dipasang secara otomatis. Maka Anda harus terlebih dahulu menonaktifkan yang sama dan memasang folder bersama secara manual. Jika Anda memerlukannya secara otomatis setiap kali Anda memulai vm, Anda perlu menambahkan entri terkait di dalam / etc / fstab Anda. (Tampaknya ada beberapa masalah pemasangan vbox shared folder melalui fstab. Jadi menambahkan perintah yang disebutkan di bawah ini di /etc/rc.local bekerja bagi saya untuk memasangnya di awal).

Muat Folder Bersama dengan Pengguna / Grup yang Benar

Sejauh yang saya tahu, kesalahan ini disebabkan oleh pemilik dan grup folder bersama. Apache berharap file-file tersebut di-render menjadi milik grup www-data. Secara default, bagaimanapun, folder bersama di VirtualBox milik pengguna vboxsf. Kami akan menambahkan pengguna ini ke grup www-data. Untuk melakukannya, edit properti grup pada tamu:

sudo usermod -a -G vboxsf www-data

Kami sekarang akan me-mount folder bersama dan menetapkannya untuk pengguna dan grup data-www. Untuk memeriksa id pengguna dan grup, Anda dapat melihat file / etc / passwd di mesin tamu (cat / etc / passwd | grep 'www-data'). Pada OS berbasis Debian, kedua id biasanya diatur ke nilai 33. Jadi, cukup keluarkan perintah berikut pada tamu:

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

Perhatikan bahwa situs web adalah nama folder bersama (seperti yang diilustrasikan dalam tangkapan layar di atas) dan / media / sf_website adalah tempat folder tersebut akan dipasang.

Kedepan lebih detail lihat tautan ini http://jimmybonney.com/articles/configure_virtualbox_shared_folder_apache_virtual_host/

Pandurang Patil
sumber