【发布时间】:2018-12-18 06:40:45
【问题描述】:
我试图在我的 Codedeploy 部署中运行一个 AfterInstall 挂钩,该挂钩运行一个 shell 脚本以 cd 进入我的应用程序目录,授予用户写入权限,然后运行 npm install 来安装应用程序依赖项,但我收到了部署期间出现以下错误
Error CodeScriptFailed
Script Namescripts/npm-start.sh
MessageScript at specified location: scripts/npm-start.sh run as user root failed with exit code 127
Log TailLifecycleEvent - ApplicationStart
Script - scripts/npm-start.sh
[stderr]/opt/codedeploy-agent/deployment-root/dfdfdfd-c90-9f39-4ab9-bd51-e3f737003a72/d-ZID6SUV6U/deployment-archive/scripts/npm-start.sh: line 3: npm: command not found
现在我在过去遇到过问题,以 sudo 或 root 身份运行 npm 会导致问题,因为它是与我的 ubuntu 用户一起安装的,但即使我在我的 appspec.yml 中使用 runas: ubuntu 它也是如此以 root 用户身份运行。
有人知道问题可能是什么吗?
appspec.yml:
version: 0.0
os: linux
files:
- source: /
destination: /var/www/app/
hooks:
AfterInstall:
- location: scripts/npm-install.sh
runas: root
timeout: 300
ApplicationStart:
- location: scripts/npm-start.sh
runas: root
timeout: 60
npm-install.sh:
#!/bin/bash
cd /var/www/app
sudo chmod g+s /var/www/app
sudo chmod o-rwx /var/www/app
npm install
npm-start.sh:
#!/bin/bash
cd /var/www/app
npm start
【问题讨论】:
标签: linux bash unix aws-code-deploy