Node.js / npm / Composer без кореня

У попередньому дописі в блозі я описав, як безкоштовно розмістити Node.js за допомогою Heroku . Зараз я покажу вам спосіб, як ви можете встановити Node.js , npm та Composer на будь-який інший спільний хост без прав користувача з декількома рядками коду. За допомогою нього ви можете встановлювати пакети, розгортати програми Vue.js або просто запускати сервер Express.js. Ми завжди працюємо в каталозі користувачів і використовуємо nvm - менеджер пакетів вузлів.


Важливо заздалегідь переконатися, що composer і node відсутні, і що наступні рядки не дають жодного результату:

16c389ff1cdd9380cc5f9244775eb6c8

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

16c389ff1cdd9380cc5f9244775eb6c8

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

16c389ff1cdd9380cc5f9244775eb6c8

Тепер ми встановлюємо глобальний композитор, завантажуючи, перевіряючи та виконуючи сценарій інсталяції, а також розміщуючи composer.phar у каталозі користувача та знову створюючи символічне посилання:

16c389ff1cdd9380cc5f9244775eb6c8

Ми використовуємо nvm для встановлення Node.js. Це Bash-скрипт, який насправді розроблений для спрощення перемикання між версіями Node. Тут ми використовуємо його особливість, що він встановлює Node.js без необхідності root-прав.:

16c389ff1cdd9380cc5f9244775eb6c8

Мені було потрібно невелике виправлення в .bashrc:

16c389ff1cdd9380cc5f9244775eb6c8

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

16c389ff1cdd9380cc5f9244775eb6c8

За допомогою nvm ми також можемо легко переключати версії.

16c389ff1cdd9380cc5f9244775eb6c8

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

16c389ff1cdd9380cc5f9244775eb6c8

Існують також проблеми, наприклад, під час доступу до /proc/stat у віртуальних / спільних середовищах, тому, наприклад, функція вузла os.cpus() повертає undefined замість правильного номера ядра. Це призводить до повідомлень про помилку на зразок «Неможливо прочитати властивість 'length' of undefined» під час встановлення пакетів npm. Мені вдалося вирішити проблему за допомогою останньої версії Node.js (наприклад, 11.15.0), яка вирішила проблему.

Назад