Sa artikulong ito sasakupin ko ang pagho-host ng Node.js app sa Namecheap na mga shared hosting server gamit ang cPanel. Hindi ko tatalakayin ang pag-set up ng database server o ang front end ng React para sa iyong web app sa artikulong ito. Sa halip, gusto kong tumuon sa mga hamon na maaari mong harapin sa pagpapatakbo ng Node app sa isang shared hosting environment. == Huwag mag-antala, mag-host ngayon! == Bago ka masyadong lumayo sa landas ng pagbuo ng iyong web app, magandang ideya na maglagay ng stable na bersyon online. Ito ay maaaring nasa iyong production environment, o sa isang staging environment na katulad ng iyong production environment. Karamihan sa mga tao ay maghihintay hanggang sa halos makumpleto ang kanilang app bago ito i-host online âÃÂàat ito ang ginawa ko noong binuo ang aking unang React at Node web app. Gayunpaman, sa puntong iyon ay maraming hamon sa pagpapatakbo ng aking Node API server at kailangan ko ring gumawa ng maraming pagbabago sa aking React app. Iyon ang dahilan kung bakit inirerekumenda ko ang paglalagay ng isang bersyon sa online nang maaga upang makagawa ka ng mga pagsasaayos bago magsulat ng masyadong maraming code. == Paggamit ng shared hosting service == Gumagamit ang mga shared hosting server ng Namecheap ng cPanel bilang interface ng control panel upang pamahalaan ang Apache server. Dapat ding makatulong ang mga tagubiling ito sa sinumang gumagamit ng shared hosting service sa cPanel gaya ng A2 Hosting at GoDaddy. Inilagay ko rin ang aking Namecheap server na may SSL certificate at ang cPanel bilang default ay nire-redirect ang lahat ng trapiko ng HTTP sa HTTPS. Kaya lahat ng trapiko sa aking server ay ligtas. Makakakita ka ng maraming gabay na nagtuturo sa iyo kung paano mag-host ng Node app sa isang VPS (Virtual Private Server) na serbisyo sa pagho-host gaya ng DigitalOcean. Kung nagsisimula ka sa simula pagkatapos ay ang pagho-host gamit ang isang serbisyong tulad nito ay magbibigay sa iyo ng higit na kontrol. Ngunit kadalasan ito ay mas mahal kaysa sa shared hosting. At sa aking kaso ay nagbayad na ako para sa isang Namecheap shared hosting service. Ilang pakinabang ng paggamit ng cPanel at shared hosting: - Pinamamahalaan gamit ang isang simpleng web management console - Madaling i-configure - Murang, lalo na kung nagho-host ka na ng site / domain - Madaling mag-set up ng mga dynamic na website gamit ang iba pang mga teknolohiya tulad ng PHP, atbp, kung nag-e-explore ka ng iba't ibang teknolohiya Ang ilang mga disadvantages: - Mas kaunting kontrolado dahil wala kang access sa pinagbabatayan na operating system - Hindi nasusukat == Saan napupunta ang lahat? == Una kailangan mong lumikha ng isang folder para sa lahat ng mga source file para sa iyong Node apps. Gumawa ako ng folder na tinatawag na âÃÂÃÂnodejsâÃÂàsa direktoryo ng /home/username at sa loob ng folder na ito ay gagawa ako ng subfolder para sa bawat app. Ngayon, i-upload ang lahat ng iyong source file sa subfolder na ito. Tiyaking isasama mo rin ang package.json file. Hindi mo ia-upload ang âÃÂÃÂnode_modulesâÃÂàna folder dahil gagawin iyon kasama ng manager ng package mamaya. Tandaan na nagho-host lang kami ng server ng Node API sa aming halimbawa ng arkitektura ng web app. Hindi namin iho-host ang React app gamit ang Node (higit pa sa paksang ito sa susunod na artikulo). httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_1.jpg Ipinapakita ng layout ng folder ang Node source file sa ilalim ng /home/username/nodejs/mynodeapi folder at mayroong isang .htaccess file sa /home/username/public_html/myapi folder == Ang problema âÃÂàNode app ay hindi ma-access ang mga port == Ang pinakamalaking hamon ko sa pagpapatakbo ng aking Node API app. Ang isyu ay ang sample na code na ibinigay sa dokumentasyon ng suporta ng Namecheap ay hindi gumana! Sinusubukan nitong lumikha ng isang httpserver para makinig sa port 80 at isang http **s**server sa port 443. Gayunpaman, palagi akong nakakakuha ng EACCESS error na nagsasabi na wala akong pahintulot gamitin ang mga port na iyon. == Ang solusyon âÃÂàNode ay hindi kailangang i-access ang port! == Sa kalaunan ay natagpuan ko ang solusyon sa pamamagitan ng pagbabasa ng komento ng user na SibProgrammer sa isang thread tungkol sa Plesk, isa pang hosting control panel. Ang cPanel ay gumagamit ng server ng application ng Phusion Passenger upang mag-host ng mga Node app, tulad ng Plesk. Sa buod: Kapag nagpadala ka ng kahilingan mula sa iyong browser mapupunta ito sa Apache server, pagkatapos ay sa Phusion Passenger, at pagkatapos ay sa iyong Node app. Hindi kailangang pagmamay-ari ng iyong Node app ang port dahil pinangangasiwaan ito ng mga server ng application ng Apache at Phusion Passenger. Pinapasimple nito ang code para sa paggawa ng httpserver sa iyong www.js (o app.js) na file: * www.js * Pagsubok sa paglikha ng http server para sa Namecheap. * Dave */ const http = nangangailangan('http http.createServer(function(request, response) { response.writeHead(200, {'Content-Type': 'text/html response.endh1>Hello Worldh1 listen(process.env .PORT); console.log('Ang app ay tumatakbo Ilang bagay na dapat tandaan: - Makinig sa process.env.PORT (sa halip na manu-manong itakda ang 80 o 443). Noong pagsubok, napansin ko na ang process.env.PORT ay hindi natukoy! Ngunit kawili-wili na hindi mahalaga sa kasong ito. - Gumamit ng isang http server kahit na mayroon kang SSL set up. Na-configure ng cPanel ang Apache upang i-redirect ang lahat ng trapiko ng HTTP sa HTTPS at dahil dito ay tumugon sa lahat ng mga kahilingan sa pamamagitan ng HTTPS. Hindi mo kailangang manu-manong i-configure ang iyong Node app para mag-set up ng https server at magbasa sa iyong mga SSL certificate. == Mga huling hakbang para sa server ng Node API == Ngayon ito ay dapat na medyo simpleng proseso ng pagsunod sa mga tagubilin upang i-set up ang iyong node app. httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_2.jpg Screenshot ng pahina ng configuration ng Node.js ng cPanel - Piliin ang naaangkop na bersyon ng Node.js at application mode (Inirerekomenda ang Produksyon). - Ang âÃÂÃÂApplication rootâÃÂàay ang folder kung saan mo na-upload ang iyong source file kanina (âÃÂànodejs/mynodeapiâÃÂàsa halimbawa sa itaas). - Ang âÃÂÃÂApplication URLâÃÂàang magiging URL na gagamitin upang ma-access ang iyong API (âÃÂÃÂmyapià ¢ÃÂàsa halimbawa). Ang pangalang ibibigay mo sa kahong ito ay gagamitin upang lumikha ng subfolder sa iyong /home/username/public_html na folder. Ito ay hindi kailangang maging kapareho ng pangalan ng âÃÂÃÂApplication rootâÃÂàfolder (ngunit madalas ay magiging). - Ang âÃÂÃÂApplication startup fileâÃÂàay magiging www.js o app.js depende sa kung paano mo ginawa ang iyong Node app. - Nasa sa iyo kung paano mo gustong i-configure ang Passenger log file. - Kapag nagawa mo na ang app makikita mo ang button para âÃÂÃÂPatakbuhin ang NPM Installà ¢ÃÂÃÂ. Patakbuhin ito at gagawa ito ng folder na âÃÂÃÂnode_modulesâÃÂàkasama ang lahat ng nakadependeng module na kailangan ng iyong app. Kapag na-set up mo na ang iyong Node app at nasimulan mo na ito, gagawa ito ng subfolder sa iyong folder na /home/public_html. Kakailanganin mo na ngayong pumunta sa folder na iyon at i-edit ang .htaccess file at idagdag sa sumusunod na linya: Naka-off ang RewriteEngine Pinipigilan nito ang Apache server na muling isulat (o i-redirect) ang alinman sa mga kahilingang kailangang pumunta sa iyong API server nang buo. At ayun na! Ngayon ang iyong Node API app ay dapat na gumagana at tumutugon sa iyong mga tawag sa API. == Kaya ano ang susunod? == Ngayong na-set up na namin ang Node API server, maaari naming baguhin ang aming React front end sa aming development environment para tumuro sa API server na ito. O maaari naming gamitin ang Postman upang subukan ang aming mga tawag sa API. Sa susunod na artikulo titingnan natin ang pagho-host ng React app sa Namecheap at cPanel.