执行NPM在用户数据中安装
我正在尝试在AWS中创建一个启动模板,并在用户数据中
#!/bin/bash
home=/home/ec2-user
nodev='8.11.2'
nvmv='0.33.11'
#install node
su - ec2-user -c "curl
https://raw.githubusercontent.com/creationix/nvm/v${nvmv}/install.sh | bash"
su - ec2-user -c "nvm install ${nodev}"
su - ec2-user -c "nvm use ${nodev}"
# install git
yum install git -y
#clone the code
cd /home/ec2-user
su - ec2-user -c "git clone https://github.com/xyz/xdf.git"
cd /home/ec2-user/xdf
#install dependencies
su - ec2-user -c "npm install"
echo "test" > test.txt
#install pm2
su - ec2-user -c "npm install pm2 -g"
#run the server
su - ec2-user -c "pm2 run index.js"
执行脚本并克隆仓库,但NPM安装命令在dir /home /ec2-user上运行,而不是在 /home /ec2上运行。 - 用户/XDF。 test.txt是在正确的位置中创建的,即内部/home/ec2-user/xdf。如何使NPM安装在/home/ec2-user/xdf上运行。我尝试仅运行npm install
而不是su -ec2 -user -c“ npm install”
,但它仍然给出相同的结果。
I am attempting to create a launch template in aws with the following in the user data
#!/bin/bash
home=/home/ec2-user
nodev='8.11.2'
nvmv='0.33.11'
#install node
su - ec2-user -c "curl
https://raw.githubusercontent.com/creationix/nvm/v${nvmv}/install.sh | bash"
su - ec2-user -c "nvm install ${nodev}"
su - ec2-user -c "nvm use ${nodev}"
# install git
yum install git -y
#clone the code
cd /home/ec2-user
su - ec2-user -c "git clone https://github.com/xyz/xdf.git"
cd /home/ec2-user/xdf
#install dependencies
su - ec2-user -c "npm install"
echo "test" > test.txt
#install pm2
su - ec2-user -c "npm install pm2 -g"
#run the server
su - ec2-user -c "pm2 run index.js"
The script is being executed and the repo is cloned but the npm install command is running on the dir /home/ec2-user rather than on /home/ec2-user/xdf. The test.txt is created in the correct place ie inside /home/ec2-user/xdf. How do I get npm install to run on /home/ec2-user/xdf. I tried just running npm install
instead of su - ec2-user -c "npm install"
, but it still giving the same results.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先,
userData
使用root
用户权限运行。如果您希望ec2-user
成为该dir的所有者,那么简单地执行chown ec2-user:ec2-user/path/to/dir
下一步,运行<代码> su-ec2-user -c ... 它是在
/home/ec2-user
dir和cd/home/ec2-user/xdf 在这里不工作。
只需从脚本中删除所有
su
First of all
userdata
is running withroot
user permissions so you don't need to havesudo
orsu
there. In case you wantec2-user
to be owner of that dir so simply executechown ec2-user:ec2-user /path/to/dir
Next, when you run
su - ec2-user -c ...
it is executed in/home/ec2-user
dir andcd /home/ec2-user/xdf
is not working here.Simply remove all
su
from your script