django

2010-01-16 7 views
6

में mod_wsgi के साथ स्थैतिक फ़ाइल मैंने बहुत कुछ खोजा है लेकिन मुझे अभी भी मेरी django वेबसाइट के साथ स्थिर फ़ाइलों (सीएसएस, छवि, ...) के साथ समस्या है।django

मैं अपाचे के साथ mod_wsgi उपयोग कर रहा हूँ archlinux 64bits

मैं अपने http.conf में जोड़ दिया है पर:

LoadModule wsgi_module modules/mod_wsgi.so 

<VirtualHost *:80> 
    WSGIDaemonProcess mart.localhost user=mart group=users processes=2 threads=25 
    WSGIProcessGroup mart.localhost 
    LogLevel debug 

    Alias /media /home/mart/programmation/python/django/martfiles/media/ 
    <Directory /home/mart/programmation/python/django/martfiles/> 
     Order allow,deny 
     Allow from all 
    </Directory> 

    WSGIScriptAlias//srv/http/wsgi-scripts/django.wsgi 
</VirtualHost> 

मैं अपने घर फ़ोल्डर में django.wsgi का उपयोग करने की कोशिश की, लेकिन यह काम नहीं करता है (permission denied to access /)

सभी निर्देशिकाओं और सामग्री (अपाचे फ़ोल्डर, WSGI स्क्रिप्ट, martfiles) (अजीब यह है कि अगर मैं परीक्षण स्क्रिप्ट here दी का उपयोग काम करता है) समूह devuse साथ अनुमति 775 root:devusers है

<html> <head> 
    <link rel="stylesheet" href="/media/css/style.css" /> 

और /var/log/http/error.log

में त्रुटि: मेरे उपयोगकर्ता, http और मेरे टेम्पलेट base.html में जड़

सहित रु, मैं सीएसएस इस तरह से फोन

[Sat Jan 16 13:22:21 2010] [error] [client 127.0.0.1] (13)Permission denied: access to /media/css/style.css denied, referer: http://localhost/ 
[Sat Jan 16 13:22:21 2010] [info] mod_wsgi (pid=14783): Attach interpreter '' 

/etc/httpd/conf/http.conf

/srv/http/wsgi-script/django.wsgi

/home/.../martfiles/settings.py

धन्यवाद


संपादित: मैं सटीक है कि मेरे Django वेबसाइट ठीक काम कर रहा है (सत्रों को छोड़कर लेकिन मुझे नहीं लगता कि यह संबंधित है) तो मुझे यकीन है कि यह से संबंधित है नहीं कर रहा हूँ django.wsgi फ़ाइल (शायद मैं गलत हूँ), लेकिन क्या यकीन है कि मैं अपाचे फ़ोल्डर

बाहर से django.wsgi उपयोग करने के लिए Alias /media /srv/http/media/ साथ अगर मैं लाइन Alias /media /home/mart/programmation/python/django/martfiles/media/ बदलने में सक्षम होना चाहिए और सही अनुमतियाँ देता है, यह काम करता हैं। लेकिन मैं अपने सभी मीडिया को अपाचे फ़ोल्डर में

उत्तर

7

यह केवल निर्देशिका/होम/मार्ट/प्रोग्रामेशन/पायथन/डीजेंगो/मार्टफाइल/मीडिया 'के लिए पर्याप्त नहीं है स्थैतिक फाइलें पठनीय और खोजने योग्य हो सकती हैं। अपाचे चलाने वाले उपयोगकर्ता को रूट निर्देशिका में बैक अप की सभी मूल निर्देशिकाओं तक, पढ़ने और संभावित रूप से पहुंच की पहुंच होनी चाहिए। चूंकि कई प्रणालियों पर घरेलू निर्देशिकाएं 'rwx ------' हैं, इसलिए यह अपाचे कॉन्फ़िगरेशन में अस्वीकार/अनुमति निर्देशों के बावजूद अपाचे पहुंच को अस्वीकार कर देगी।

सुझाव दें कि आप कहीं भी अपने घर खाते के बाहर Django प्रोजेक्ट और स्थिर फाइलें रखें और आवश्यकतानुसार फ़ाइल सिस्टम अनुमतियों को आराम दें।

+0

यही कारण है कि मैंने अपने अपाचे उपयोगकर्ता (http) वाले समूह devusers के साथ 775 अनुमति दी। कहां और किस अनुमति? मैं इसे –

