执行NPM在用户数据中安装

发布于 2025-02-11 09:27:11 字数 894 浏览 1 评论 0原文

我正在尝试在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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

忆梦 2025-02-18 09:27:11

首先,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 with root user permissions so you don't need to have sudo or su there. In case you want ec2-user to be owner of that dir so simply execute chown ec2-user:ec2-user /path/to/dir

Next, when you run su - ec2-user -c ... it is executed in /home/ec2-user dir and cd /home/ec2-user/xdf is not working here.
Simply remove all su from your script

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文