AWS EC2 – Node.js не работает после перезагрузки

Я установил небольшой и бесплатный экземпляр AWS с AMI Amazon Linux AMI 2018.03.0. Я создал и настроил двух дополнительных пользователей (я и botManager) и больше ничего. Затем я переключился с ec2-user на botManager с su botManager и не забыл на cd ~.

Я установил node.js через nvm. Чтобы установить nvm, я просто копирую/вставляю это:

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

Сделал nvm доступным сразу с помощью:

. ~/.nvm/nvm.sh

Как описано здесь: Учебное пособие. Настройка Node.js на инстансе Amazon EC2

По-прежнему никаких проблем, даже предупреждений, nvm --version работает и возвращает 0.32.0.

Мне нужна была последняя версия LTS, поэтому я запустил:

nvm install --lts

И все прошло гладко. И node -v, и npm -v сработали и соответственно вернули v8.11.3 и 5.6.0.

Чтобы быть уверенным, что все стабильно, я ctrl+d выхожу из botManager и как пользователь ec2 перезагружаю сервер с помощью sudo reboot.

Проблема в том, что когда я снова вхожу в систему как botManager после перезагрузки и перехожу в его домашний каталог (~), nvm все еще работает, но node -v и npm -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% /

person Alexandre Rivara    schedule 02.08.2018    source источник
comment
после перезагрузки каков результат этой командной строки: whereis node; эхо $PATH   -  person Daphoque    schedule 02.08.2018
comment
Извините за долгий ответ, задержался. [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 Результатом whereis node является просто node: без возврата строки.   -  person Alexandre Rivara    schedule 02.08.2018
comment
Похоже, ваши двоичные файлы были установлены на временный диск. Вы используете ЭБС? Переустановите все, перезапустите предыдущую команду, затем напечатайте результат df -h   -  person Daphoque    schedule 02.08.2018
comment
Да, он использует EBS, и блок все еще подключен с момента создания экземпляра. Это уже новый инстанс со вчерашнего дня, но я сейчас же сделаю новый и попробую еще раз   -  person Alexandre Rivara    schedule 02.08.2018
comment
Если бы я знал, что этот день будет таким хаотичным, я бы задал этот вопрос завтра, чтобы ответить быстрее, извините и спасибо одновременно. Я не вижу различий между до и после перезагрузки, кроме результата whereis node, поэтому я вручную проверил содержимое /home/botManager/.nvm/versions/node/v8.11.3/bin/, и файл node все еще там.   -  person Alexandre Rivara    schedule 02.08.2018


Ответы (1)


После перезагрузки ваш $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
person Daphoque    schedule 02.08.2018
comment
Сначала я изменил /etc/environment и сделал опечатку. Я просто удалю этот сервер и сделаю это снова, не то чтобы я делал много вещей. Затем я правильно добавил его в ~/.bashrc botManager на тестовом сервере, который я создал для этой темы, и все заработало отлично. Большое спасибо. - person Alexandre Rivara; 02.08.2018