Publicar una aplicación de Node.js
Qué consigues: tu aplicación de Node corriendo en el dominio de uno de tus sitios, con HTTPS, y levantándose sola si se cae.
Antes de empezar
Necesitas un sitio ya creado, y la aplicación necesita dos cosas: un
package.json y un archivo de entrada, por ejemplo app.js.
Y algo que hay que decidir antes de empezar: el dominio del sitio pasa a servir la aplicación. Si ahí tenías una web, deja de verse. Si lo que quieres es probar, usa un sitio aparte.
Tu aplicación tiene que escuchar en el puerto que le pasamos en la variable de
entorno PORT. Si lo tienes escrito a fuego, no va a responder.
Pasos
Sube los archivos a la carpeta del sitio, con el Gestor de archivos o por SFTP (Subir tus ficheros: FTP, SFTP y el gestor de archivos).
Menú Sitios → Aplicaciones Node.js → Nueva aplicación.
Rellena:
Sitio — su dominio pasará a servir esta aplicación.
Nombre — para reconocerla en la lista.
Archivo de entrada — el que arranca la aplicación, dentro de su carpeta. Por ejemplo
app.js.Carpeta (opcional) — dentro de la carpeta del sitio. Vacía, la raíz.
Variables de entorno (opcional) — una por línea, con la forma
CLAVE=valor.
Crear aplicación.
Al iniciarla instalamos las dependencias (npm install --production) y le
damos su puerto en PORT.
Cómo sabes que ha salido bien
La fila de la aplicación tiene que quedar en marcha, y https://tudominio.com
tiene que devolver lo que devuelve tu aplicación, no la web de antes.
Si no sale, abre el Registro de la aplicación desde su fila: ahí está lo que ha escrito Node al arrancar, que es donde se ve el error de verdad.
Los botones Iniciar, Reiniciar y Detener están en la propia fila.
Problemas frecuentes
- La aplicación arranca y el dominio da error 502 o no responde
Casi siempre es el puerto. Tiene que escuchar en process.env.PORT, no en un número escrito a mano. Míralo en el registro: si pone que escucha en el 3000 y nosotros le dimos otro, es eso.
- El registro dice «Cannot find module»
Falta una dependencia en el package.json, o la instalaste como dependencia de desarrollo. Como instalamos con –production, las de desarrollo no entran: pásala a las normales y reinicia.
- Sube los archivos y no encuentra el de entrada
La ruta del archivo de entrada es relativa a la carpeta de la aplicación, no a la raíz del sitio. Si tu app.js está dentro de una subcarpeta, ponla en «Carpeta».
- He subido cambios y sigue sirviendo lo de antes
Node carga el código al arrancar. Pulsa «Reiniciar» en su fila y vuelve a mirar.
- Mi web de antes ha desaparecido
Es lo que hace: el dominio del sitio pasa a servir la aplicación. Detén la aplicación y el sitio vuelve a servir sus ficheros.
- Necesito una base de datos para la aplicación
Las bases de datos de tus sitios son MariaDB y están ahí mismo. Si quieres PostgreSQL o Redis, se contratan aparte: mira Bases de datos gestionadas para Proyectos y VPS.
- ¿Puedo tener dos aplicaciones en el mismo dominio?
No: un dominio sirve una. Usa otro sitio, o un subdominio con su propio sitio.
- La aplicación se cae cada poco
La volvemos a levantar sola cada vez, así que el servicio se mantiene, pero el problema está en tu código. El registro guarda lo de antes de cada caída: ahí está la pista.