2013-08-31 14 views
12

मैं उबंटू 13.04 का उपयोग कर रहा हूं।लॉग फ़ाइल लिखते समय अनुमति अस्वीकार

ValueError: Unable to configure handler 'file': [Errno 13] Permission denied: '/home/shwetanka/logs/mysite/mysite.log' 

मैं इसे कैसे ठीक करूं - मैं sudo service uwsgi start

का उपयोग कर रहा /home/shwetanka/logs/mysite/mysite.log

के रूप में Django में लॉग फ़ाइल कॉन्फ़िगर कर दिया है लेकिन मैं इस त्रुटि हो रही है uwsgi चल रहा हूँ? यह तब नहीं होना चाहिए जब मैं उउस्गी को सूडो के रूप में चलाता हूं।

उत्तर

21

आपको chmod कमांड के साथ अनुमतियों को ठीक करने की आवश्यकता है, जैसे: chmod 775 /home/shwetanka/logs/mysite/mysite.log

ls -l /home/shwetanka/logs/mysite/mysite.log के साथ फ़ाइल के मालिक को देखें और इसे uwsgi पर लिखने योग्य बनाएं। अगर फ़ाइल uwsgi के स्वामित्व में नहीं है, तो आपको chown कमांड का उपयोग करना होगा।

उपयोगकर्ता नाम पर एक नज़र डालें जिसके अंतर्गत आपकी सेवा ps aux | grep 'uwsgi' के साथ चल रही है।

यदि इस समय सुरक्षा आपके लिए इतना महत्वपूर्ण नहीं है, तो chmod 777 /home/shwetanka/logs/mysite/mysite.log का उपयोग करें और यही वह है। लेकिन ऐसा नहीं है कि यह कैसे किया जाता है।

ऐसा करने का सबसे सुरक्षित तरीका मालिक और फ़ाइल के समूह की जांच करना होगा और फिर आवश्यक होने पर उन्हें बदलें और तदनुसार अनुमतियां समायोजित करें।

चलो एक उदाहरण दें।

अगर मैं /home/shwetanka/logs/mysite/mysite.log में एक फ़ाइल और कमांड ls -l /home/shwetanka/logs/mysite/mysite.log निम्नलिखित उत्पादन देता है:

-rw-rw-r-- 1 shwetanka shwetanka 1089 Aug 26 18:15 /home/shwetanka/logs/mysite/mysite.log 

इसका मतलब है कि फ़ाइल के मालिक shwetanka है और समूह में भी shwetanka है। अब rwx बिट्स पढ़ें। पहला समूह फ़ाइल मालिक से संबंधित है, इसलिए rw- का अर्थ है कि फ़ाइल मालिक द्वारा पठनीय और लिखने योग्य है, समूह द्वारा पठनीय और लिखने योग्य और दूसरों द्वारा पठनीय। आपको यह सुनिश्चित करना होगा कि फ़ाइल का स्वामी वह सेवा है जो इसे लिखने की कोशिश कर रहा है या फ़ाइल सेवा के समूह से संबंधित है या आपको permission denied त्रुटि मिल जाएगी।

chown uwsgi /home/shwetanka/logs/mysite/mysite.log:

अब अगर मैं एक उपयोगकर्ता नाम uwsgi कि USWGI सेवा द्वारा उपयोग किया और इसके बाद के संस्करण फ़ाइल है कि सेवा के द्वारा लिखने योग्य होना चाहते है, मैं फ़ाइल के मालिक है, इस तरह बदलना होगा। चूंकि स्वामी के लिए लिखने के बिट (पहले rwx समूह) पहले से ही 1 पर सेट है, वह फ़ाइल अब UWSGI सेवा द्वारा लिखने योग्य होगी। किसी और प्रश्न के लिए, कृपया एक टिप्पणी छोड़ दें।

+1

धन्यवाद।असल में uwsgi प्रक्रियाएं 'www-data' उपयोगकर्ता के अंतर्गत चल रही थीं। मैंने उपयोगकर्ता को चोटी के साथ बदल दिया और यह काम किया। वैसे भी मैंने लॉग फ़ाइल स्थान को var में स्थानांतरित कर दिया और chmod 775 दिया और www-data chown: www-data और काम कर रहा है। एक बार फिर धन्यवाद। – Shwetanka

+0

आपका स्वागत है। मैंने अपना सर्वश्रेष्ठ दिया और मुझे खुशी है कि यह काम करता है। ;-) – Luka

0

वैकल्पिक रूप से आप uwsgi (http://uwsgi-docs.readthedocs.org/en/latest/Options.html#umask) के लिए umask विकल्प सेट कर सकते हैं।

मेरे पास एक ही स्थिति थी, मैं www-data के माध्यम से uwsgi चला रहा था और मैंने बिल्डआउट का उपयोग किया। अनुमतियों 664 बन गया यह लॉग फ़ाइल के बाद

[uwsgi] 
recipe = buildout.recipe.uwsgi 
xml-socket = /tmp/uwsgi.sock 
xml-master = True 
xml-chmod-socket = 666 
xml-umask = 0002 
xml-workers = 3 
xml-env = ... 
xml-wsgi-file = ... 

तो www-डेटा समूह के समूह के सदस्यों को भी इस पर लिख सकते हैं: तो मेरे मामले में यह सुधार इस तरह देखा।

संबंधित मुद्दे