codedeploy मैं वर्तमान में Github और एडब्ल्यूएस Codedeploy के माध्यम से एक EC2 उदाहरण के लिए एक NodeJS आवेदन की तैनाती को स्वचालित करने की कोशिश कर रहा हूँ। मैंने here से जितनी जल्दी हो सके निर्देशों का पालन किया है, लेकिन मैंने अपने आफ्टरस्टॉल हुक इवेंट के साथ एक झटका लगाया है।NPM इस मुद्दे को एक NodeJS उदाहरण एडब्ल्यूएस का उपयोग कर की तैनाती
version: 0.0
os: linux
files:
- source: /backend
destination: /home/ec2-user/signal
permissions:
- object:/
pattern: "**"
owner: ec2-user
group: ec2-user
hooks:
ApplicationStop:
- location: backend/app/deploy/stop.sh
timeout: 10
runas: ec2-user
BeforeInstall:
- location: backend/app/deploy/beforeinstall.sh
timeout: 1200
runas: ec2-user
AfterInstall:
- location: backend/app/deploy/afterinstall.sh
timeout: 1200
runas: ec2-user
ApplicationStart:
- location: backend/app/deploy/start.sh
timeout: 60
runas: ec2-user
ValidateService:
- location: backend/app/deploy/validate.sh
timeout: 60
runas: ec2-user
मैं बहुत तरह एडब्ल्यूएस CLI के माध्यम से तैनाती आह्वान:
यहाँ मेरी YML फ़ाइल है
aws deploy create-deployment --application-name Signal --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name Production --description "Deployment" --github-location repository=githubusername/repository,commitId=ABCD123 --ignore-application-stop-failures
सब कुछ ठीक काम करता है, जब तक मैं AfterInstall चरण और मेरे 'afterinstall तक पहुँचते हैं। sh 'निष्पादित किया गया है। उस फ़ाइल इस तरह दिखता है:
#!/bin/bash
cd /home/ec2-user/signal/app/
npm install
और निम्न त्रुटि लॉग पैदा करता है, एक असफल तैनाती के कारण:
त्रुटि कोड: ScriptFailed
संदेश: निर्दिष्ट स्थान पर स्क्रिप्ट: बैकएंड उपयोगकर्ता EC2 उपयोगकर्ता के रूप में चलाने /app/deploy/afterinstall.sh बाहर निकलने के कोड के साथ विफल 127
LifecycleEvent - AfterInstall
Script - backend/app/deploy/afterinstall.sh
[stderr]/opt/codedeploy-agent/deployment-root/be9902d2-8af0-46fd-b186-23ead6bea5a4/d-SBW6YCLKC/deployment-archive/backend/app/deploy/afterinstall.sh: line 7: npm: command not found
हालांकि, अगर मैं अपने EC2 उदाहरण में SSH, या तो अस्थायी निर्देशिका पर जाएँ:
/opt/codedeploy-agent/deployment-root/be9902d2-8af0-46fd-b186-23ead6bea5a4/d-SBW6YCLKC/deployment-archive/backend/app/deploy/
या
cd /home/ec2-user/signal/app/
और या तो स्वयं को चलाने के 'NPM स्थापित', या के माध्यम से मेरी स्क्रिप्ट चलाते हैं। /afterinstall.sh, फिर npm ठीक चलाता है।
कोडियोजित एजेंट के लिए चीजें अलग क्यों हैं? मैं 'रनस: ec2-user' का उपयोग कर रहा हूं, इसलिए मुझे लगता है कि इत्यादि इत्यादि हैं जैसे कि मैं ec2-user के रूप में बॉक्स में sshed किया गया है।
मैं क्या बेवकूफ बात गलत कर रहा हूं? कई, बहुत धन्यवाद।
यह केवल हाइलाइट करने योग्य है क्योंकि त्रुटि संदेश लंबा है। अंतिम त्रुटि है: npm: कमांड नहीं मिला –
मुझे लगता है कि यह 'ec2-user' के रूप में चल रहा है लेकिन आपकी लॉगिन स्क्रिप्ट जैसे '.bash_profile' और' .bashrc 'नहीं चला रहा है, इसलिए इसमें npm नहीं है पथ पर। –
अपने afterinstall.sh – Chris