2011-08-07 6 views
12

मैं एक साइट के लिए जेकिल पर विचार कर रहा हूं, मैं एक साथ रख रहा हूं जो बहुत सारी छवियों (और अन्य बड़े पैमाने पर आईएसआई मीडिया फाइलों) के साथ एक ब्लॉग होगा। छवियों के लिए निर्देशिका बनाना और पोस्ट में आवश्यकतानुसार उन्हें लिंक करना इतना आसान है। लेकिन, जैसा कि मैं इसे समझता हूं, जब साइट जेनरेट की जाती है, तो सभी छवि डेटा जेनरेट की गई _site निर्देशिका में डुप्लीकेट किए जाएंगे जो स्थैतिक फाइलें रखती हैं। प्रत्येक बार जब साइट उत्पन्न होती है तो _site निर्देशिका खाली हो जाती है, और साइट के स्थिर संस्करण के साथ दोहराया जाता है।मैं एक बड़ी छवि निर्देशिका वाले ब्लॉग के लिए जेकिल कैसे स्थापित कर सकता हूं, ताकि जनरेटेड साइट में उस निर्देशिका को डुप्लिकेट करने से बचें?

क्या कोई तरीका है, उदाहरण के लिए, साइट निर्देशिका के अंदर छवि निर्देशिका में एक सिम्लिंक ड्रॉप करें, और फिर स्थिर फाइलें उत्पन्न होने पर जेकील इसे अनदेखा कर सकती है?

या इस बारे में जाने का कोई और तरीका है जो अधिक समझ में आता है?

उत्तर

10

मान लें कि आप एक अपाचे वेब सर्वर पर चल रहे हैं, तो आप सामान्य डॉक्रूट के बाहर निर्देशिका से छवियों की सेवा के लिए एक उपनाम निर्देश सेट कर सकते हैं। आपको वर्चुअलहोस्ट कॉन्फ़िगरेशन या उपनाम निर्देश बनाने के लिए कुछ अन्य क्षमता को संपादित करने की आवश्यकता है (उदा। नियंत्रण कक्ष के माध्यम से)।

यह कैसे काम करेगा इसके उदाहरण के लिए, मान लीजिए कि आप अपनी जेकिल फाइलें "/ web/jekyll" नामक निर्देशिका के तहत संग्रहीत कर रहे हैं। अपनी छवि निर्देशिका प्राप्त करने के लिए निम्न कार्य करें:

  1. अपने मूल जैकिल पेड़ के साथ "_images" निर्देशिका जोड़ें। की तरह कुछ के साथ समाप्त:

    _config.yml 
    _images/ 
    _layouts/ 
    _posts/ 
    _site/ 
    index.md 
    
  2. अद्यतन अपने अपाचे config की तरह उर्फ ​​निर्देश जोड़ने के लिए:

    Alias /images /web/jekyll/_images 
    
  3. पुनः लोड अपाचे config और Jekyll चलाने साइट बनाने के लिए।

चूंकि छवि निर्देशिका का नाम एक अंडरस्कोर से शुरू होता है, Jekyll धक्का नहीं होगा/आउटपुट _site करने के लिए इसे बनाने के दौरान नकल। अपाचे खुशी से आपकी _site निर्देशिका से अधिकांश फ़ाइलों को सामान्य रूप से सेवा प्रदान करेगा, लेकिन जब यह "http: //jekyll/images/test.jpg" जैसा कुछ दिखाई देता है, तो फ़ाइल को "/ web/jekyll/_site/_images/test.jpg ", यह" /web/jekyll/_images/test.jpg "से इसकी सेवा करेगा।


संयोग से, मैं करने के लिए Jekyll चूक से स्रोत सामग्री और उत्पादन सामग्री के एक छोटे से अधिक जुदाई की तरह। तो, मैं सेटअप मेरी निर्देशिका संरचना इस प्रकार है:

Alias /images /web/jekyll/images 

Jekyll है:

/web/jekyll/html/ 
/web/jekyll/images/ 
/web/jekyll/source/ 
/web/jekyll/source/_config.yml 
/web/jekyll/source/_layouts 
/web/jekyll/source/_posts 
/web/jekyll/source/index.md 
_config.yml

destination: ../html 

में सेट निम्नलिखित विकल्प और साथ अपाचे उर्फ ​​निर्देश सेटअप के साथ

