Node.js / npm / Composer без рута

В более старом сообщении блога я описал, как бесплатно разместить Node.js с помощью Heroku . Теперь я покажу вам, как вы можете установить Node.js , npm и Composer на любой другой общий хост без прав root с помощью нескольких строк кода. С его помощью вы можете устанавливать пакеты, развертывать приложения Vue.js или просто запускать сервер Express.js. Мы всегда работаем в каталоге пользователя и используем nvm - диспетчер пакетов узлов.


Важно заранее убедиться, что композитор и узел отсутствуют и что следующие строки не выдают никакого вывода.:

16c389ff1cdd9380cc5f9244775eb6c8

Сначала определим временные переменные окружения, которые понадобятся позже. Для этого укажем домашний каталог пользователя (обычно ~/, на некоторых хостингах также /www/htdocs/xxxxxxx/) и желаемую версию PHP (например, /usr/bin/php72 с провайдером All-Inkl , /usr/local/bin/php7-72LATEST-CLI с DomainFactory ).:

16c389ff1cdd9380cc5f9244775eb6c8

Теперь убедимся, что в консоли запущена последняя версия PHP. Для этого создадим новую папку в домашнем каталоге, создадим символическую ссылку и добавим эту папку в начало переменной среды PATH.

16c389ff1cdd9380cc5f9244775eb6c8

Теперь мы устанавливаем global composer, скачав, проверив и выполнив установочный скрипт, затем поместив composer.phar в каталог пользователя и снова создав символическую ссылку.:

16c389ff1cdd9380cc5f9244775eb6c8

Для установки Node.js мы используем nvm. Это скрипт на Bash, разработанный специально для упрощения переключения между версиями Node.js. Здесь мы воспользуемся его особенностью: он устанавливает Node.js без необходимости получения прав root.:

16c389ff1cdd9380cc5f9244775eb6c8

Мне потребовалась небольшая поправка в .bashrc:

16c389ff1cdd9380cc5f9244775eb6c8

Теперь мы можем установить и активировать текущую стабильную версию Node.js:

16c389ff1cdd9380cc5f9244775eb6c8

С помощью nvm мы также можем легко переключать версии.

16c389ff1cdd9380cc5f9244775eb6c8

Мне удалось выполнить все эти шаги без каких-либо проблем с несколькими немецкими хостинг-провайдерами. У некоторых хостинг-провайдеров возникают проблемы с символическими ссылками, но это также можно решить с помощью определений псевдонимов . Например, следующий файл .bashrc работает для DomainFactory.:

16c389ff1cdd9380cc5f9244775eb6c8

Также возникают проблемы, например, при доступе к /proc/stat в виртуальных/разделяемых средах, поэтому, например, функция узла os.cpus() возвращает неопределенное значение вместо правильного номера ядра. Это приводит к появлению сообщений об ошибках, таких как «Невозможно прочитать свойство «длина» неопределенного значения» при установке пакетов npm. Мне удалось решить эту проблему, используя последнюю версию Node.js (например, 11.15.0), в которой эта проблема решена .

Назад