In een oudere blogpost heb ik beschreven hoe je Node.js gratis kunt hosten met Heroku . Nu zal ik je een manier laten zien hoe je Node.js , npm en Composer op elke andere gedeelde host kunt installeren zonder rootrechten met een paar regels code. Hiermee kunt u pakketten installeren, Vue.js-applicaties implementeren of gewoon een Express.js-server starten. We werken altijd in de gebruikersdirectory en gebruiken nvm - de Node Package Manager.
Het is belangrijk om er van tevoren voor te zorgen dat composer en node niet beschikbaar zijn en dat de volgende regels geen output genereren:
16c389ff1cdd9380cc5f9244775eb6c8
Eerst definiëren we tijdelijke omgevingsvariabelen die we later nodig hebben. Hiervoor specificeren we de thuismap van de gebruiker (meestal ~/, op sommige shared hosting-servers ook /www/htdocs/xxxxxxx/) en de gewenste PHP-versie (bijvoorbeeld /usr/bin/php72 met de provider All-Inkl , /usr/local/bin/php7-72LATEST-CLI met DomainFactory ).:
16c389ff1cdd9380cc5f9244775eb6c8
Nu zorgen we ervoor dat PHP in de console de nieuwste versie gebruikt. Hiervoor maken we een nieuwe map aan in de thuismap, creëren we een symbolische link en voegen we de map toe aan het begin van de PATH-omgevingsvariabele.
16c389ff1cdd9380cc5f9244775eb6c8
Nu installeren we global composer door het installatiescript te downloaden, te controleren en uit te voeren, en vervolgens composer.phar in de gebruikersdirectory te plaatsen en opnieuw een symlink te maken:
16c389ff1cdd9380cc5f9244775eb6c8
We gebruiken nvm om Node.js te installeren. Dit is een Bash-script dat speciaal is ontworpen om het wisselen tussen Node-versies te vereenvoudigen. Hier maken we gebruik van de mogelijkheid om Node.js te installeren zonder rootrechten.:
16c389ff1cdd9380cc5f9244775eb6c8
Een kleine correctie in de .bashrc was voor mij nodig:
16c389ff1cdd9380cc5f9244775eb6c8
Nu kunnen we de huidige stabiele versie van Node.js installeren en activeren:
16c389ff1cdd9380cc5f9244775eb6c8
Met behulp van nvm kunnen we ook gemakkelijk van versie wisselen.
16c389ff1cdd9380cc5f9244775eb6c8
Ik heb al deze stappen zonder problemen kunnen uitvoeren bij verschillende Duitse shared hostingproviders. Sommige hosts hebben problemen met symbolische links, maar dit kan ook worden opgelost met behulp van aliasdefinities . Het volgende .bashrc-bestand werkt bijvoorbeeld voor DomainFactory.:
16c389ff1cdd9380cc5f9244775eb6c8
Er zijn ook problemen met de toegang tot `/proc/stat` in virtuele/gedeelde omgevingen. Dit is bijvoorbeeld de reden waarom de Node-functie `os.cpus()` `undefined` retourneert in plaats van het juiste aantal cores. Dit leidt tot foutmeldingen zoals "Cannot read property 'length' of undefined" bij het installeren van npm-pakketten. Ik heb het probleem kunnen oplossen door een recente Node.js-versie te gebruiken (bijvoorbeeld 11.15.0) die dit probleem verhelpt .