"/ web/jekyll/source" निर्देशिका में चलाएं, लेकिन आउटपुट "/ web/jekyll/html" dir को भेजा जाता है। पहले उदाहरण के समान, "http: //jekyll/images/test.jpg" पर कॉल "/web/jekyll/images/test.jpg" से परोसे जाते हैं। यह सेटअप वास्तव में साइट पर नजर रखने वाली साइट से कोई फर्क नहीं पड़ता है। मुझे कच्चे स्रोत फ़ाइलों, पूरी तरह से बेक्ड आउटपुट फाइलों और छवियों के बीच क्लीनर अलगाव पसंद है जो उपनाम के माध्यम से काम करते हैं।

+1

मैं देख सकता हूं कि यह कैसे काम करेगा, लेकिन मुझे यह उल्लेख करना चाहिए था कि मैं * वास्तव में * छवि निर्देशिका को _sites निर्देशिका के अंदर होना चाहूंगा, क्योंकि इससे पूरी चीज सर्वर पर rsyncing को व्यवस्थित कर देगी। कोई और अंतर्दृष्टि? (बीटीडब्लू, साइट संरचना पर युक्तियों के लिए धन्यवाद। मैं समय लेने में आपकी सराहना करता हूं।) –

+0

मुझे यकीन नहीं है कि इस समय इसे और कैसे करना है। अद्यतन संरचना के साथ दूसरे उदाहरण के साथ rsync के बारे में एक नोट, विचार केवल आपके सर्वर पर "/ web/jekyll /" में सब कुछ rsync करने के लिए होगा। "एचटीएमएल" और "छवियों" निर्देशिकाओं का वास्तव में उपयोग किया जाएगा और "स्रोत" निर्देशिका आपको केवल आपके कोड के ऑफ साइट बैकअप प्रदान करेगी। –

+0

एक अन्य विचार अभी हुआ। आप कहीं भी एक सिम्लिंक से सावधान रहना चाहेंगे जो जैकिल आउटपुट करता है। यदि आपके पास कोड है जो सिम्लिंक को वहां रहने की अनुमति देता है लेकिन यह अपग्रेड में टूटा हो जाता है, तो यह संभव है कि jekyll आपकी सभी स्रोत छवियों को हटा दे। –

0
  1. छवियों के लिए project page बनाएं।
  2. निर्देशिका संरचना सेट करें

    /home/git/svnpenn.github.io 
    /home/git/img 
    
  3. भागो Jekyll

    # We cant add the symlink until after jekyll is done. We will remove the 
    # site folder and wait for it to rebuild. 
    rm -r _site 
    jekyll --server & 
    while [ ! -f _site/index.html ] 
    do 
        sleep 1 
    done 
    ln -s ../images _site/images 
    

नोट मैं होगा क्योंकि मुझे लगा कि यह उपयोग कर रहा था यह मदद GitHub पृष्ठों पर समय प्रकाशित करें। ऐसा नहीं होता। सर्वर के आधार पर गिटहब को प्रकाशित करने में 1-10 मिनट लग सकते हैं।

0

सही, jekyll कमांड का पहला भाग गंतव्य निर्देशिका में सबकुछ हटा देता है। इसके साथ समस्या यह है कि symlinks मैन्युअल रूप से फिर से बनाया जाना चाहिए। तो अगला, आगे बढ़ें और एक स्क्रिप्ट बनाएं जो हर बार ऐसा करती है।

को बाहर: [Jekyll, सीएसएस, img] _config.yml फ़ाइल में

linux:

सुनिश्चित करें कि हो सकता है "," प्रतीक पहले, दूसरा, तीसरा .. आदेश चलाता है।

स्क्रिप्ट: निष्पादन योग्य अनुमतियों के साथ एक फ़ाइल का नाम Jekyll युक्त

jekyll; 
ln -s /var/www/css /var/www/_site/css; 
ln -s /var/www/img /var/www/_site/img; 

अंत में (./jekyll) Jekyll के चलने वाले कार्यक्रम के बजाय।

-Dan

0

मैं जानता हूँ कि यह पहले से ही उत्तर दिया गया है, लेकिन मैं एक अलग मार्ग चला गया। मैंने ड्रॉपबॉक्स पर सार्वजनिक निर्देशिका में अपनी सभी छवियों की मेजबानी की और छवियों का एक अभिव्यक्ति उत्पन्न करने के लिए गंदगी का उपयोग किया। यह मेरे भंडार को छोटा रखता है क्योंकि छवियों की जांच नहीं की जाती है। मैंने इसे थोड़ी देर पहले blog post में विस्तृत किया है।