Node.js / npm / Composer bez rootowania

W starszym poście na blogu opisałem, jak bezpłatnie hostować Node.js przy użyciu Heroku . Teraz pokażę ci sposób, w jaki możesz zainstalować Node.js , npm i Composer na dowolnym innym udostępnionym hoście bez praw roota za pomocą kilku linijek kodu. Dzięki niemu możesz instalować pakiety, wdrażać aplikacje Vue.js lub po prostu uruchamiać serwer Express.js. Zawsze pracujemy w katalogu użytkownika i używamy nvm - Node Package Manager.


Ważne jest, aby wcześniej upewnić się, że kompozytor i węzeł nie są dostępne, a kolejne wiersze nie generują żadnych wyników:

16c389ff1cdd9380cc5f9244775eb6c8

Najpierw definiujemy tymczasowe zmienne środowiskowe, które będą nam potrzebne później. W tym celu określamy katalog domowy użytkownika (zwykle ~/, na niektórych hostach współdzielonych również /www/htdocs/xxxxxxx/) oraz żądaną wersję PHP (na przykład /usr/bin/php72 z dostawcą All-Inkl , /usr/local/bin/php7-72LATEST-CLI z DomainFactory ).:

16c389ff1cdd9380cc5f9244775eb6c8

Teraz upewnimy się, że PHP działa w najnowszej wersji na konsoli. W tym celu utworzymy nowy folder w katalogu domowym, utworzymy dowiązanie symboliczne i dodamy katalog na początku zmiennej środowiskowej PATH.

16c389ff1cdd9380cc5f9244775eb6c8

Teraz instalujemy globalnego kompozytora, pobierając, sprawdzając i wykonując skrypt instalacyjny, a następnie umieszczając plik composer.phar w katalogu użytkownika i ponownie tworząc łącze symboliczne:

16c389ff1cdd9380cc5f9244775eb6c8

Używamy nvm do instalacji Node.js. To skrypt powłoki Bash, który został zaprojektowany, aby ułatwić przełączanie się między wersjami Node. W tym przypadku wykorzystujemy jego funkcję, która pozwala zainstalować Node.js bez konieczności posiadania uprawnień roota.:

16c389ff1cdd9380cc5f9244775eb6c8

Niezbędna była mi mała poprawka w .bashrc:

16c389ff1cdd9380cc5f9244775eb6c8

Teraz możemy zainstalować i aktywować aktualną stabilną wersję Node.js.:

16c389ff1cdd9380cc5f9244775eb6c8

Z pomocą nvm możemy również łatwo zmieniać wersje.

16c389ff1cdd9380cc5f9244775eb6c8

Udało mi się wykonać wszystkie te kroki bez żadnych problemów u kilku niemieckich dostawców hostingu współdzielonego. Niektórzy dostawcy mają problemy z dowiązaniami symbolicznymi, ale można to również rozwiązać za pomocą definicji aliasów . Na przykład poniższy plik .bashrc działa w przypadku DomainFactory.:

16c389ff1cdd9380cc5f9244775eb6c8

Występują również problemy z dostępem do `/proc/stat` w środowiskach wirtualnych/współdzielonych, dlatego na przykład funkcja Node `os.cpus()` zwraca `undefined` zamiast prawidłowej liczby rdzeni. Prowadzi to do komunikatów o błędach, takich jak „Nie można odczytać właściwości `length' z undefined” podczas instalacji pakietów npm. Udało mi się rozwiązać ten problem, używając nowszej wersji Node.js (np. 11.15.0), która rozwiązuje ten problem.

Plecy