+0

कोशिश करूंगा, मैंने अपने मध्यस्थों को केवल रूट विशेषाधिकारों के साथ/usr/share/django में रखा है और यह काम करता है! मेरी त्रुटि को ठीक करने के लिए बहुत बहुत धन्यवाद –

+2

+1। 755 पर गृह अनुमतियों को स्थापित करने के सुरक्षा प्रभाव क्या हैं? – g33kz0r

0

ऐसा लगता है कि मेरे पास मेरे आवेदन के लिए क्या है, सिवाय इसके कि मुझे http.conf में NameVirtualHost निर्देश नहीं मिला यदि आप वर्चुअल सर्वर सेट करना चाहते हैं तो जरूरी है। वर्चुअल होस्ट परिभाषा से पहले आप NameVirtualHost *:80 जोड़ने का प्रयास कर सकते हैं।

<Directory /home/mart/programmation/python/django/martfiles/> 

इस जोड़ने का प्रयास करें httpd.conf लिए:

+0

यदि मैं ऐसा करता हूं तो मुझे त्रुटि.लॉग में एक और त्रुटि मिली है: '[त्रुटि] वर्चुअलहोस्ट *: 80 - मिश्रण * पोर्ट्स और गैर-* पोर्ट्स नाम वर्चुअलहोस्ट पते के साथ समर्थित नहीं है, अपरिभाषित परिणामों के साथ आगे बढ़ना ' –

+0

क्षमा करें, यह' NameVirtualHost *: 80' होना चाहिए था। उत्तर अपडेट किया गया। – abhaga

3

आपका django.wsgi फ़ाइल,

WSGIScriptAlias//srv/http/wsgi-scripts/django.wsgi 

<Directory> के बाहर से परिभाषित किया गया है

<Directory /srv/http/wsgi-scripts/> 
    Order allow,deny 
    Allow from all 
</Directory> 

या, अपने django.wsgi फ़ाइल कहीं डालके अंदर। यह काम करना चाहिए।

संपादित करें: ठीक है, यहां एक उदाहरण httpd है।conf है कि एक उत्पादन मशीन पर काम कर रहा है:

<VirtualHost *:80> 
    # Admin email, Server Name (domain name) and any aliases 
    ServerAdmin [email protected] 
    ServerName www.example.de 

    DocumentRoot /home/example/testing/parts/public 

    Alias /media /home/example/testing/parts/public/media 

    # WSGI Settings 
    WSGIDaemonProcess example user=example group=example threads=25 
    WSGIProcessGroup example 
    WSGIScriptAlias//home/example/testing/parts/public/django.wsgi 

    <Directory "/home/example/testing/parts/public"> 
     # Allow Apache to follow links 
     Options FollowSymLinks 
     # Turn on the ability to use .htaccess files 
     AllowOverride All 
     # Controls who can get stuff from this directory 
     Order allow,deny 
     Allow from all 
    </Directory> 
</VirtualHost> 

इसलिए, यदि आपका dhango.wsgi एक जगह में परिभाषित किया गया है के रूप में एक <Directory> निर्देश द्वारा पहुँचा जा सकता निर्धारित करते हैं, आप भी sudo su httpd कि यदि उपयोगकर्ता जो आपके सिस्टम पर अपाचे चलाता है सका , और सीएसएस फाइलों को पढ़ने की कोशिश करें, यह देखने के लिए कि क्या अपाचे वास्तव में उन्हें एक्सेस कर सकता है ...

+0

अगर मैं martfiles में django.wsgi डालता हूं, तो मुझे एक त्रुटि 403 एक्सेस अस्वीकार कर दी गई है ([त्रुटि] [क्लाइंट 127.0.0.1] (13) अनुमति अस्वीकृत: पहुंच/अस्वीकार)। अगर मैं <निर्देशिका/srv जोड़ता हूं ... यह कुछ भी नहीं बदलता है ([त्रुटि] [क्लाइंट 127.0.0.1] (13) अनुमति अस्वीकार कर दी गई: /media/css/style.css से इनकार किया गया, रेफरर: http:// स्थानीय होस्ट /)। –

+0

'' अनुभाग के अंदर 'दस्तावेज़ रूट/होम/मार्ट/प्रोग्रामेशन/पायथन/डीजेंगो/मार्टफाइल' जोड़ने का प्रयास करें। –

+0

.htaccess फ़ाइल कहां डालें? – sharafjaffri