मैं अपने ऐप की तैनाती के लिए .sh स्क्रिप्ट का उपयोग करना चाहता हूं। वह स्क्रिप्ट मेरे होम सर्वर (Ubuntu 15.10 सर्वर) पर है, जिसे निष्पादन योग्य के रूप में चिह्नित किया गया है। इस स्क्रिप्ट तक पहुंच ssh के माध्यम से की जाती है, इस ट्यूटोरियल का उपयोग करके , मैंने ssh लॉगिन सेट किया है, जो उस स्क्रिप्ट को चलाता है। इसलिए मूल रूप से मैं सिर्फ कॉल करता हूं ssh deployer@XXX.com someArgumentsऔर यह मेरी स्क्रिप्ट someArgumentsको मापदंडों के रूप में चलाता है । उपयोगकर्ता के deployerपास uid = 0 है, इसलिए इसका मूल रूप से root(इसे भविष्य में बदल दिया जाएगा, मैंने इसे केवल अनुमतियों की समस्याओं को समाप्त करने के लिए सेट किया है जब तक कि यह ठीक काम न करे)।
और यहां वह जगह है जहां चीजें मुश्किल हो जाती हैं। /usr/bin/env: php: No such file or directoryकमांड पर स्क्रिप्ट रिपोर्ट /bin/composer install( संगीतकार का उपयोग करके )। चीजें और अधिक अजीब हैं जितना अधिक मैं उस स्क्रिप्ट को देखता हूं। इस लाइन से पहले, वहाँ भी कहा जाता है /bin/composer self-updateऔर /bin/composer -V, जो दोनों सही ढंग से चलता है और सही आउटपुट प्रदर्शित करता है।
मैंने निम्नलिखित चीजों की जाँच की है:
/usr/bin/env php -vसही PHP संस्करण प्रदर्शित करता है (जैसा कि/usr/bin/php -v)whereis phpप्रदर्शित करता हैphp: /usr/bin/php /usr/local/bin/php /usr/share/man/man1/php.1.gzphp5-cliपैकेज स्थापित और नवीनतम संस्करण है$PATHशामिल/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gameswhich envप्रदर्शित करता है/usr/bin/env
मैंने निम्नलिखित चीजों को भी आजमाया है:
- स्क्रिप्ट को
bash deploy.shरूट के तहत सीधे चलाना (चूंकि यह उस उपयोगकर्ता के समान है) - त्रुटियों के बिना पूरी तरह से काम करता है - फेलिंग कमांड सीधे - बिना त्रुटियों के भी पूरी तरह से चल रहा है
तो यह मुझे बहुत विशिष्ट मामला लगता है, यह कमांड काम क्यों नहीं करता है। मैंने इसे डिबग करने के 12 घंटे बिताए और मैं यहां विचारों से बाहर हूं।
PS: इसी तरह की त्रुटि ( /usr/bin/env: node: No such file or directory) तब होती है जब bower install( बोवर का उपयोग करते हुए ) होती है , लेकिन नहीं चलने पर npm install( एनपीएम का उपयोग करके )।
sh deployऔर bash deployदोनों एक ही परिणाम देता है
/usr/bin/env > environment.txt

sh deployबजायbash deploy(शायद कुछ बैशिज़्म) चलाएं। आपने " निम्नलिखित चीजों " की जांच कैसे की ? मैं उन्हें स्क्रिप्ट में जांचने की सलाह देता हूं, ताकि आप एनवीएस के अंतिम ओवरराइड और स्वच्छता की खोज कर सकें।