2011-04-06 15 views
8

मैं अपने रेल 3 ऐप के साथ xsendfile का उपयोग कर किसी समस्या में भाग रहा हूं।प्रतीकात्मक लिंक के साथ mod_xsendfile

मैं तैनाती का प्रबंधन करने के लिए कैपिस्ट्रानो का उपयोग कर रहा हूं और प्रत्येक रिलीज में, साझा/संपत्ति डीआईआर (जैसे/var/www/साइट/रिलीज/1234/संपत्ति =>/var/www/साइट के लिए एक प्रतीकात्मक लिंक है)/साझा/संपत्ति)। समस्या यह है कि XSendFile प्रतीकात्मक लिंक का पालन नहीं कर रहा है।

XSendFilePath /var/www/site/releases 

फिर सब कुछ:

The given path was above the root path: xsendfile: unable to find file: /var/www/site/releases/20110406205607/assets/pdfs/2/original/test.pdf 

मैं XSendFilePath config

XSendFilePath /var/www/site/shared/assets 

के रूप में स्थापित किया है, तो मैं करने के लिए config स्विच: मेरे अपाचे लॉग में, मैं निम्नलिखित त्रुटि दिखाई दे रही ठीक काम करता है। तो मेरे पास कुछ प्रश्न हैं:

1) क्या XSendFilePath प्रतीकात्मक लिंक का पालन करने का कोई तरीका है?

2) क्या XSendFilePath को मेरे रिलीज़ डीआईआर में सेट करने के साथ कोई सुरक्षा जोखिम है? दूसरे शब्दों में, क्या मैं उस सभी डीआईआर तक पहुंच खोल सकता हूं?

task :storage_link, :except => { :no_release => true } do 
    run "ln -nFs #{deploy_to}/shared/assets #{latest_release}/assets" 
end 

यह XSendFilePath जो यह रूट पथ के अंदर डालता है /var/www/site/current/assets के रूप में लिंक को देखने के बनाता है:

उत्तर

7

आप एक after "deploy:finalize_update" कार्य इस के समान का उपयोग कर लिंक बना रहे हैं।

यह भी सुनिश्चित करें कि आपके ऐप को चलाने वाले उपयोगकर्ता के पास/var/www/site/shared/assets पर लिखने की अनुमति है।

+0

उत्तर के लिए धन्यवाद। मैं इस परियोजना से आगे बढ़ गया हूं, लेकिन आपका जवाब निश्चित रूप से समझ में आता है। – bostonou

+1

यह 'पथनाम # realdirpath' का उपयोग कर सिम्लिंक को हल करने तक हमारे लिए काम नहीं करता है। –

+0

यह मेरे लिए काम नहीं करता है, यहां तक ​​कि 'पथनाम # realdirpath' का उपयोग करते समय भी :( – wrzasa

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