2016-01-22 14 views
5

पर किसी विशेष कंटेनर के लिए फ़ोल्डर अनुमतियां कैसे सेट करें मुझे लोचदार बीनस्टॉक पर किसी वेब फ़ोल्डर के लिए सेटिंग सेटिंग अनुमतियां हैं। मैं एक उदाहरण में कस्टम डॉकर छवियों का उपयोग करके कई कंटेनर चलाता हूं: apache-php, mysql, memcached, आदि .. कंटेनर "apache-php" के लिए मैं अपने yii2 एप्लिकेशन के साथ एक फ़ोल्डर को/var/www/html/पर मैप करता हूं।लोचदार बीनस्टॉक

जब मैं मैन्युअल रूप से एक बंडल बना देता हूं और लोचदार बीनस्टॉक कंसोल के माध्यम से अपलोड/तैनाती करता हूं तो मुझे निश्चित रूप से फ़ोल्डर के लिए सही अनुमतियां होती हैं और सब कुछ ठीक काम करता है।

अब, जब मैं "ईबी तैनाती" का उपयोग करके ऐप को तैनात करता हूं, तो यह सभी अनुमतियों को छोड़ देता है और मुझे सर्वर त्रुटि मिलती है और "निर्देशिका वेब प्रक्रिया द्वारा लिखने योग्य नहीं है:/var/www/html/backend/web/संपत्ति "लॉग में।

मैं एसएसएच के माध्यम से कनेक्ट कर सकता हूं और मैन्युअल रूप से आवश्यक अनुमतियां सेट कर सकता हूं, लेकिन यकीन है कि यह सुविधाजनक नहीं है, क्योंकि हर बार जब मैं ऐप को फिर से तैनात करता हूं तो किया जाना चाहिए।

तो, मेरे प्रश्न यह है कि लोचदार बीनस्टॉक पर विशेष कंटेनर में विशेष फ़ोल्डर के लिए स्वचालित रूप से अनुमति सेट करने का सबसे अच्छा तरीका क्या है?

शायद, मैं .ebextensions का उपयोग कर सकता हूं, लेकिन मुझे नहीं मिला कि विशेष कंटेनर के लिए "कंटेनर_कॉमैंड" कैसे चलाएं।

उत्तर

9

एडब्ल्यूएस ईबी तैनाती जब लोचदार बीनस्टॉक तैनाती /var/app/ondeck

  1. में अपने अनुप्रयोग शुरू होता है, अपने अनुप्रयोग पहले /var/app/ondeck/ में अनज़िप है
    • सबसे अधिक संभावना, अपने स्थानीय फ़ोल्डर तैनात किया इच्छित अनुमति नहीं है उन पर।
  2. यदि आपको तैनाती के दौरान अपने ऐप, या खोल में समायोजन करने की आवश्यकता है, तो .ebextensions/*.config ऐसा करने का सही स्थान है।

कंटेनर आदेशों पथ

करने के लिए चलाए लेकिन ध्यान रखें, कि इन आदेशों हर बार जब आप को तैनात चलेंगे, चाहे जरूरत है या नहीं, जब तक आप पूर्व config के लिए परीक्षण करने के लिए कुछ विधि का उपयोग किया जाना चाहिए।

container_commands: 
    08user_config: 
    test: test ! -f /opt/elasticbeanstalk/.preconfig-complete 
    command: | 
     echo "jail-me" > /home/ec2-user/.userfile 
    09writable_dirs: 
    command: | 
     chmod -R 770 /var/app/ondeck/backend/web/assets 
     chmod -R 770 /var/app/ondeck/[path] 
    99complete: 
    command: | 
     touch /opt/elasticbeanstalk/.preconfig-complete 

files: 
    "/etc/profile.d/myalias.sh": 
    mode: "000644" 
    owner: root 
    group: root 
    content: | 
     alias webroot='cd /var/www/html/backend/web; ls -al --color;' 
     echo " ========== " 
     echo " The whole point of Elastic Beanstalk is that you shouldn't need to SSH into the server. " 
     echo " ========== " 
+1

हाय @Tony, आप कृपया कैसे मैं त्रुटि प्राप्त कर सकते हैं की जांच कर सकता जब तक मैं 'आदेशों कोशिश कर रहा हूँ: 03_attachment_directory_permission: आदेश: chmod 777/var/ऐप्स/ondeck/manellen/टिकट/संलग्नक /' और यह त्रुटि लौटाता है क्योंकि: (ElasticBeanstalk :: ExternalInvocationError) 'लॉग फ़ाइल – Manellen

+0

@Manellen में, आपको प्रश्न पूछने के लिए टिप्पणियों का उपयोग नहीं करना चाहिए। यह प्रश्न [पहले ही पूछा जा चुका है और उत्तर दिया गया है] (https://stackoverflow.com/questions/40357270/running-a-script-from-ebextensions-folder-in-aws-elastic-beanstalk), और आमतौर पर प्रयास करके होता है उन पथों पर फ़ाइलों तक पहुंचने के लिए जो अभी तक मौजूद नहीं हैं। आईई .: '/ home' तब तक मौजूद नहीं है जब ऐप तैनात हो रहा है। इस उत्तर में बनाई गई फ़ाइल '/ etc/profile.d/myalias.sh' मौजूद नहीं है। सबकुछ '/ var/app/ondeck' में तैयार किया जा रहा है। –

-1

हां आपको ebextensions का उपयोग करना चाहिए।

.ebextensions नामक आपके ऐप स्रोत रूट में एक फ़ोल्डर बनाएं। .config एक्सटेंशन के साथ फ़ाइल बनाएं 01-folder-permissions.config कहें। फ़ाइलों को उनके नाम के शब्दावली क्रम में संसाधित किया जाता है। फ़ाइल का

सामग्री हो सकता है:

container_commands: 
    change_permissions: 
     command: chmod 777 /var/www/some-folder 

उचित फ़ोल्डर और अनुमति के साथ बदलें। कंटेनर कमांड here के बारे में पढ़ें।

+0

'/ var/www' कंटेनर आदेश चलाए जाने पर अभी तक मौजूद नहीं है। –

+6

chmod 777 खराब है। कभी नहीं 777. कहीं नहीं। यह हैकर का खजाना है। –

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