2013-09-06 14 views
14

के साथ एक वाग्रेंट बॉक्स पर अनुमतियां मैं कई परियोजनाओं के लिए योनि + कठपुतली वातावरण उत्पन्न करने के लिए सफलतापूर्वक http://www.puphpet.com का उपयोग कर रहा हूं। फिर इस हफ्ते मुझे लार्वेल 4 का उपयोग करके एक परियोजना के लिए एक प्रोटोटाइप लिखने के लिए काम सौंपा गया। चूंकि मैं पूरी तरह से परियोजना पर काम करने वाला नहीं हूं, मुझे लगा कि इसके लिए वीएम पर्यावरण बनाना सबसे अच्छा होगा व्यक्ति सिर्फ रेपो के लिए क्लोन कर सकते हैं। लैरवेल 4 के साथ ज्यादा अनुभव नहीं है मुझे देव पर्यावरण में बस कुछ ठीक करने के लिए मिला है। फिर मैंने पहला माइग्रेशन चलाने की कोशिश की और यहां समस्याएं app/storage फ़ाइल अनुमतियों से शुरू होती हैं। से समन्वयित फ़ोल्डर प्रावधान आवारा और इतने तरह www-आंकड़ों के मालिक & समूह सेट:लैरवेल 4 पंपेट

1. एप्लिकेशन/भंडारण वेब उपयोगकर्ता

ठीक से लिखने योग्य होना चाहिए, आईडी बाहर ले

config.vm.synced_folder "./www", "/var/www", owner: "www-data", group: "www-data" 

2. कारीगर केवल DB

ठीक करने के लिए उपयोग किया है आवारा बॉक्स के अंदर से चलाया जा सकता, vagrant ssh और www फ़ोल्डर से कारीगर चलाएं।

3. ऐप/भंडारण & एप्लिकेशन/डेटाबेस आदेश माइग्रेशन

गरर का उपयोग करने के आवारा उपयोगकर्ता द्वारा लिखने योग्य रहना होगा, ठीक है, आवारा फ़ाइल (ध्यान दें करने के लिए कोड की निम्न भयानक टुकड़ा कहा, पहले कठपुतली में ऐसा करने की कोशिश की और यह नहीं लिया):

config.vm.provision :shell, :inline => 
    "usermod -a -G www-data vagrant" 

4. एप्लिकेशन/भंडारण & एप्लिकेशन/डेटाबेस समूह द्वारा लिखने योग्य नही हैं

अरग !!! ठीक है, आइए इस कठपुतली निर्देश का प्रयास करें:

file { "/var/www/app/storage": 
    source => "/var/www/app/storage/", 
    mode => 0775, 
    ensure => 'directory', 
    owner => 'www-data', 
    group => 'www-data', 
    recurse => true 
} 

नहीं, काम नहीं करता है। Puppet exec {} निर्देश के साथ कोई प्रभाव नहीं करने का प्रयास किया। ऐसा लगता है कि योनि सिंक किए गए फ़ोल्डर के लिए अनुमति मेजबान मशीन द्वारा सेट की जाती है, अतिथि नहीं।

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

अद्यतन

हम समझ गए होंगे कि अगर हम अपाचे चलाने उपयोगकर्ता को बदलने, आवारा पुनः लोड करने पर यह हावी नहीं होता। इसलिए हमने इसे मैन्युअल रूप से किया है और यह सिंक किए गए फ़ोल्डर की अनुमतियों & स्वामी को बदलने से बेहतर काम कर रहा है। अब हम यह समझने की कोशिश कर रहे हैं कि पपेट में मैन्युअल रूप से उस बदलाव को कैसे बनाया जाए।

+1

मैं के इस खंड पर एक नज़र डालें आप और आरई के समान नाव में मी: # 2। क्या आप xip.io पता (इसलिए test.10.10.10.10.xip.io) का उपयोग करके अपना पर्यावरण सेट अप नहीं कर सके और फिर रूट विशेषाधिकार (या उपयोगकर्ता को आपकी लार्वेल इंस्टॉलेशन कनेक्ट हो रहा है) दूरस्थ विशेषाधिकार प्रदान करते हैं? फिर, जब आप होस्ट पर कारीगर डीबी कमांड चलाते हैं तो यह mysql बॉक्स को ढूंढने और लॉग इन करने में सक्षम होना चाहिए .. समझ में आता है? नोट: मैं भी mysql निकल पड़ा: /etc/mysql/my.cnf sudo नैनो; छोड़-बाह्य-लॉक ; बाँध-पता बचाने के लिए और फिर से लोड। उम्मीद है कि इससे मदद मिलती है! – dpluscc

