Node.js / npm / Compozitor fără rădăcină

Într-o postare de blog mai veche am descris cum să găzduiești Node.js gratuit folosind Heroku . Acum vă voi arăta o modalitate de a instala Node.js , npm și Composer pe orice altă gazdă partajată fără drepturi de root cu câteva linii de cod. Cu acesta puteți instala pachete, implementa aplicații Vue.js sau pur și simplu porni un server Express.js. Lucrăm întotdeauna în directorul utilizatorului și folosim nvm - Node Package Manager.


Este important să vă asigurați în prealabil că compozitorul și nodul nu sunt disponibile și că următoarele linii nu generează nicio ieșire:

16c389ff1cdd9380cc5f9244775eb6c8

Mai întâi, definim variabile de mediu temporare de care vom avea nevoie mai târziu. Pentru a face acest lucru, specificăm directorul principal al utilizatorului (de obicei ~/, pe unele gazde partajate și /www/htdocs/xxxxxxx/) și versiunea PHP dorită (de exemplu, /usr/bin/php72 cu furnizorul All-Inkl , /usr/local/bin/php7-72LATEST-CLI cu DomainFactory ).:

16c389ff1cdd9380cc5f9244775eb6c8

Acum ne vom asigura că PHP rulează în cea mai recentă versiune în consolă. Pentru a face acest lucru, vom crea un nou folder în directorul principal, vom crea o legătură simbolică și vom adăuga directorul la începutul variabilei de mediu PATH.

16c389ff1cdd9380cc5f9244775eb6c8

Acum instalăm Global Composer descărcând, verificând și executând scriptul de instalare, apoi plasând și composer.phar în directorul utilizatorului și creând din nou un link simbolic:

16c389ff1cdd9380cc5f9244775eb6c8

Folosim nvm pentru a instala Node.js. Acesta este un script Bash conceput pentru a facilita trecerea între versiunile de Node. Aici, profităm de caracteristica sa de a instala Node.js fără a necesita privilegii de root.:

16c389ff1cdd9380cc5f9244775eb6c8

Pentru mine a fost necesară o mică corecție în .bashrc:

16c389ff1cdd9380cc5f9244775eb6c8

Acum putem instala și activa versiunea stabilă curentă a Node.js:

16c389ff1cdd9380cc5f9244775eb6c8

Cu ajutorul nvm putem schimba cu ușurință versiunea.

16c389ff1cdd9380cc5f9244775eb6c8

Am reușit să efectuez toți acești pași fără probleme cu mai mulți furnizori germani de găzduire partajată. Unele gazde au probleme cu linkurile simbolice, dar acest lucru poate fi rezolvat și folosind definiții de aliasuri . De exemplu, următorul fișier .bashrc funcționează pentru DomainFactory.:

16c389ff1cdd9380cc5f9244775eb6c8

Există, de asemenea, probleme la accesarea `/proc/stat` în medii virtuale/partajate, motiv pentru care, de exemplu, funcția Node `os.cpus()` returnează `undefined` în loc de numărul corect de nuclee. Acest lucru duce la mesaje de eroare precum „Cannot read property 'length' of undefined” la instalarea pachetelor npm. Am reușit să rezolv problema utilizând o versiune recentă de Node.js (de exemplu, 11.15.0) care rezolvă problema.

Înapoi