Node.js is vanaf vandaag beschikbaar op het Plus- en Pro-pakket. Je kunt hierdoor bij Antagonist naast PHP en Python nu ook Node.js gebruiken. Zo bouw je in een handomdraai de meest moderne webapplicaties. Graag vertel ik je meer over deze populaire JavaScript runtime. Hoe ga je aan de slag met Node.js en waarom zou je dat willen?
Wat is Node.js?
Volgens de ontwikkelaars ervan is Node.js een JavaScript runtime gebouwd op Chrome’s V8 JavaScript engine. Laat ik dit wat verduidelijken. Velen van jullie kennen vast JavaScript. Dat gebruik je doorgaans om websites dynamischer te maken. Je stuurt het dan met de HTML mee, waaruit een webpagina bestaat. Je browser voert vervolgens het JavaScript uit. Gebruik je Chrome, dan gebeurt dit door de V8 JavaScript engine.
Hetgeen wat in je browser wordt uitgevoerd, noemen we de front-end van een webapplicatie. Wat op de webserver wordt uitgevoerd, noemen we de back-end – in ons geval de webhostingservers van Antagonist. Maakte je eerder een webapplicatie, dan was het lange tijd zo dat je de back-end in bijvoorbeeld PHP schreef en de front-end in JavaScript. Dit is nog steeds een veelgebruikte combinatie. Bijvoorbeeld bij WordPress, Joomla en Magento gaat dit zo.
Gebruik je deze software en werkt dat voor jou prettig, dan is dat natuurlijk prima! Schrijf je echter zelf een webapplicatie, dan moet je voor de front-end in JavaScript kunnen programmeren. Als je daar toch al JavaScript moet leren, hoe gaaf is het dan om ook je back-end daarin te kunnen schrijven? Hier komt Node.js om de hoek kijken. Dit is namelijk precies wat het is, een JavaScript runtime die je op de webserver draait!
Waarom Node.js-ondersteuning?
Node.js is momenteel erg populair en daarom geven wij onze klanten graag de mogelijkheid om ermee aan de slag te gaan. Doorgaans start je Node.js met het commando node en luistert het dan op een poort, bijvoorbeeld 3000. Om het goed te laten werken, zorg je dan dat Node.js door een procesmanager wordt gestart. Ook zet je er een reverse proxy voor, zodat de webapplicatie ook beschikbaar is via HTTPS op poort 443.
Gelukkig hebben wij het moeilijke werk al voor je gedaan en hoef je met bovenstaande geen rekening te houden. Je maakt de webapplicatie aan via de Node.js-selector in DirectAdmin, zorgt dat die in de juiste map staat en voilà, het werkt! Laten we eens kijken hoe dat met een voorbeeldapplicatie gaat.
Aan de slag met Node.js
Wil je graag met Node.js aan de slag, kies dan voor ons Plus- of Pro-pakket! Inclusief gratis SSL en automatische backups.
Express een voorbeeld…
Stel, je kiest er net als ik voor om met Express te beginnen, een bekend web framework voor Node.js. Om een nieuwe webapplicatie op te zetten, ga je dan in DirectAdmin naar Extra functies → Node.js Selector.
Als je vervolgens op ‘Create application’ klikt, dan krijg je het volgende scherm te zien. Graag licht ik de opties toe.
- Node.js version | Hier kies je de Node.js-versie die je wil gebruiken. Op dit moment bieden we alleen versie 12 aan, dus die keuze is makkelijk. In de toekomst zullen we hier ook nieuwere versies aan toevoegen. UPDATE: per augustus 2023 geldt dat we versie 16, 18 en 20 aanbieden.
- Application mode | Deze zet de waarde van de NODE_ENV-variabele. Node.js gebruikt deze variabele Node.js om te bekijken of het om een productie- of ontwikkelinstallatie gaat. Bij een ontwikkelnstallatie worden uitgebreide foutmeldingen en debug-output getoond. Handig als je aan het ontwikkelen bent, maar onwenselijk in een productieomgeving.
- Application root | Deze verplichte waarde bepaalt in welke map je project komt te staan. Dit kan bijvoorbeeld de projectnaam van je webapplicatie zijn. Om het georganiseerd te houden, kies ik er voor om dit onder mijn domein-map te doen. Zo wordt hij ook mooi meegenomen met Antagonist Backups en kan ik dus makkelijk een backup herstellen.
- Application URL | Dit is standaard de URL van je website met de ‘application root’ als pad (voorbeeld.nl/demo). Je kunt ook het project op de URL draaien zonder pad. Vul dan gewoon je domein in (voorbeeld.nl).
- Application startup file | Dit is het Node.js startup-bestand. Standaard is dit app.js, maar bij bijvoorbeeld het Express framework moet je hier voor bin/www kiezen. Laat je dit leeg, dan wordt app.js-bestand aangemaakt, zodat je een alvast een werkend begin hebt.
- Passenger log file | Vul hier eventueel een bestandsnaam in waar Node.js naar kan loggen. Mocht je zelf een webapplicatie uploaden, zorg dan dat je zelf logging instelt. Het komt dan niet in dit bestand terecht.
Express installeren
Klik op ‘Create’ als je alle instellingen naar wens hebt ingevoerd. Er wordt dan getoond hoe je via SSH de virtualenv activeert en naar je projectmap navigeert. Deze projectmap is de map die je onder ‘Application root’ hebt opgegeven.
Je zit nu in een virtuele Node.js-omgeving met de in DirectAdmin gekozen Node.js-versie. Nu gebruik ik express-generator om Express te installeren.
npx express-generator
npm install
Zo, je hebt nu een basis voor Express staan! Als je nu op ‘Restart’ klikt, kun je de website openen en wordt je hartelijk begroet met de placeholder-tekst.
Pro-tip!
Je kunt ook via SSH herstarten door het volgende commando vanuit de projectmap uit te voeren: touch tmp/restart.txt
Je hebt zojuist je eerste Node.js-webapplicatie succesvol neergezet. In feite heb je de stappen uit de Express-documentatie doorlopen, zoals die bij Antagonist van toepassing zijn. Wil je meer met Node.js en Express, dan kun je vanuit daar verder. Je kunt vanzelfsprekend ook een ander framework gebruiken of misschien wil je wel helemaal vanaf nul beginnen. De keuze is aan jou.
Veel plezier ermee!
Wij zijn zelf erg blij met deze toevoeging. Hopelijk jij ook! Wellicht wilde je altijd al eens met Node.js aan de slag, maar wist je niet hoe je daar een server voor kon opzetten. Misschien heb je al ergens een Node.js-webapplicatie draaien, maar vind je een hele server daarvoor beheren veel gedoe. Of mogelijk wil je een mengeling van Python, Node.js en PHP gebruiken binnen je website. Oké, in dat laatste geval moet je toch eens nadenken of je handig bezig bent, maar wie zijn wij om te oordelen? Wat je wens ook is, je kunt bij ons terecht!
P.S. Blijf op de hoogte en volg ons via Facebook, X, Instagram, e-mail en RSS. Heb je vragen, tips of opmerkingen? Laat het achter als reactie. Vond je het artikel nuttig? Deel het dan met anderen!
Mooie en nuttige toevoeging. Kan niet wachten om m’n apps over te zetten naar Anta
Graag gedaan en fijn om te horen, Frank!
Heel erg tof dit! Ik ga hier met toekomstige projecten zeker gebruik van maken!
Tof om te lezen dat je er gebruik van gaat maken, Jan Willem!
Dit is een geweldige evolutie! Ik wacht hier al jaren op. Hartelijke dank.
Graag gedaan, Johan. Bedankt voor je positieve feedback en veel plezier ervan!
Ik hoopte al een hele poos dat Antagonist dit zou gaan ondersteunen. Eindelijk is het dan zo ver. Ik zal mijn pakket binnenkort upgraden. Verloopt het node.js verkeer via NGINX reverse proxy?
Fijn dat je er blij mee bent, Cor! Het verkeer loopt niet via een NGINX reverse proxy. We gebruiken Apache met mod_passenger. Dat heeft onder andere als voordeel dat je een website kunt hebben die deels in PHP en deels in Node.js is geschreven. (Nog) geen ondersteuning voor websockets is hier een nadeel van.
Top, lang (echt te lang..) gewacht maar toch gekomen! Ik neem aan dat het ook in m’n reseller pakket beschikbaar komt?
Momenteel zijn daar geen plannen voor. Node.js is beschikbaar op het Plus- en Pro-pakket. Dit is vanwege containerisatie en de daar beschikbare resources een weloverwogen keuze geweest. Heb je een Resellerpakket en wil je graag met Node.js aan de slag, dan is daarvoor een Plus-pakket ernaast gebruiken een mogelijke optie.
Dit klinkt goed. Mag ik vragen of aan deze samenstelling ook (makkelijk) een mysql database is toe te voegen? En/of draait die dan op een afzonderlijke server?
Bedankt voor de reactie, Chrit! Je kunt eenvoudig via DirectAdmin een database toevoegen. Deze kun je vervolgens gebruiken binnen Node.js.
Kom je er niet uit, stuur dan gerust een e-mail naar support@antagonist.nl. We helpen je dan graag verder.
Hi, Hoe kan ik express activeren? dat stukje begreep ik niet helemaal..
Dankuwel voor uw hulp alvast
Is MongoDB ook beschikbaar?
Hi Jan, momenteel bieden we nog geen ondersteuning voor MongoDB. Voor database-opslag ondersteunen we wel MariaDB (MySQL), SQLite en Redis.
Hi,
allereerst: helemaal top dat dit nu kan!
ik heb de tutorial doorlopen. Op zich duidelijk maar na installeren van uitvoeren van express-generator, dependencies installeren en starten van de server (in ssh lijkkt alles te draaien)
krijg ik op mijn application url een 404 error. Iemand nog tips?
groeten,
Tim
Hi Tim, mooi om te zien dat je met Node.js aan de slag bent gegaan! Zonder aanvullende informatie is het lastig om met zekerheid vast te stellen, maar het volgende kun je eens controleren.
1. Start je de app via SSH op de command line? Zo ja, probeer exact uit te voeren wat in deze tutorial staat en laat het via de Node.js-selector lopen. Het moet dan goed gaan.
2. Probeer je te installeren in een submap, zoals /app? Houd er dan rekening mee dat ook dit voorvoegsel wordt meegestuurd naar je Node-app; de route in je Node-app moet dan bijvoorbeeld /app/voorbeeld zijn; alleen /voorbeeld werkt niet.
Hopelijk lukt het hiermee om het op te lossen. Stuur anders gerust een mailtje naar Support met gerichte gegevens over je opzet. We denken dan graag met je mee.
Beschrijving exact gevolgd en ook via SSH default app geprobeerd te starten, maar krijg alleen maar 404 error. Na uitvoeren npx express-generator en npm install en restarten krijg ik ook geen placeholder tekst in de /app voorvoegsel.
Hi Ramon, had je ook al de stappen geprobeerd genoemd in deze reactie? Ook hier geldt anders: stuur gerust een mailtje naar Support met daarin kort alle doorlopen stappen. We kunnen je dan gerichter verder helpen.