+0

यूप, हम इसे आज़माएंगे और देखेंगे कि यह कैसा चल रहा है। पारितोषिक के लिए धन्यवाद। – Adrian

+0

आखिरकार यह अनुमतियों को बदलने की बात थी। हालांकि, मैं अभी भी डीबी की रिमोट पहुंच प्राप्त करने के लिए आपके सुझाव का उपयोग कर सकता हूं। – Adrian

उत्तर

19

ट्विटर पर कुछ चर्चा के बाद, निम्नलिखित पता लगा:

वहाँ आवारा पर VirtualBox से एक बाधा है कि आप अतिथि ओएस के अंदर से समन्वयित फ़ोल्डर के लिए अनुमतियाँ सेट करने की अनुमति नहीं है।See this issue on github.

आप नीचे दिए गए कोड set the synced folder permissions को आवारा फ़ाइल से उपयोग कर सकते हैं:

config.vm.synced_folder ".", "/vagrant", :mount_options => ["dmode=777","fmode=666"] 

या आप change the Apache runtime user कठपुतली प्रकट की तरह इतना से आवारा के लिए कर सकते हैं:

exec { "change_httpd_user": 
    command => "sed -i 's/www-data/vagrant/g' /etc/apache2/envvars", 
    onlyif => "/bin/grep -q 'www-data' '/etc/apache2/envvars'", 
    notify => Service['apache2'], 
    require => Package['apache2'], 
} 

file { "/var/lock/apache2": 
    ensure => "directory", 
    owner => "vagrant", 
    group => "vagrant", 
    require => Exec['change_httpd_user'], 
} 

या के किसी भी संयोजन

+0

यहां यह काम करने की उम्मीद है। –

+0

अरे @ मैटसेटर, मुझे बताएं कि यह कैसा चल रहा है। मुझे थोड़ी देर में इसका इस्तेमाल करने के लिए ज्यादा कॉल नहीं आया है और यह नहीं पता कि वाग्रेंट या कठपुतली ने चीजों को बदल दिया है या नहीं। – Adrian

+1

मैं इसका उपयोग करने में सक्षम नहीं था। सुनिश्चित नहीं है कि यह अनुभव, या समय की कमी के लिए नीचे था। लेकिन मैं कठपुतली की config.yaml और Vagrantfile में अनुमतियों और स्वामित्व की स्थापना के साथ चला गया। जानकारी के लिए धन्यवाद, और पूछने के लिए धन्यवाद। –

9

मैं अपने सेटअप में कठपुतली का उपयोग नहीं कर रहा हूं और मैं 2 समाधान के साथ आया:

(1) मेरी bootstrap.sh फाइल में:

sudo sed -i 's/APACHE_RUN_USER=.*/APACHE_RUN_USER=vagrant/g' /etc/apache2/envvars 
sudo sed -i 's/APACHE_RUN_GROUP=.*/APACHE_RUN_GROUP=www-data/g' /etc/apache2/envvars 

(2) इम मेरी VagrantFile:

config.vm.synced_folder "./", "/vagrant", id: "vagrant-root" , :owner => "vagrant", :group => "www-data" 

config.vm.synced_folder "./app/storage", "/vagrant/app/storage", id: "vagrant-storage", 
    :owner => "vagrant", 
    :group => "www-data", 
    :mount_options => ["dmode=775","fmode=664"] 

config.vm.synced_folder "./public", "/vagrant/public", id: "vagrant-public", 
    :owner => "vagrant", 
    :group => "www-data", 
    :mount_options => ["dmode=775","fmode=664"] 
+0

साझा करने के लिए धन्यवाद, यह देखना अच्छा है कि इसे कठपुतली के बिना कैसे किया जा सकता है। साथ ही साथ फ़ोल्डर के मालिक/समूह को कैसे बदला जाए। – Adrian

+0

मेरी इच्छा है कि मैं इस 3 घंटे पहले ठोकर खाऊंगा। धन्यवाद!!!! – applecrusher

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