I den här artikeln kommer jag att täcka värd för en Node.js-app på Namecheapés delade värdservrar med cPanel. Jag kommer inte att diskutera inställningen av databasservern eller React-gränssnittet för din webbapp i den här artikeln. Istället vill jag fokusera på de utmaningar du kan möta med att köra en Node-app i en delad värdmiljö. == Dröj inte, värd idag! == Innan du kommer för långt på vägen för att utveckla din webbapp är det en bra idé att lägga en stabil version online. Detta kan vara i din produktionsmiljö, eller i en iscensättningsmiljö som liknar din produktionsmiljö. De flesta kommer att vänta tills deras app nästan är färdig innan de är värd för den online - och det här är vad jag gjorde när jag utvecklade min första React and Node-webbapp. Men vid den tidpunkten var det många utmaningar med att få min Node API-server att köra och jag var också tvungen att göra många ändringar i min React-app. Det är därför jag rekommenderar att du lägger ut en version online tidigt så att du kan göra justeringar innan du skriver för mycket kod. == Använda en delad värdtjänst == Namecheaps delade värdservrar använder cPanel som kontrollpanelens gränssnitt för att hantera Apache-servern. Dessa instruktioner bör också hjälpa alla som använder en delad värdtjänst med cPanel som A2 Hosting och GoDaddy. Jag har också min Namecheap-server konfigurerad med ett SSL-certifikat och cPanel omdirigerar som standard all HTTP-trafik till HTTPS. Så all trafik till min server är säker. Du hittar många guider som instruerar dig om hur du är värd för en Node-app på en VPS (Virtual Private Server) värdtjänst som DigitalOcean. Om du börjar om från början kommer hosting med en tjänst som den att ge dig mer kontroll. Men det är vanligtvis dyrare än delad hosting. Och i mitt fall hade jag redan betalat för en Namecheap delad värdtjänst. Några fördelar med att använda cPanel och delad hosting: - Hanteras med en enkel webbhanteringskonsol - Lätt att konfigurera - Billigt, speciellt om du redan är värd för en webbplats/domän - Kan enkelt skapa dynamiska webbplatser med andra tekniker som PHP, etc, om du utforskar olika teknologier Några nackdelar: - Mindre âÃÂÃÂkontrollâÃÂàeftersom du inte har tillgång till det underliggande operativsystemet - Inte skalbar == Vart tar allt vägen? == Först måste du skapa en mapp för alla källfiler för dina Node-appar. Jag skapade en mapp som heter âÃÂÃÂnodejsâÃÂài katalogen /home/användarnamn och i denna mapp skapar jag sedan en undermapp för varje app. Ladda nu upp alla dina källfiler till den här undermappen. Se till att du inkluderar filen package.json också. Du laddar inte upp mappen âÃÂÃÂnode_modulesâÃÂàeftersom den kommer att skapas med pakethanteraren senare. Kom ihåg att vi bara är värd för Node API-servern i vårt exempel på webbappsarkitektur. Vi kommer inte att vara värd för React-appen med Node (mer om detta ämne i nästa artikel). httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_1.jpg Mapplayout visar nodkällfilerna under /home/username/nodejs/mynodeapi-mappen och det finns en .htaccess-filen i mappen /home/username/public_html/myapi == Problemet âÃÂàNode-appen kan inte komma åt portarna == Den största utmaningen var att få igång min Node API-app. Problemet var att exempelkoden i Namecheaps supportdokumentation bara inte fungerade! Den försöker skapa en http-server för att lyssna på port 80 och en http **s**-server på port 443. Jag fick dock alltid ett EACCESS-fel som säger att jag inte hade behörighet att använda dessa portar. == Lösningen - Node behöver inte komma åt hamnen! == Så småningom hittade jag lösningen genom att läsa en kommentar från användaren SibProgrammer i en tråd om Plesk, en annan värdkontrollpanel. cPanel använder Phusion Passenger-applikationsserver för att vara värd för Node-appar, liksom Plesk. Sammanfattningsvis: När du skickar en förfrågan från din webbläsare går den till Apache-servern, sedan till Phusion Passenger och sedan till din Node-app. Din Node-app behöver inte äga porten eftersom den hanteras längre uppströms av Apache- och Phusion Passenger-applikationsservrarna. Detta förenklar koden för att skapa http-servern i din www.js (eller app.js) fil: * www.js * Testar skapandet av http-servern för Namecheap. * Dave */ const http = require('http http.createServer(function(request, response) { response.writeHead(200, {'Content-Type': 'text/html response.endh1>Hello Worldh1 listen(process.env) .PORT); console.log('Appen körs Några saker att notera: - Lyssna på process.env.PORT (istället för att manuellt ställa in 80 eller 443). När jag testade märkte jag att process.env.PORT är odefinierat! Men intressant nog spelar det ingen roll i det här fallet. - Använd en http-server även om du har SSL inställt. cPanel har konfigurerat Apache för att omdirigera all HTTP-trafik till HTTPS och följaktligen att svara på alla förfrågningar av HTTPS. Du behöver inte manuellt konfigurera din Node-app för att konfigurera en https-server och läsa in dina SSL-certifikat. == Sista stegen för Node API-server == Nu borde det vara den relativt enkla processen att följa instruktionerna för att ställa in din nodapp. httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_2.jpg Skärmdump av cPanelés konfigurationssida för Node.js - Välj lämplig version av Node.js och applikationsläge (produktion rekommenderas). - Den âÃÂàApplication rootâÃÂàkommer att vara mappen där du laddade upp dina källfiler tidigare (âÃÂànodejs/mynodeapiâÃÂài exemplet ovan). - âÃÂÃÂApplication URLâÃÂàkommer att vara webbadressen som används för att komma åt ditt API (âÃÂÃÂmyapià ¢ÃÂài exemplet). Namnet du anger i den här rutan kommer att användas för att skapa en undermapp i din /home/username/public_html-mapp. Det behöver inte vara samma namn som mappen "Application root"(men kommer ofta att vara). - Startfilen för applikationen är www.js eller app.js beroende på hur du skapade din Node-app. - Det är upp till dig hur du vill konfigurera Passagerarloggfilen. - När du har skapat appen kommer du att se knappen för att köra NPM Installà ¢ÃÂÃÂ. Kör detta och det skapar mappen âÃÂÃÂnode_modulesâÃÂàmed alla beroende moduler som din app behöver. När du har konfigurerat din Node-app och startat den, kommer den att skapa undermappen i din /home/public_html-mapp. Du måste nu gå till den mappen och redigera .htaccess-filen och lägga till på följande rad: RewriteEngine av Detta förhindrar Apache-servern från att skriva om (eller omdirigera) någon av de förfrågningar som måste gå till din API-server intakt. Och det är det! Nu bör din Node API-app vara igång och svara på dina API-anrop. == Så vad händer härnäst? == Nu när vi har ställt in Node API-servern kan vi ändra vårt React-gränssnitt i vår utvecklingsmiljö för att peka på denna API-server. Eller så kan vi använda Postman för att testa våra API-anrop. I nästa artikel ska vi titta på värd för React-appen på Namecheap och cPanel.