मैं Apache2 DocumentRoot को "vboxsf" वर्चुअलबॉक्स साझा फ़ोल्डर में कैसे सेट करूँ? (अनुमतियाँ समस्या?)


17

मैंने होस्ट के लिए एक साझा फ़ोल्डर के साथ एक वर्चुअलबॉक्स वीएम पर Ubuntu 11.04 डेस्कटॉप 32 बिट सेटअप किया है। साझा फ़ोल्डर है

/media/sf_Dev/

मैं DocumentRootउस फोल्डर को इंगित करने के लिए Apache2 को बदलना चाहता हूं , इसलिए मैंने उस फ़ाइल में /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 सूचकांक को देखने के लिए प्रतीत नहीं होता है। मैंने उस निर्देशिका में रखा ( cp /var/www/index.html /media/sf_Dev/iirc)

मैंने समूह को vboxsf बनाने के लिए envvars के संपादन की कोशिश की, लेकिन मुझे लगता है कि मैंने उस हिस्से को गलत किया।

export APACHE_RUN_GROUP=www-data

सेवा

export APACHE_RUN_GROUP=vboxsf

मैं क्या गलत कर रहा हूं, मुझे उस निर्देशिका से फ़ाइलों की सेवा के लिए Apache2 प्राप्त करने के लिए क्या करने की आवश्यकता है? (तकनीकी रूप से मैं अपाचे के लिए फाइलें परोसना चाहता हूं, /media/sf_Dev/apache/wwwलेकिन मैं एक बार में एक कदम उठाता हूं, ताकि अगर आपको शॉर्ट-सर्किट चीजों में मदद मिले, तो ऐसा हो)

जवाबों:


22

यह संभव है कि Apache के लिए पूरक समूह के रूप में vboxsf समूह को जोड़ना आसान होगा।

उबंटू:

sudo usermod -a -G vboxsf www-data

फेडोरा:

sudo usermod -a -G vboxsf apache

मेरे लिए यह तब होता है जब मैं ऑटो माउंटेड साझा किए गए फ़ोल्डरों का उपयोग करना चाहता हूं। आप फ़ाइलों तक पहुँचने के लिए vboxsf समूह में अपना उपयोगकर्ता नाम भी जोड़ना चाह सकते हैं।


लेकिन क्या एप एप यूजरनेम एप के तहत चल रहा है? मैंने सोचा कि बदल दिया>>।>
jcolebrand

आप सही हैं, मैंने फेडोरा और ubuntu के लिए अपाचे उपयोगकर्ता को मिलाया। संपादित :)
फू

1
मुझे मैनुअल बढ़ते के साथ आसपास fiddling समय का एक गुच्छा बचाया .. धन्यवाद!
१५:०५ में जार्ज

इस समाधान ने मेरे लिए उबंटू 15 पर तय किया। बहुत धन्यवाद!
इयान लुईस 12

3

यह एक अनुमति समस्या की तरह दिखता है। आपको /media/sf_Dev/"अन्य" (अनुमति बिट्स का तीसरा समूह, जो वर्तमान में कोई अनुमति या नहीं है ---) के लिए अनुमति पढ़ने और निष्पादित करने की आवश्यकता होगी ।

तो, आपको इस कमांड को चलाने की आवश्यकता होगी (क्योंकि यह उबंटू है, सूडो पर ध्यान दें):

sudo chmod 775 /media/sf_Dev/

यह "अन्य" के लिए रीड एंड एक्ज़िक्यूट को जोड़ देगा और मालिक और समूह के लिए पूर्ण अनुमति छोड़ देगा।

यह भी सुनिश्चित करें कि सूचकांक फ़ाइल वास्तव में / मीडिया / sf_Dev / में मौजूद है। (मुझे लगता है कि आप कमांड कमांड में sudo भूल गए हैं और आप रूट के रूप में नहीं चल रहे हैं।)


1
आह, लेकिन जब मैं करना है कि यह परिवर्तन की आवश्यकता नहीं है। Vboxfs के बारे में कुछ उन परिवर्तनों को नहीं होने देता (यानी: NFTS की तरह) ... ऊह, जो समस्या हो सकती है, फाइल मूल रूप से NTFS पर होस्ट की जाती है (क्योंकि यह एक विंडोज़ होस्ट है) इसलिए मुझे नहीं लगता कि मैं ऐसा कर सकते हैं। ~~ मैं पूछने से पहले गलती को देखना भूल गया था। मैं आज शाम को जाँच करूँगा। हालाँकि, मान लें कि यह एक अनुमति त्रुटि है।
jcolebrand

@jcolebrand नियम # 1 समस्या निवारण: क्या इसे प्लग इन किया गया है? कोई बात नहीं कि मैं उत्तर की दीर्घकालिक उपयोगिता के बारे में सोच रहा हूं और मैं आपको एक DB और .NET पुरुष के रूप में जानता हूं। : पी
जॉर्ज मैरियन

@jcolebrand तो, मूर्खतापूर्ण सवाल: क्या आपने अपाचे को फिर से शुरू किया? sudo apache2ctl restart
जॉर्ज मैरियन

hahahahaha, यही कारण है कि मुझे मदद की ज़रूरत है, मैं एक db और .net लड़का हूं;) ... हाँ, मैं वास्तव में sudo suएक बार गिरा दिया जब यह एक वेच होने लगा, तो मैं सभी निर्देशिकाओं में जा सकता था और देख सकता था कि "टूट गया" ... मैं जोश को PHP फ़ाइल के साथ बाद में सुझाव देने वाला था।
jcolebrand

