Quiero tener un node y npm disponibles para cualquier usuario que esté en el sistema.
En nuestro equipo, cuando alguien actualiza el código de git, ejecuta: sudo -u www-data git pull
Entonces, sea cual sea el proyecto, siempre pasamos por www-data user.
Ahora tenemos un nuevo proyecto Node y necesitamos hacer lo mismo. No hay forma de que en nuestro servidor de producción confíemos en que un usuario se encargue de todo lo relacionado con el nodo. ¿Qué pasa si se va mañana?
Por lo tanto, no estamos usando NVM, sino instalando Node como root como se describe aquí
Está todo bien, y todos los usuarios ven el ejecutable de node y npm . Los problemas comienzan cuando realmente tratamos de usarlos.
Lo que quieres hacer es:
cd /var/www/node_project sudo -u www-data git pull sudo -u www-data npm install Esto falla en el último comando, porque npm está intentando escribir un archivo de lock en mi directorio de inicio. Entonces: /home/user/.npm en lugar de algún lugar a nivel mundial o /var/www/.npm , que sería el directorio de inicio para el usuario de www-data.
Similar a eso, después de instalar
sudo npm install -g typings
Y luego, al ejecutar sudo -u www-data typings install , obtiene un error, porque está tratando de escribir /home/user/.config/configstore/insight-typings.json
¿Podría alguien explicar cómo instalar correctamente el nodo en el servidor? Si ejecuto sudo -u www-data ¿cómo es que npm ins sigue yendo a mi carpeta de inicio?
Puede especificar el directorio para instalaciones globales de algún usuario:
establecer prefix = ~/.where_to_install en ~/.npmrc
luego agregue la ubicación adecuada de la variable PATH para los ejecutables (como ~/.npm/bin )
Por cierto, ¿cuál es el directorio de inicio de www-data en su caso?