Hosting til Node.js er stadig ikke særlig almindelig, især i tysktalende lande. Det amerikanske skyfirma Heroku tilbyder en løsning her - og endda gratis . Du bemærker altid paradigmet "Byg apps ... ikke infrastruktur" og har stadig næppe nogen begrænsninger. Som et eksempel implementerer vi et lille cron-job, der er baseret på PhantomJS , som hver dag skrotter et websted og sender sidetitlen via e-mail.
For at gøre dette tilmelder vi os først gratis på https://signup.heroku.com/:
Efter den obligatoriske e-mail-bekræftelse tildeler vi en sikker adgangskode:
For senere at kunne bruge gratis tilføjelser fra markedet skal vi først bekræfte vores konto under https://heroku.com/verify ved at indtaste et kreditkort (rolig, alt forbliver gratis):
Resten finder nu udelukkende sted på kommandolinjen. Til dette har vi brug for Node.js / npm lokalt, Git og Heroku CLI .
Vi logger endelig ind på Heroku lokalt (en gang) på kommandolinjen:
Først opretter vi en ny app baseret på en passende buildpack . I vores eksempel bruger vi den officielle Node.js buildpack heroku-buildpack-nodejs.git:
1a01abaf4b9308c5714622396ccc4708
Nu opretter vi en pakke.json til at installere de pakker PhantomJS , CasperJS , SpookyJS og Nodemailer , der kræves til vores projekt:
1a01abaf4b9308c5714622396ccc4708
Den aktuelle logik kan findes i script.js:
1a01abaf4b9308c5714622396ccc4708
Vi tester først alt lokalt:
1a01abaf4b9308c5714622396ccc4708
Scriptet udtrækker en titel fra et websted og sender en e-mail:
Vi skubber nu alt på Heroku, hvilket også udløser byggeprocessen:
1a01abaf4b9308c5714622396ccc4708
Hvis du vil skubbe kodeændringer til Heroku senere, skal du blot skubbe igen. På den ene side kan vi nu kontrollere via SSH, om alt kører på serveren:
1a01abaf4b9308c5714622396ccc4708
Også her sendes e-mailen korrekt. Nu skal vi bare automatisere processen:
1a01abaf4b9308c5714622396ccc4708
Vi tilføjer et nyt scriptopkald med "Tilføj nyt job":
Som test vælger vi hvert 10. minut som frekvens og gemmer den:
Cronjob vil nu gøre sit job automatisk i fremtiden.