Procédure
Wat is Node.js?
Node.js is een open-source, cross-platform runtime-omgeving waarmee je een website of applicatie kunt maken en hosten op een server, met behulp van de JavaScript-taal. Op onze cPanel L-, cPanel XL-, cPanel 2XL-, cPanel 3XL- en CloudCP-pakketten bieden we de Node.js-applicatiebeheerder zodat je een Node.js-applicatie kunt instellen op je cPanel webhostingpakket. Node.js versies 6 tot 24 zijn beschikbaar.
Wat is Phusion Passenger?
Om onze klanten een stabiele en robuuste omgeving voor Node.js te bieden, integreren wij uw Node.js-applicaties met de Apache webserver met behulp van de Phusion Passenger-tool.
We zetten geen reverse proxy op en Node.js-applicaties kunnen niet standalone op hun eigen webserver draaien. Als je gewend bent om je Node.js server te draaien met een commando zoals node server, npm run start of pm2 start myapp, dan kun je dit niet doen op onze cPanel hostingpakketten. Als je een framework gebruikt, controleer dan of het compatibel is met Phusion Passenger.
De uitvoering van uw Node.js applicatie zal worden beheerd door Phusion Passenger, het zal zorgen voor het uitvoeren van uw .js bestand met de juiste versie van node, en het zal de http.Server listen() functie aanroepen om de verbinding tussen uw applicatie en de Apache webserver zelf te configureren.
Hoe installeer ik een Node.js-applicatie?
Maak verbinding met je cPanel beheerinterface en klik op het pictogram"Setup Node.js App".

Op de pagina die volgt, klik je op de knop"Create Application"(Applicatie maken) om een nieuwe applicatie toe te voegen.

Vul vervolgens de velden in die nodig zijn voor je applicatie:
- Node.js-versie: de versie van Node.js die uw toepassing vereist.
- Applicatiemodus: hiermee kun je de uitvoeringsmodus van je applicatie definiëren, ontwikkelaarsmodus of productiemodus. Dit manipuleert de omgevingsvariabele NODE_ENV, waardoor fouten kunnen worden weergegeven in de ontwikkelmodus (wat handig is voor debugging-doeleinden, maar ook problematisch kan zijn voor een productietoepassing).
- Application root: de locatie van je Node.js applicatie, relatief ten opzichte van je FTP root. We raden aan om je Node.js applicatie niet in de public_html map te zetten.
- Applicatie URL: de root URL van je Node.js applicatie.
- Application startup file: de naam van het .js-bestand dat Passenger naar Node.js stuurt om je applicatie te starten.

Klik vervolgens op de knop"Aanmaken" zodra je applicatie is ingesteld.
Als je applicatie-opstartbestand nog niet bestaat, zal de tool dit bestand onmiddellijk aanmaken met voorbeeldinhoud. Dit voorbeeld zal "Het werkt! " weergeven op alle HTTP-verzoeken die ermee verbonden zijn.
Hier is de inhoud van dit voorbeeldscript:
var http = require('http'); var server = http.createServer(function(req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); var message = 'Het werkt!\n', versie = 'NodeJS ' + process.versions.node + '\n', reactie = [bericht, versie].join('\n'); res.end(reactie); }); server.listen();
Je kunt ook het package.json bestand bewerken vanuit de interface om afhankelijkheden toe te voegen en deze afhankelijkheden te installeren met de "Run NPM Install " knop:

Merk op dat je je applicatie opnieuw moet starten als de afhankelijkheden zijn gewijzigd.
Je kunt ook omgevingsvariabelen definiëren in de sectie Omgevingsvariabelen als je applicatie hierop vertrouwt om bepaalde parameters te verkrijgen.
Toegang tot je applicatie vanaf de terminal
Het gebruik van de opdrachtprompt is een integraal onderdeel van het Node.js-ecosysteem. Om de omgeving van je applicatie vanaf de terminal te benaderen, maak je er verbinding mee (vanaf de cPanel webterminal of vanaf een SSH-client) en kopieer je het getoonde commando om de omgeving van je applicatie binnen te gaan:

Deze actie zal automatisch de juiste virtuele omgeving voor je applicatie activeren, inclusief de juiste versie van Node.js en NPM, evenals de afhankelijkheden die in de omgeving zijn geïnstalleerd (in plaats van dat ze zijn geïnstalleerd in de map "node_modules " in je applicatiemap).
Een Node.js-applicatie debuggen
Om een Node.js-applicatie te debuggen, kunt u het Apache-foutenlogbestand raadplegen. Het Apache-foutenlogbestand bevat :
- STDOUT en STDERR uitvoer van de Node.js toepassing
- Passagier-gerelateerde fouten
- Apache-gerelateerde fouten
Als u de waarde PassengerLogFile handmatig hebt ingesteld in het .htaccess-bestand van uw site, worden de STDOUT- en STDERR-uitvoer en aan Passenger gerelateerde fouten naar dit bestand gestuurd in plaats van naar het Apache-logbestand.
Je kunt de waarde PassengerFriendlyErrorPages ook op on zetten in je .htaccess-bestand om fouten met betrekking tot het opstarten van je Node.js-applicatie direct in de webbrowser weer te geven.
Veel voorkomende Node.js fouten
Proces gestopt tijdens het uitvoeren van npm install
Mogelijke redenen: Je proces kan gestopt worden door de server als het langer draait dan de uitvoeringstijd en/of de hoeveelheid bronnen (CPU, RAM, enz.) die toegestaan zijn voor je hostingpakket. Je kunt de geschiedenis van processtops raadplegen met onze tool "Logs " die beschikbaar is via je cPanel-interface.
Oplossing: Je kunt het RAM-geheugen dat door npm wordt gebruikt als volgt beperken met de omgevingsvariabele NODE_OPTIONS:
NODE_OPTIONS='--max-old-space-size=2048' npm install
Dit voorbeeld toont bijvoorbeeld een limiet van 2048 MiB (2 GB).
Opgegeven map wordt al gebruikt door /home/$USER/public_html/monapp bij het maken vanuit Setup Node.js App
Mogelijke redenen:
- Er bestaat al een Node.js-, Python- of Ruby-toepassing die in de opgegeven map is gepubliceerd.
- Deroot applicatie en de gespecificeerdeURL applicatie verwijzen naar dezelfde map.
Oplossing:
- Controleer of er geen Node.js, Python of Ruby-toepassing is gepubliceerd in de opgegeven map. U kunt het .htaccess-bestand voor de map in kwestie controleren via bestandsbeheer of uw gebruikelijke FTP-client om dit snel vast te stellen.
- Zorg ervoor dat je applicatiebestanden (.js, package.json ...) die worden aangegeven door application root niet in de publicatiemap staan die wordt aangegeven door application URL. In tegenstelling tot PHP-toepassingen hoeven en moeten de bestanden voor een Node.js-applicatie zich niet in public_html bevinden.