Node.js / npm / Composer utan root

I ett äldre blogginlägg beskrev jag hur jag är värd för Node.js gratis med Heroku . Nu ska jag visa dig hur du kan installera Node.js , npm och Composer på någon annan delad värd utan root-rättigheter med några rader kod. Med den kan du installera paket, distribuera Vue.js-applikationer eller bara starta en Express.js-server. Vi arbetar alltid i användarkatalogen och använder nvm - Node Package Manager.


Det är viktigt att i förväg säkerställa att kompositör och nod inte är tillgängliga och att följande rader inte genererar någon utdata:

16c389ff1cdd9380cc5f9244775eb6c8

Först definierar vi temporära miljövariabler som vi kommer att behöva senare. För att göra detta anger vi användarens hemkatalog (vanligtvis ~/, på vissa delade värdar även /www/htdocs/xxxxxxx/) och önskad PHP-version (till exempel /usr/bin/php72 med leverantören All-Inkl , /usr/local/bin/php7-72LATEST-CLI med DomainFactory ).:

16c389ff1cdd9380cc5f9244775eb6c8

Nu ska vi se till att PHP körs i sin senaste version på konsolen. För att göra detta skapar vi en ny mapp i hemkatalogen, skapar en symbolisk länk och lägger till katalogen i början av miljövariabeln PATH.

16c389ff1cdd9380cc5f9244775eb6c8

Nu installerar vi global kompositör genom att ladda ner, kontrollera och köra installationsskriptet och sedan placera composer.phar i användarkatalogen och skapa en symlink igen:

16c389ff1cdd9380cc5f9244775eb6c8

Vi använder nvm för att installera Node.js. Detta är ett Bash-skript som faktiskt är utformat för att göra det enkelt att växla mellan Node-versioner. Här utnyttjar vi dess funktion att installera Node.js utan att root-behörigheter krävs.:

16c389ff1cdd9380cc5f9244775eb6c8

En liten korrigering i .bashrc var nödvändig för mig:

16c389ff1cdd9380cc5f9244775eb6c8

Nu kan vi installera och aktivera den nuvarande stabila versionen av Node.js:

16c389ff1cdd9380cc5f9244775eb6c8

Med hjälp av nvm kan vi också enkelt byta version.

16c389ff1cdd9380cc5f9244775eb6c8

Jag kunde utföra alla dessa steg utan problem med flera tyska leverantörer av delade webbhotell. Vissa webbhotell har problem med symboliska länkar, men detta kan också lösas med hjälp av aliasdefinitioner . Till exempel fungerar följande .bashrc-fil för DomainFactory.:

16c389ff1cdd9380cc5f9244775eb6c8

Det finns också problem med att komma åt `/proc/stat` i virtuella/delade miljöer, vilket är anledningen till att till exempel Node-funktionen `os.cpus()` returnerar `undefined` istället för rätt antal kärnor. Detta leder till felmeddelanden som "Kan inte läsa egenskapen 'längd' för undefined" när man installerar npm-paket. Jag kunde lösa problemet genom att använda en nyligen utkommen Node.js-version (t.ex. 11.15.0) som åtgärdar problemet.

Tillbaka