1
यह संभव है कि vboxsf फ़ाइल सिस्टम के रूट फ़ोल्डर के लिए सेटिंग की अनुमति का समर्थन नहीं करता है और यह विश्व स्तर पर फ़ाइल अनुमतियों को सेट करने के लिए मोड, यूआईडी और जीआईडी ​​माउंट विकल्प प्रदान कर सकता है।
बिलसी। सी। पी।

2

आपने यह नहीं कहा कि विशिष्ट त्रुटि क्या थी, केवल

और अपाचे इंडेक्स को देखने के लिए प्रतीत नहीं होता है। मैंने उस निर्देशिका में रखा है

विशिष्ट त्रुटि मदद करेगी। आप इसे अपाचे में दर्ज कर सकते हैं error_log, जो आम तौर पर /var/log/apache2/error.logयूबंट के अधीन है, लेकिन आपके में एक ErrorLogनिर्देश के माध्यम से कॉन्फ़िगर किया जा सकता है<VirtualHost>

वास्तविक त्रुटि के बिना, मुझे लगता है कि जॉर्ज मैरियन सही है और यह एक अनुमति त्रुटि है। आप देख सकते हैं कि अपाचे किस समूह के तहत चल रहा है:

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

/media/sf_Dev/उन्होंने कहा कि पर अनुमति के अनुसार झंकार की कोशिश करो ।

मुझे लगता है कि आप इसे अलियास निर्देश के साथ संभालना बेहतर समझ सकते हैं क्योंकि इससे आपको अपने डॉक्यूमेंटरूट के कुछ हिस्सों को बाहर के स्थानों पर रखने की अनुमति मिलेगी:

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

EDIT: यदि अपाचे सर्वर में mod_phpFastCGI PHP नहीं है और उपयोग नहीं हो रहा है suexec, तो आप निर्धारित कर सकते हैं कि क्या Apache निम्नलिखित PHP स्निपिट के साथ उचित GID (समूह ID) के तहत चल रहा है:

<?php

var_dump(posix_getegid());

सुनिश्चित करें कि जैसा GID लौटाता है vboxsf। (आप vboxsf के लिए GID पा सकते हैं /etc/groups)


मैं पूछने से पहले त्रुटि को देखना भूल गया था। मैं आज शाम को जाँच करूँगा। हालाँकि, मान लें कि यह एक अनुमति त्रुटि है। ऊपर जॉर्ज को मेरी प्रतिक्रिया देखें
jcolebrand

ठीक। फिर हमें अपाचे को जीआईडी ​​के रूप में चलाने पर ध्यान देना चाहिए vboxsf। क्या आप उन संबंधित हिस्सों को संपादित और पोस्ट कर सकते हैं जहां आपने बदलाव किया है Group?
जोश

मैंने envvars में एक पंक्ति को संपादित किया, और उसने कहा समूह, लेकिन मैं अभी बॉक्स को नहीं देख रहा हूं।
jcolebrand

0

यदि आपने साझा फ़ोल्डर को ऑटो माउंट किया गया है। फिर आपको पहले उसी को अक्षम करने और साझा किए गए फ़ोल्डर को मैन्युअल रूप से माउंट करने की आवश्यकता है। यदि आपको वीएम शुरू करने के बाद हर बार इसे स्वचालित करने की आवश्यकता है, तो आपको अपने / etc / fstab के अंदर संबंधित प्रविष्टि जोड़ने की आवश्यकता है। (ऐसा लगता है कि fstab के माध्यम से कुछ समस्याग्रस्त vbox साझा फ़ोल्डर बढ़ रहा है। इसलिए /etc/rc.local के अंदर उल्लेखित कमांड को जोड़ना मेरे लिए शुरुआत में इसे माउंट करने के लिए काम किया है)।

सही उपयोगकर्ता / समूह के साथ साझा फ़ोल्डर लोड करें

जहां तक ​​मैं बता सकता हूं, यह त्रुटि साझा फ़ोल्डर के स्वामी और समूह के कारण है। Apache समूह www-data से संबंधित करने के लिए फ़ाइलों की अपेक्षा करता है। डिफ़ॉल्ट रूप से, हालांकि, वर्चुअलबॉक्स में साझा फ़ोल्डर vboxsf उपयोगकर्ता के अंतर्गत आता है। हम इस उपयोगकर्ता को www-डेटा समूह में जोड़ देंगे। ऐसा करने के लिए, अतिथि पर समूह के गुणों को संपादित करें:

sudo usermod -a -G vboxsf www-data

अब हम साझा किए गए फ़ोल्डर को माउंट करेंगे और इसे www-data उपयोगकर्ता और समूह को असाइन करेंगे। उपयोगकर्ता और समूह आईडी की जाँच करने के लिए, आप अतिथि मशीन (/ cat / etc / passwd | grep 'www-data') पर / etc / passwd फ़ाइल देख सकते हैं। डेबियन आधारित ओएस पर, दोनों आईडी आमतौर पर मूल्य 33 पर सेट होते हैं। इसलिए, बस अतिथि पर निम्न आदेश जारी करें:

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

ध्यान दें कि वेबसाइट साझा किए गए फ़ोल्डर का नाम है (जैसा कि ऊपर स्क्रीनशॉट में दिखाया गया है) और / मीडिया / sf_website वह जगह है जहां फ़ोल्डर माउंट किया जाएगा।

अधिक जानकारी के लिए इस लिंक को देखें http://jimmybonney.com/articles/configure_virtualbox_sared_folder_apache_virtual_host/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.