In questo articolo tratterò l'hosting di un'app Node.js sui server di hosting condiviso di Namecheap utilizzando cPanel. In questo articolo non parlerò della configurazione del server di database o del front-end React per la tua app Web. Invece voglio concentrarmi sulle sfide che potresti incontrare con l'esecuzione di un'app Node in un ambiente di hosting condiviso. == Non ritardare, ospita oggi stesso! == Prima di andare troppo avanti nel percorso di sviluppo della tua app Web, è una buona idea mettere online una versione stabile. Questo potrebbe essere nel tuo ambiente di produzione o in un ambiente di gestione temporanea simile al tuo ambiente di produzione. La maggior parte delle persone aspetterà che la loro app sia quasi completa prima di ospitarla online âÃÂàe questo è quello che ho fatto durante lo sviluppo della mia prima app web React e Node. Tuttavia, a quel punto ho dovuto affrontare molte sfide per far funzionare il mio server Node API e ho anche dovuto apportare molte modifiche alla mia app React. Questo è il motivo per cui consiglio di mettere presto online una versione in modo da poter apportare modifiche prima di scrivere troppo codice. == Utilizzo di un servizio di hosting condiviso == I server di hosting condiviso di Namecheap utilizzano cPanel come interfaccia del pannello di controllo per gestire il server Apache. Queste istruzioni dovrebbero anche aiutare chiunque utilizzi un servizio di hosting condiviso con cPanel come A2 Hosting e GoDaddy. Ho anche il mio server Namecheap configurato con un certificato SSL e cPanel per impostazione predefinita reindirizza tutto il traffico HTTP a HTTPS. Quindi tutto il traffico verso il mio server è protetto. Troverai molte guide che ti istruiranno su come ospitare un'app Node su un servizio di hosting VPS (Virtual Private Server) come DigitalOcean. Se stai iniziando da zero, l'hosting utilizzando un servizio del genere ti darà un maggiore controllo. Ma di solito è più costoso dell'hosting condiviso. E nel mio caso avevo già pagato un servizio di hosting condiviso Namecheap. Alcuni vantaggi dell'utilizzo di cPanel e hosting condiviso: - Gestito con una semplice console di gestione web - Facile da configurare - Economico, specialmente se stai già ospitando un sito/dominio - Può facilmente configurare siti web dinamici utilizzando altre tecnologie come PHP, ecc., se stai esplorando tecnologie diverse Alcuni svantaggi: - Meno âÃÂÃÂcontrolâÃÂàpoiché non hai accesso al sistema operativo sottostante - Non scalabile == Dove va a finire tutto? == Per prima cosa devi creare una cartella per tutti i file sorgente per le tue app Node. Ho creato una cartella chiamata âÃÂÃÂnodejsâÃÂànella directory /home/username e all'interno di questa cartella creo una sottocartella per ogni app. Ora carica tutti i tuoi file sorgente in questa sottocartella. Assicurati di includere anche il file package.json. Non caricare la cartella âÃÂÃÂnode_modulesâÃÂàpoiché verrà creata con il gestore pacchetti Dopo. Ricorda che stiamo solo ospitando il server Node API nel nostro esempio di architettura dell'app web. Non ospiteremo l'app React utilizzando Node (ulteriori informazioni su questo argomento nel prossimo articolo). httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_1.jpg Il layout delle cartelle mostra i file sorgente del nodo nella cartella /home/username/nodejs/mynodeapi e c'è un .htaccess nella cartella /home/username/public_html/myapi == Il problema è che l'app Node non può accedere alle porte == La sfida più grande è stata far funzionare la mia app Node API. Il problema era che il codice di esempio fornito nella documentazione di supporto di Namecheap non funzionava! Prova a creare un server https per l'ascolto sulla porta 80 e un server http **s** sulla porta 443. Tuttavia, ho sempre ricevuto un errore EACCESS che diceva che non avevo il permesso utilizzare quelle porte. == La soluzione âÃÂàNode non ha bisogno di accedere alla porta! == Alla fine ho trovato la soluzione leggendo un commento dell'utente SibProgrammer in un thread su Plesk, un altro pannello di controllo di hosting. cPanel utilizza il server delle applicazioni Phusion Passenger per ospitare le app Node, così come Plesk. In sintesi: Quando invii una richiesta dal tuo browser, questa va al server Apache, quindi a Phusion Passenger e quindi alla tua app Node. La tua app Node non ha bisogno di possedere la porta poiché viene gestita ulteriormente a monte dai server delle applicazioni Apache e Phusion Passenger. Ciò semplifica il codice per la creazione dell'httpserver nel file www.js (o app.js): * www.js * Testare la creazione del server http per 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('L'app è in esecuzione Alcune cose da notare: - Ascolta su process.env.PORT (invece di impostare manualmente 80 o 443). Durante il test ho notato che process.env.PORT non è definito! Ma è interessante notare che in questo caso non ha importanza. - Usa un server http anche se hai configurato SSL. cPanel ha configurato Apache per reindirizzare tutto il traffico HTTP su HTTPS e di conseguenza rispondere a tutte le richieste tramite HTTPS. Non è necessario configurare manualmente l'app Node per configurare un server https e leggere i certificati SSL. == Passaggi finali per il server Node API == Ora dovrebbe essere il processo relativamente semplice di seguire le istruzioni per configurare l'app del nodo. httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_2.jpg Schermata della pagina di configurazione Node.js di cPanelâÃÂÃÂs - Scegli la versione appropriata di Node.js e la modalità dell'applicazione (si consiglia la produzione). - La âÃÂÃÂApplication rootâÃÂàsarà la cartella in cui hai caricato i tuoi file di origine in precedenza (âÃÂànodejs/mynodeapiâÃÂànell'esempio precedente). - âÃÂÃÂApplication URLâÃÂàsarà l'URL utilizzato per accedere alla tua API (âÃÂÃÂmyapià ¢ÃÂànell'esempio). Il nome che fornisci in questa casella verrà utilizzato per creare una sottocartella nella tua cartella /home/username/public_html. Non deve essere lo stesso nome della cartella âÃÂÃÂApplication rootâÃÂà(ma spesso lo sarà). - Il âÃÂÃÂFile di avvio dell'applicazioneâÃÂàsarà www.js o app.js a seconda di come hai creato la tua app Node. - Sta a te decidere come configurare il file di registro dei passeggeri. - Dopo aver creato l'app, vedrai il pulsante per eseguire l'installazione di NPM. ¢ÃÂÃÂ. Eseguilo e creerà la cartella âÃÂÃÂnode_modulesâÃÂàcon tutti i moduli dipendenti di cui ha bisogno la tua app. Una volta che hai configurato la tua app Node e l'hai avviata, creerà la sottocartella nella tua cartella /home/public_html. Ora dovrai andare in quella cartella e modificare il file .htaccess e aggiungere la seguente riga: RewriteEngine spento Ciò impedisce al server Apache di riscrivere (o reindirizzare) qualsiasi richiesta che deve essere inviata intatta al tuo server API. E questo è tutto! Ora la tua app Node API dovrebbe essere attiva e funzionante e rispondere alle tue chiamate API. == Allora, cosa c'è dopo? == Ora che abbiamo configurato il server Node API, potremmo modificare il nostro front-end React nel nostro ambiente di sviluppo in modo che punti a questo server API. Oppure potremmo usare Postman per testare le nostre chiamate API. Nel prossimo articolo vedremo come ospitare l'app React su Namecheap e cPanel.