2013-08-06 7 views
32

में कॉन्फ़िगरेशन फ़ाइलों के बीच सॉफ्ट-लिंक नहीं बना सकता है। मैं साइट-सक्षम और साइट-उपलब्ध निर्देशिकाओं में सर्वर ब्लॉक वाले कॉन्फ़िगरेशन फ़ाइलों के बीच सॉफ्ट लिंक बनाने की कोशिश कर रहा हूं/etc/nginx /।Nginx साइट्स-सक्षम, साइट्स-उपलब्ध: उबंटू 12.04

आदेश मैं उपयोग कर रहा हूँ है:

sudo ln -s sites-available/foo.conf sites-enabled/ 

जब मैं तो निष्पादित करें:

ls -l 

परिणाम है:

lrwxrwxrwx 1 parallels parallels 27 Aug 6 20:44 immigrationinformation.conf -> immigrationinformation.conf 

जहां immigrationinformation.conf -> immigrationinformation.conf हिस्सा लाल के साथ एक लकड़ी का कोयला है टाइपफेस।

जब मैं इस सॉफ्ट-लिंक को आजमाकर एक्सेस करता हूं, तो मुझे बताया जाता है कि यह टूटा हुआ है।

जब मैं साइटों से उपलब्ध निर्देशिका अर्थात

sudo ln -s sites-available/foo.conf sites-available/foo_link.conf 

में शीतल लिंक बनाने यह सामान्य रूप में काम करता है। हालांकि, अगर मैं इसे साइट-सक्षम निर्देशिका में ले जाता हूं, तो लिंक फिर से टूटा हुआ है।

मैं फ़ाइल प्रबंधक जीयूआई के माध्यम से मुलायम लिंक बना सकता हूं लेकिन कमांड लाइन के माध्यम से नहीं। मैं बिना किसी समस्या के हार्ड-लिंक भी बना सकता हूं।

मुझे संदेह है कि यह एक अनुमति समस्या थी इसलिए मैंने दोनों निर्देशिकाओं और निर्देशिकाओं के 777 में सभी अनुमतियों को सेट करने और रूट के अलावा अन्य चीज़ों को बदलने के लिए चारों ओर खेला है, लेकिन अभी भी कोई भाग्य नहीं है।

कोई भी मदद मुझे बहुत सराहना की जाएगी, धन्यवाद।

+1

मुझे पता है कि प्रश्न पहले से ही उत्तर दिया गया है, लेकिन मैं यह जानना चाहता था कि आपकी गलती कहां थी, यह वास्तव में बहुत आसान था, आपको दूसरे तर्क में फ़ाइल नाम निर्दिष्ट करने की आवश्यकता थी, पहले 'sudo ln -s साइट्स-उपलब्ध/साइट्स नहीं '/ etc/nginx' निर्देशिका –

उत्तर

68

आपको यह समझकर शुरू करना होगा कि सिम्लिंक का लक्ष्य पथनाम है। सक्षम साइटों और यह मान लिया जाये कि आप साइटों से उपलब्ध

में foo.conf प्रयास करें

cd sites-enabled 
sudo ln -s ../sites-available/foo.conf . 
ls -l 

अब आप में एक सिमलिंक होगा पूर्ण या निर्देशिका जो सिमलिंक

शामिल करने के लिए सापेक्ष हो सकता है foo.conf कहा जाता है जिसका लक्ष्य है ../sites-available/foo.conf

बस स्पष्ट होने के लिए, अपाचे के लिए सामान्य कॉन्फ़िगरेशन यह है कि संभावित साइटों के लिए कॉन्फ़िगरेशन फ़ाइलें साइट-उपलब्ध में उपलब्ध हैं और सिम्लिंक के लिए सिम्लिंक सक्षम साइटें साइट-एनबल में रहते हैं एड, उपलब्ध साइटों में लक्ष्यों पर इशारा करते हुए। ऐसा लगता है कि जिस तरह से आप अपने सेटअप का वर्णन करते हैं, लेकिन यह आपकी प्राथमिक समस्या नहीं है।

यदि आप एक ही फाइल पर हमेशा एक सिल्लिंक चाहते हैं, सिमलिंक कहां स्थित है, तो लक्ष्य पूर्ण पथ होना चाहिए।

ln -s /etc/apache2/sites-available/foo.conf mysimlink-whatever.conf 

यहाँ (की लाइन 1) मेरी ls के उत्पादन -l/etc/apache2/साइटों सक्षम है:

lrwxrwxrwx 1 root root 26 Jun 24 21:06 000-default -> ../sites-available/default 

देखें कैसे सिमलिंक का लक्ष्य निर्देशिका के सापेक्ष है कि सिम्लिंक होता है (यह ".." से शुरू होता है जिसका मतलब है एक निर्देशिका ऊपर जाना)।

हार्डलिंक्स पूरी तरह से अलग हैं क्योंकि हार्डलिंक का लक्ष्य निर्देशिका प्रविष्टि नहीं है बल्कि एक फाइलिंग सिस्टम इनोड है।

+0

के अंदर खड़े होने पर -enabled/foo.conf' ठीक है, अब मुझे अपनी समस्या दिखाई दे रही है, मैंने सोचा था कि' ln' कमांड मेरे लिए पथ का समाधान करेगा, हालांकि अब मैं देखता हूं कि मुझे बस इसकी आवश्यकता है लक्ष्य का पूरा पथ निर्दिष्ट करें, या symlink पर स्थान से सापेक्ष पथ निर्दिष्ट करें। – iamyojimbo

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