nginx यूनिक्स डोमेन सॉकेट त्रुटि


18

मैं फ़ेडोरा 17 का उपयोग करता हूं, और जब मैं यूनिक्स के साथ निग्क्स को यूनिक्स डोमेन सॉकेट का उपयोग करके सेटअप करता हूं, जब मैं सॉकेट को एक निर्देशिका में उचित अनुमति के साथ रखता हूं तो यह ठीक है, लेकिन जब मैं इसमें सॉकेट रखता हूं तो यह नगण्य /tmpत्रुटि का कारण होगा:

connect() to unix:/tmp/MySite.sock failed (2: No such file or directory) while connecting to upstream

फ़ाइल मौजूद है और nginx उपयोगकर्ता के लिए पढ़ने / लिखने की अनुमति है। लेकिन इस त्रुटि का क्या कारण है, इसकी वास्तव में मुझे पागल कर देता है, क्या कोई इसे समझ सकता है।

जवाबों:


33

आप इंटरप्रोसेस संचार के लिए इच्छित सॉकेट नहीं रख सकते /tmp

सुरक्षा कारणों से, फेडोरा के हाल के संस्करणों ने अस्थायी अस्थायी निर्देशिकाओं का उपयोग किया है , जिसका अर्थ है कि प्रत्येक सेवा पूरी तरह से अलग दिखती है /tmpऔर केवल उस निर्देशिका में अपनी फाइलें देख सकती है।

समस्या को हल करने के लिए, सॉकेट को एक अलग निर्देशिका में रखें, जैसे कि /run(पहले के रूप में जाना जाता है /var/run)।


1
/ रन एक नियमित उपयोगकर्ता के लिए योग्य नहीं है, हालांकि
होस्टमास्टर

1
/runसीधे लिखने योग्य नहीं है, लेकिन आप इसके तहत एक निर्देशिका बनाने के लिए सिस्टेम को निर्देश दे सकते हैं जो दोनों प्रक्रियाओं द्वारा लिखने योग्य है।
माइकल हैम्पटन

खोज करने वालों की मदद करने के लिए, यह सेंटो 7 पर भी लागू होता है, और सॉकेट-फोल्डर को / रन करने के लिए काम करता है। इस समस्या का पता लगाना आसान नहीं है, क्योंकि प्रत्येक खाता tmp में फ़ोल्डर और फ़ाइल (परीक्षण के लिए 777 सेट) देख सकता है, इसलिए आप कभी भी अनुमान नहीं लगा पाएंगे कि प्रक्रियाएं नहीं हो सकीं।
जोसेफ

0

हाँ! यह मदद की!

Uwsgi से चेक-स्टार्टअप-लॉग संदेश देख रहा था, लेकिन स्टार्टअप लॉग में कोई डेटा नहीं था, यह पता लगाने में सक्षम नहीं था कि क्या हो रहा था। पता चला, मुझे जुर्राब फाइल को गैर- / tmp स्थान में बदलने की जरूरत है, और जोड़ें:

पकड़-अपवाद = सत्य

wsgi की आईएनआई फ़ाइल में। पता चला, मैंने फ़ाइलहैंडलर स्थान को एक गैर-मौजूद निर्देशिका में निर्दिष्ट किया है, इसलिए यह पहली बार में त्रुटियों को लॉग नहीं कर सका।

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