node hat ec2 deploy aws app node.js bash amazon-ec2 sudo

node.js - ec2 - install node js linux red hat



En EC2: no se ha encontrado el comando sudo node, pero el nodo sin sudo está bien (10)

¿Por qué no usar la ruta absoluta al nodo? Si planea usar un script upstart, necesitará una ruta absoluta de todos modos.

sudo /usr/local/bin/node server.js

Acabo de instalar nodejs en una nueva instancia de micro EC2.

Lo instalé normalmente, ./configure -> make -> sudo make install.

Problema: cuando ejecuto "node" en ec2-user, funciona perfectamente. Cuando ejecuto "sudo node", falla.

Descubrí que el nodo está en:

[ec2-user@XXXX ~]$ whereis node node: /usr/local/bin/node /usr/local/lib/node

y la ruta actual es

[ec2-user@XXXX ~]$ echo $PATH /usr/local/bin:/bin:/usr/bin:/opt/aws/bin:/home/ec2-user/bin

pero, el camino de sudo es

[root@ip-10-112-222-32 ~]# echo $PATH /usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin

luego traté de editar la ruta de acceso raíz para incluir las rutas al nodo, por lo que "nodo" se ejecuta cuando estoy conectado como root, pero todavía no funciona cuando inicio sesión como usuario ec2 y ejecuto "nodo sudo" .

Necesito esto para instalar npm properfly. ¿Alguna idea sobre cómo incluir la ruta del nodo mientras se ejecuta "sudo node"?


Aquí hay un enfoque que no usa enlaces simbólicos, o requiere root:

$ git clone https://github.com/joyent/node.git $ cd node $ mkdir ~/opt $ export PREFIX=~/opt; ./configure $ make $ make install $ echo ''export PATH=~/opt/bin:${PATH}'' >> ~/.bashrc

Entonces lo hice:

$ git clone https://github.com/isaacs/npm.git $ cd npm $ make install

Aquí se tratan los beneficios de no ejecutar el nodo como raíz:

http://increaseyourgeek.wordpress.com/2010/08/18/install-node-js-without-using-sudo/

Está en línea con:

https://github.com/joyent/node/wiki/Installation


En mi caso, Node se instaló sin el prefijo sudo . Así que el nodo no estaba disponible para el superusuario por lo que no está funcionando el sudo node server


No sé si este es el camino correcto, pero esto es lo que hice ...

sudo su export PATH=$PATH:/home/ec2-user/local/node/bin curl http://npmjs.org/install.sh | sh chown -R ec2-user /home/ec2-user/local/node exit

Este npm instalado, y ahora puedo instalar cualquier paquete que desee.


Para mí, funcionó para simplemente cambiar la propiedad de la carpeta de nodos de root a ec2-user (iniciada como ec2-user).

(Nota: Creé mi carpeta de nodos en / var / lib /)

sudo chown -R ec2-user /var/lib/node/

Entonces

npm install mongojs

debería funcionar bien (siempre que haya instalado npm ok por supuesto!)


Puede pasar la ruta completa al ejecutable del node desde el elemento primario (shell no sudo) utilizando which comando.

sudo `which node`


Sí, es un poco molesto pero puedes arreglarlo con algunos enlaces:

sudo ln -s /usr/local/bin/node /usr/bin/node sudo ln -s /usr/local/lib/node /usr/lib/node sudo ln -s /usr/local/bin/npm /usr/bin/npm sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf

Puede haber más, pero eso es todo lo que he encontrado hasta ahora. La falta de nodo-waf hará que algunas instalaciones npm fallen con un mensaje de error bastante críptico.


intente lo siguiente:

export PATH=$PATH:/usr/local/bin sudo node --version


sucede porque el ejecutable del nodo no se encuentra en / usr / bin. Entonces sigue los pasos:

  1. encontrar nodo:

whereis node

en mi caso: node: /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node

  1. hacer un enlace simbólico para el nodo:

    sudo ln -s /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node /usr/bin/node

¡Está hecho!


secure_path /usr/local/bin a secure_path en /etc/sudoers

$ sudo visudo

Luego cambia esta línea:

Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin

A:

Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin