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.