Dalam artikel ini saya akan membincangkan pengehosan apl Node.js pada pelayan pengehosan kongsi Namecheap menggunakan cPanel. Saya tidak akan membincangkan penyediaan pelayan pangkalan data atau bahagian hadapan React untuk apl web anda dalam artikel ini. Sebaliknya saya ingin menumpukan pada cabaran yang mungkin anda hadapi dengan menjalankan aplikasi Node dalam persekitaran pengehosan kongsi. == Jangan berlengah, hos hari ini! == Sebelum anda melangkah terlalu jauh untuk membangunkan apl web anda adalah idea yang baik untuk meletakkan versi yang stabil dalam talian. Ini mungkin dalam persekitaran pengeluaran anda, atau dalam persekitaran pementasan yang serupa dengan persekitaran pengeluaran anda. Kebanyakan orang akan menunggu sehingga apl mereka hampir siap sebelum mengehosnya dalam talian âÃÂàdan inilah yang saya lakukan semasa membangunkan apl web React dan Node pertama saya. Walau bagaimanapun, pada ketika itu Ia banyak cabaran dalam menjalankan pelayan API Node saya dan saya juga terpaksa membuat banyak perubahan pada aplikasi React saya. Itulah sebabnya saya mengesyorkan meletakkan versi dalam talian lebih awal supaya anda boleh membuat pelarasan sebelum menulis terlalu banyak kod. == Menggunakan perkhidmatan pengehosan bersama == Pelayan pengehosan kongsi Namecheap menggunakan cPanel sebagai antara muka panel kawalan untuk mengurus pelayan Apache. Arahan ini juga harus membantu sesiapa sahaja yang menggunakan perkhidmatan pengehosan kongsi dengan cPanel seperti A2 Hosting dan GoDaddy. Saya juga telah menyediakan pelayan Namecheap saya dengan sijil SSL dan cPanel secara lalai mengubah hala semua trafik HTTP ke HTTPS. Jadi semua trafik ke pelayan saya selamat. Anda akan menemui banyak panduan yang mengarahkan anda tentang cara untuk mengehos aplikasi Node pada perkhidmatan pengehosan VPS (Pelayan Peribadi Maya) seperti DigitalOcean. Jika anda bermula dari awal kemudian mengehos menggunakan perkhidmatan seperti itu akan memberi anda lebih kawalan. Tetapi ia biasanya lebih mahal daripada hosting bersama. Dan dalam kes saya, saya telah membayar untuk perkhidmatan pengehosan kongsi Namecheap. Beberapa kelebihan menggunakan cPanel dan pengehosan kongsi: - Diurus dengan konsol pengurusan web yang ringkas - Mudah dikonfigurasikan - Murah, terutamanya jika anda sudah mengehos tapak / domain - Boleh menyediakan tapak web dinamik dengan mudah menggunakan teknologi lain seperti PHP, dll, jika anda sedang meneroka teknologi yang berbeza Beberapa kelemahan: - Kurang âÃÂÃÂcontrolâÃÂàkerana anda tidak mempunyai akses kepada sistem pengendalian asas - Tidak boleh skala == Di mana semua pergi? == Mula-mula anda perlu mencipta folder untuk semua fail sumber untuk apl Node anda. Saya mencipta folder yang dipanggil âÃÂÃÂnodejsâÃÂàdalam direktori /home/nama pengguna dan dalam folder ini saya kemudian mencipta subfolder untuk setiap apl. Sekarang muat naik semua fail sumber anda ke dalam subfolder ini. Pastikan anda memasukkan fail package.json juga. Anda tidak memuat naik folder âÃÂÃÂnode_modulesâÃÂàkerana ia akan dibuat dengan pengurus pakej nanti. Ingat kami hanya mengehoskan pelayan API Node dalam contoh seni bina aplikasi web kami. Kami tidak akan mengehoskan apl React menggunakan Node (lebih lanjut mengenai topik ini dalam artikel seterusnya). httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_1.jpg Reka letak folder menunjukkan fail sumber Nod di bawah folder /home/username/nodejs/mynodeapi dan terdapat a .htaccess fail dalam folder /home/username/public_html/myapi == Masalah âÃÂàApl nod tidak boleh mengakses port == Cabaran terbesar saya ialah untuk menjalankan apl Node API saya. Isunya ialah kod sampel yang diberikan dalam dokumentasi sokongan Namecheap tidak berfungsi! Ia cuba mencipta httpserver untuk mendengar pada port 80 dan http **s**server pada port 443. Walau bagaimanapun, saya sentiasa mendapat ralat EACCESS yang mengatakan bahawa saya tidak mempunyai kebenaran untuk menggunakan port tersebut. == Penyelesaian âÃÂàNod tidak perlu mengakses port! == Akhirnya saya menemui penyelesaiannya dengan membaca ulasan oleh pengguna SibProgrammer dalam benang tentang Plesk, panel kawalan pengehosan yang lain. cPanel menggunakan pelayan aplikasi Phusion Passenger untuk mengehoskan aplikasi Node, begitu juga dengan Plesk. Secara ringkasnya: Apabila anda menghantar permintaan daripada penyemak imbas anda, ia pergi ke pelayan Apache, kemudian ke Phusion Passenger, dan kemudian ke apl Node anda. Apl Node anda tidak perlu memiliki port tersebut kerana ia dikendalikan lebih jauh ke hulu oleh pelayan aplikasi Apache dan Phusion Passenger. Ini memudahkan kod untuk mencipta httpserver dalam fail www.js (atau app.js) anda: * www.js * Menguji penciptaan pelayan http untuk Namecheap. * Dave */ const http = memerlukan('http http.createServer(function(request, response) { response.writeHead(200, {'Content-Type': 'text/html response.endh1>Hello Worldh1 listen(process.env .PORT); console.log('Apl sedang berjalan Beberapa perkara yang perlu diperhatikan: - Dengar pada process.env.PORT (bukannya menetapkan 80 atau 443 secara manual). Semasa ujian saya perasan bahawa process.env.PORT tidak ditentukan! Tetapi yang menariknya itu tidak penting dalam kes ini. - Gunakan pelayan http walaupun anda telah menyediakan SSL. cPanel telah mengkonfigurasi Apache untuk mengubah hala semua trafik HTTP ke HTTPS dan seterusnya membalas semua permintaan melalui HTTPS. Anda tidak perlu mengkonfigurasi apl Node anda secara manual untuk menyediakan pelayan https dan membaca dalam sijil SSL anda. == Langkah akhir untuk pelayan API Node == Kini ia sepatutnya menjadi proses yang agak mudah mengikut arahan untuk menyediakan apl nod anda. httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_2.jpg Petikan skrin halaman konfigurasi Node.js cPanel - Pilih versi Node.js dan mod aplikasi yang sesuai (Pengeluaran disyorkan). - âÃÂÃÂApplication rootâÃÂàakan menjadi folder tempat anda memuat naik fail sumber anda sebelum ini (âÃÂànodejs/mynodeapiâÃÂàdalam contoh di atas). - âÃÂÃÂURL AplikasiâÃÂàakan menjadi URL yang digunakan untuk mengakses API anda (âÃÂÃÂmyapià ¢ÃÂàdalam contoh). Nama yang anda berikan dalam kotak ini akan digunakan untuk mencipta subfolder dalam folder /home/username/public_html anda. Ia tidak semestinya sama dengan nama folder âÃÂÃÂApplication rootâÃÂàfolder (tetapi selalunya akan jadi). - âÃÂÃÂFail permulaan aplikasiâÃÂàakan menjadi www.js atau app.js bergantung pada cara anda mencipta apl Node anda. - Terpulang kepada anda bagaimana anda mahu mengkonfigurasi fail log Penumpang. - Sebaik sahaja anda telah mencipta apl, anda akan melihat butang untuk âÃÂÃÂJalankan Pemasangan NPMà ¢ÃÂÃÂ. Jalankan ini dan ia akan mencipta folder âÃÂÃÂnode_modulesâÃÂàdengan semua modul bergantung yang diperlukan oleh apl anda. Sebaik sahaja anda telah menyediakan apl Node anda dan memulakannya, ia akan mencipta subfolder dalam folder /home/public_html anda. Anda kini perlu pergi ke folder itu dan edit fail .htaccess dan tambah dalam baris berikut: Tulis SemulaEnjin dimatikan Ini menghalang pelayan Apache daripada menulis semula (atau mengubah hala) mana-mana permintaan yang perlu pergi ke pelayan API anda secara utuh. Dan itu sahaja! Kini apl Node API anda seharusnya telah aktif dan berjalan serta bertindak balas kepada panggilan API anda. == Jadi apaâÃÂàseterusnya? == Sekarang setelah kami menyediakan pelayan API Node, kami boleh menukar bahagian hadapan React kami dalam persekitaran pembangunan kami untuk menunjuk ke pelayan API ini. Atau kami boleh menggunakan Posman untuk menguji panggilan API kami. Dalam artikel seterusnya, kami akan melihat mengehos apl React pada Namecheap dan cPanel.