En este artículo, cubriré el alojamiento de una aplicación Node.js en los servidores de alojamiento compartido de Namecheap mediante cPanel. No hablaré sobre la configuración del servidor de la base de datos o el front-end de React para su aplicación web en este artículo. En cambio, quiero centrarme en los desafíos que podría enfrentar al ejecutar una aplicación Node en un entorno de alojamiento compartido. == ¡No se demore, anfitrión hoy! == Antes de avanzar demasiado en el camino del desarrollo de su aplicación web, es una buena idea poner una versión estable en línea. Esto podría ser en su entorno de producción o en un entorno de prueba que sea similar a su entorno de producción. La mayoría de las personas esperarán hasta que su aplicación esté casi completa antes de alojarla en línea âÃÂày esto es lo que hice al desarrollar mi primera aplicación web React and Node. Sin embargo, en ese momento tuve muchos desafíos para hacer que mi servidor Node API se ejecutara y también tuve que hacer muchos cambios en mi aplicación React. Es por eso que recomiendo poner una versión en línea desde el principio para que pueda hacer ajustes antes de escribir demasiado código. == Usar un servicio de alojamiento compartido == Los servidores de alojamiento compartido de Namecheap utilizan cPanel como interfaz del panel de control para administrar el servidor Apache. Estas instrucciones también deberían ayudar a cualquier persona que utilice un servicio de alojamiento compartido con cPanel, como A2 Hosting y GoDaddy. También tengo configurado mi servidor Namecheap con un certificado SSL y cPanel redirige de forma predeterminada todo el tráfico HTTP a HTTPS. Entonces todo el tráfico a mi servidor es seguro. Encontrará muchas guías que le indicarán cómo alojar una aplicación Node en un servicio de alojamiento VPS (servidor privado virtual) como DigitalOcean. Si está comenzando desde cero, el hospedaje con un servicio como ese le dará más control. Pero suele ser más caro que el alojamiento compartido. Y en mi caso ya había pagado por un servicio de hosting compartido de Namecheap. Algunas ventajas de usar cPanel y hosting compartido: - Administrado con una consola de administración web simple - Fácil de configurar - Barato, especialmente si ya está alojando un sitio/dominio - Puede configurar fácilmente sitios web dinámicos usando otras tecnologías como PHP, etc., si está explorando diferentes tecnologías Algunas desventajas: - Menos control, ya que no tiene acceso al sistema operativo subyacente. - No escalable == ¿Adónde va todo? == Primero, debe crear una carpeta para todos los archivos de origen de sus aplicaciones de Node. Creé una carpeta llamada âÃÂÃÂnodejsâÃÂàen el directorio /home/username y dentro de esta carpeta creo una subcarpeta para cada aplicación. Ahora cargue todos sus archivos fuente en esta subcarpeta. Asegúrese de incluir también el archivo package.json. No carga la carpeta "node_modules"ya que se creará con el administrador de paquetes. más tarde. Recuerde que solo alojamos el servidor API de nodo en nuestro ejemplo de arquitectura de aplicación web. No alojaremos la aplicación React usando Node (más sobre este tema en el próximo artículo). httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_1.jpg El diseño de la carpeta muestra los archivos de origen de Node en la carpeta /home/username/nodejs/mynodeapi y hay un archivo .htaccess en la carpeta /home/username/public_html/myapi == El problema âÃÂàLa aplicación Node no puede acceder a los puertos == El mayor desafío que tuve fue lograr que mi aplicación Node API se ejecutara. El problema era que el código de muestra proporcionado en la documentación de soporte de Namecheap simplemente no funcionaba. Intenta crear un servidor https para escuchar en el puerto 80 y un servidor http **s** en el puerto 443. Sin embargo, siempre recibí un error EACCESS que decía que no tenía permiso. para usar esos puertos. == La solución âÃÂà¡El nodo no necesita acceder al puerto! == Finalmente, encontré la solución leyendo un comentario del usuario SibProgrammer en un hilo sobre Plesk, otro panel de control de hosting. cPanel utiliza el servidor de aplicaciones Phusion Passenger para alojar aplicaciones Node, al igual que Plesk. En resumen: Cuando envía una solicitud desde su navegador, va al servidor Apache, luego a Phusion Passenger y luego a su aplicación Node. Su aplicación Node no necesita ser propietaria del puerto, ya que los servidores de aplicaciones Apache y Phusion Passenger la manejan aguas arriba. Esto simplifica el código para crear el servidor https en su archivo www.js (o app.js): * www.js * Probando la creación del servidor http para Namecheap. * Dave */ const http = require('http http.createServer(function(solicitud, respuesta) { respuesta.writeHead(200, {'Content-Type': 'text/html respuesta.endh1>Hello Worldh1 listen(process.env .PORT); console.log('La aplicación se está ejecutando Algunas cosas a tener en cuenta: - Escuche en process.env.PORT (en lugar de configurar manualmente 80 o 443). ¡Al probar noté que process.env.PORT no está definido! Pero curiosamente eso no importa en este caso. - Use un servidor http incluso si tiene SSL configurado. cPanel ha configurado Apache para redirigir todo el tráfico HTTP a HTTPS y, en consecuencia, responder a todas las solicitudes por HTTPS. No necesita configurar manualmente su aplicación Node para configurar un servidor https y leer sus certificados SSL. == Pasos finales para el servidor API de Nodo == Ahora debería ser el proceso relativamente simple de seguir las instrucciones para configurar su aplicación de nodo. httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_2.jpg Captura de pantalla de la página de configuración de cPanelâÃÂÃÂs Node.js - Elija la versión adecuada de Node.js y el modo de aplicación (se recomienda Producción). - La âÃÂÃÂApplication rootâÃÂàserá la carpeta donde cargó sus archivos de origen anteriormente nodejs/mynodeapiâÃÂàen el ejemplo anterior). - La âÃÂÃÂApplication URLâÃÂàserá la URL utilizada para acceder a su API (âÃÂÃÂmyapià ¢ÃÂàen el ejemplo). El nombre que proporcione en este cuadro se utilizará para crear una subcarpeta en su carpeta /home/username/public_html. No tiene que tener el mismo nombre que la carpeta "raíz de la aplicación"(pero a menudo lo será). - El "Archivo de inicio de la aplicación"será www.js o app.js según cómo haya creado su aplicación Node. - Depende de usted cómo desea configurar el archivo de registro de Pasajeros. - Una vez que haya creado la aplicación, verá el botón para "Ejecutar instalación de NPM". ¢ÃÂÃÂ. Ejecute esto y creará la carpeta "node_modules"con todos los módulos dependientes que su aplicación necesita. Una vez que haya configurado su aplicación Node y la haya iniciado, creará la subcarpeta en su carpeta /home/public_html. Ahora deberá ir a esa carpeta y editar el archivo .htaccess y agregar la siguiente línea: Motor de reescritura apagado Esto evita que el servidor Apache reescriba (o redirija) cualquiera de las solicitudes que deben ir intactas a su servidor API. ¡Y eso es todo! Ahora su aplicación Node API debería estar funcionando y respondiendo a sus llamadas API. == Entonces, ¿qué sigue? == Ahora que hemos configurado el servidor API de Node, podemos cambiar nuestra interfaz React en nuestro entorno de desarrollo para que apunte a este servidor API. O podríamos usar Postman para probar nuestras llamadas API. En el siguiente artículo, veremos cómo alojar la aplicación React en Namecheap y cPanel.