Udrulning

16-05-2023

Et vigtigt aspekt af hjemmeside udvikling, er selvfølgelig at udrulle hjemmesiden, for hvad var al det arbejde ellers til for? Jeg har allerede skrevet om processen bag udviklingen af en React/Next.js hjemmeside, så nu er det næste step at få den offentliggjort. Første trin er enten at finde en webhost som tillader Node.js, eller selv at hoste hjemmesiden på en computer man har stående. Dette opslag vil handle om det første, men den anden mulighed er også valid.

Jeg havde i første omgang, tænkt mig at bruge simply.com, som er den webhost jeg allerede bruger til portfolioen. Jeg havde købt en PHP-suite (Da det skulle have været den, som tillader Node.js), men jeg fandt senere ud af, at man ikke må lave en Node.js server hos simply.com. Dette er essentielt, hvis man vil udrulle en Next.js hjemmeside, og er nærmest også essentiel for enhver Node.js hjemmeside. Jeg ved ikke hvad deres tanke var med det, men det er åbenbart sådan de vil køre deres service.

Jeg var derfor nødt til at finde en anden webhost, så jeg læste nogle artikler, hvor de skrev om pros/cons ved forskellige webhosts, og jeg endte med at bruge A2 Hosting.


A2 hosting er lidt mere "low-level" end simply.com, men til gengæld lukker de op for langt flere muligheder ift. hvordan ens server skal udforme sig. Jeg endte med at tage deres "Drive" pakke, da den tillader "uendelig" antal hjemmeside, som kunne være praktisk til senere projekter.


Dernæst var det meget vigtigt, at tjekke om de rent faktisk supporter Node.js, og de skriver selv at version 12, 14 og 16 kan bruges (Der er faktisk også ældre versioner, men de er rimelig deprecated). Jeg havde fra starten af brugt v. 18 til Den Frie Bibel, men havde et håb om at kunne installere en nyere version af Node eller revert til en ældre version i mit projekt.


For at uploade hjemmesiden, skal man have afgang til filerne på serveren. Man kunne i princippet nøjes med SSH adgang, som kan findes i "Account Details" menu'en, men jeg ville gerne lege med deres funktioner, så i stedet gik jeg ind i cpanel. Herinde er der en masse forskellige muligheder, men først og fremmest gik jeg ind i "File Manager".


Jeg ville bare gerne have en simpel Node.js server op og køre, så jeg lavede bare en fil der hed server.js, og indtastede noget simpelt Node.js kode, som starter en webserver. Her er det vigtigt, at man sætter porten til noget mellem 30000 og 60000. Jeg ved ikke hvorfor, men det er de porte som A2 anbefaler til Node.js hosting (højst sandsynlig, så der ikke kommer konflikt med andre services).

Selve koden har jeg fundet fra Node.js' start tutorial, men det er et godt udgangspunkt som man kan bygge ud fra. Næste step er at lave en '.htaccess' fil i 'public_html' mappen. Hvis man ikke har set den før, så er det en fil som serveren først og fremmest går igennem, når der skal behandles en request. Inde i denne fil, kan man så f.eks. redirect til andre domæner eller tvinge HTTPS. I vores tilfælde, skal vi pege på den server som vi lige har "lavet", så vi indtaster det rigtige port nr. samt hostname (hvis man bruger et andet end default).


Næste trin er så rent faktisk at starte serveren, og for at gøre det, skal vi tilgå terminalen til serveren. Her kan man igen også bare SSH ind i serveren (Hvilket bliver meget relevant senere), men til dette simple eksempel, kan man bare bruge cpanel's indbyggede terminal.


Først og fremmest kan man køre "node --version" kommandoen, for at tjekke om Node.js er installeret. For mit vedkommende, sagde den, at den bruger Node. 10, hvilket er en relativ gammel version. Det bliver et problem senere, men til den simple server, kan vi sagtens køre den med følgende kommando:

node server &

Man kunne i princippet skrive "node server.js", altså med filtypen, men det er ikke nødvendig, da Node.js bare antager at det er en .js, hvis vi ikke angiver det. Derudover er "&" symbolet til for at serveren bliver ved med at køre. Hvis vi ikke bruger "&" symbolet, bliver serveren bare lukket når vi lukker vores terminal session, da kommandoen ellers er "forbundet" til vores session. Med "&" bliver serveren altså ved med at køre.


For at se om hjemmesiden kører, kan vi så tilgå det domæne vi har fået hos A2 Hosting. I mit tilfælde, har jeg valgt at bruge et midlertidigt domæne, da jeg regner med at flytte enten mit mjrj.dk domæne derover, eller senere hvis denfriebibel.dk vil bruge det. Hvis du lige har købt servicen, er det usandsynligt at det primære domæne (f.eks. http://www.mjrj.a2hosted.com) er oppe og køre i løbet af den første dag. Derfor kan man bruge domænet lige under sit primære domæne i starten, når man bare lige skal teste sin server.


Når man så kopierer linket over i sin browser, og hvis man har gjort det rigtigt, vil man så kunne se "Hello World" i sin browser. Dette er selvfølgelig ikke en meningsfuld hjemmeside, men med dette eksempel har vi demonstreret, at man kan sende tekst fra serveren til brugeren. Næste step ville så være at sende noget HTML, og samtidig dynamisk tage imod requests (f.eks. sende de rigtige filer når brugeren går ind på en bestemt del af domænet). Her ville express.js være en god start, og der kan man bare bruge npm kommandoer i terminalen, hvis man vil installere nogle packages (Husk at lave en package.json fil)