AWS EC2-重新启动后Node.js无法正常工作

时间:2018-08-02 11:17:34

标签: node.js amazon-web-services amazon-ec2 nvm

我使用Amazon Linux AMI 2018.03.0 AMI设置了一个小型免费的AWS实例。我创建并配置了两个其他用户(me和botManager),仅此而已。然后,我使用su botManager从ec2-user切换到botManager,但没有忘记使用cd ~

我通过nvm安装了node.js。要安装nvm,我只需复制/粘贴此内容即可:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash

使用以下命令即可立即访问nvm:

. ~/.nvm/nvm.sh

如此处所述:Tutorial: Setting Up Node.js on an Amazon EC2 Instance

nvm --version仍然没有问题,甚至没有警告,并且可以返回0.32.0

我想要上一个LTS版本,所以我运行了:

nvm install --lts

进展顺利。 node -vnpm -v均正常工作并分别返回v8.11.35.6.0

为确保一切稳定,我ctrl+d退出botManager,以ec2用户身份sudo reboot重新引导服务器。

问题是重启后我以botManager的身份登录并转到其主目录(〜)时,nvm仍在工作,但是node -vnpm -v返回:

bash: (node or npm): command not found

奇怪的是,当我用nvm ls检查安装了哪个版本的node.js时,我最终得到了这个结果:

[botManager@ip-f-o-o-o ~]$ nvm ls
    v8.11.3
node -> stable (-> v8.11.3) (default)
stable -> 8.11 (-> v8.11.3) (default)
iojs -> N/A (default)
lts/* -> lts/argon (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.14.3 (-> N/A)
lts/carbon -> v8.11.3

如何使node.js在重新启动后又能正常工作又长时间呢?

我的Linux知识远非完美,部分是自学成才的,因此欢迎您提供任何帮助。

编辑1: whereis node; echo path的结果:

[botManager@ip~]$ whereis node; echo $PATH node:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin:/opt/aws/bin

编辑2: 全新清洁安装: nvm install --lts的结果:

[botManager@ip-f-o-o-o~]$ nvm install --lts
Installing latest LTS version.
######################################################################## 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v8.11.3 (npm v5.6.0)
nvm_ensure_default_set: a version is required

whereis node; echo path的结果:

[botManager@ip-f-o-o-o~]$ whereis node ; echo $PATH
node: /home/botManager/.nvm/versions/node/v8.11.3/bin/node

/home/botManager/.nvm/versions/node/v8.11.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin:/opt/aws/bin

df -h的结果:

[botManager@ip-f-o-o-o~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        484M   56K  484M   1% /dev
tmpfs           494M     0  494M   0% /dev/shm
/dev/xvda1      7.8G  1.2G  6.6G  15% /

重启后:   whereis node; echo path的结果:

[botManager@ip-f-o-o-o~]$ whereis node ; echo $PATH

node:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin:/opt/aws/bin

df -h的结果:

[botManager@ip-f-o-o-o~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        484M   56K  484M   1% /dev
tmpfs           494M     0  494M   0% /dev/shm
/dev/xvda1      7.8G  1.2G  6.6G  15% /

1 个答案:

答案 0 :(得分:2)

重启后,您的$ PATH被重置,/home/botManager/.nvm/versions/node/v8.11.3/bin不再存在,因此您的二进制文件不可用。

在启动时将其添加到$ PATH变量中:/home/botManager/.nvm/versions/node/v8.11.3/bin

编辑

将此添加到您的.bashrc中:

export PATH=$PATH:/home/botManager/.nvm/versions/node/v8.11.3/bin

或将此行添加到您的/ etc / environment文件中

/home/botManager/.nvm/versions/node/v8.11.3/bin

或在/ usr / bin中创建符号链接

ln -s /home/botManager/.nvm/versions/node/v8.11.3/bin/node /usr/bin/node