node.js - node - ¿Cómo puedo alojar mi propio servidor Parse en Heroku usando MongoDB?
npm heroku (1)
(Para ser claro, estoy haciendo esta pregunta para proporcionar la respuesta que encontré en un esfuerzo por ayudar a otros que se han visto afectados de manera similar por el cierre de Parse)
Parse.com anunció recientemente que están cerrando la tienda en enero de 2017, pero afortunadamente han creado su software Parse Server de código abierto para que todos podamos alojar nuestras propias instancias de servidor Parse.
He analizado las diversas opciones disponibles para alojar el Servidor Parse y he decidido alojar el mío en Heroku
Me encantó Parse porque era muy fácil de usar y no tengo mucha experiencia con la configuración de un back-end. He tratado de seguir varias guías en línea, pero me parecieron un poco difíciles de entender con pasos vagos o pasos que te llevan por un agujero de conejo en otro sitio al instalar un montón de herramientas y todo se vuelve un poco confuso.
¿Cómo puedo alojar Parse Server en heroku, configurarlo para aceptar solicitudes de dominios cruzados desde mi aplicación, crear una base de datos MongoDB y migrar todos mis datos de Parse a la nueva base de datos?
Servidor de alojamiento autónomo en Heroku
Configurar Heroku, MongoDB y Parse
- Visite https://signup.heroku.com/ y regístrese para obtener una cuenta
- Verifique su correo electrónico e inicie sesión en Heroku
- Vaya a Implementar un servidor Parse en Heroku
- Haga clic en "Implementar a Heroku"
- Dale un nombre a tu servidor de análisis
- Omita por el momento APP_ID y MASTER_KEY, lo estableceremos en el paso posterior.
- Haga clic en "Implementar de forma gratuita"
- Si aparece el cuadro a continuación, ingrese la información de su tarjeta de crédito para verificar su cuenta. No se preocupe, no se le cobrará a menos que actualice su cuenta más tarde . Esto es simplemente una medida de seguridad que Heroku ha implementado para evitar el abuso.
- Heroku creará tu aplicación. En segundo plano, también creará un .git repo para usted y clonará los contenidos del repositorio git oficial de parse-server-example , creará una base de datos MongoDB y configurará su aplicación Heroku para usar esa base de datos.
- Cuando se crea la aplicación, accederá al tablero de Heroku o puede acceder ingresando, haciendo clic en "Aplicaciones personales" y luego haciendo clic en el nombre de su servidor de análisis.
- En el panel de control de su aplicación, haga clic en "Configuración" y luego en "Revelar config vars"
- Complete el APP_ID y el MASTER_KEY de su aplicación. Si tiene una aplicación en Parse.com ahora, puede usar las mismas teclas que usa. Puede administrar el en
https://www.parse.com/apps/<APP_NAME>/edit#keys
donde<APP_NAME>
es el nombre de su aplicación. Si está creando una nueva aplicación, puede generar claves aleatorias aquí . Puedes agregar nuevas claves para cualquier SDK que planees usar, y estoy agregando una para el sdk de JavaScript aquí.
- Anote el valor de MONGOLAB_URI; lo necesitará más adelante si desea migrar los datos de Parse existentes a su nueva base de datos.
- Desplácese hacia abajo y anote la URL de Git y el dominio de Heroku para su aplicación, necesitará estos luego
- Instala Heroku Toolbelt, que es una herramienta de interfaz de línea de comandos para administrar tus aplicaciones Heroku.
- Abra un indicador de terminal e ingrese el
$ heroku login
, ingrese su correo electrónico y contraseña de Heroku Ingrese
$ heroku git:clone -a <MY_APP_NAME>
(donde<MY_APP_NAME>
es el nombre de su aplicación heroku) para hacer una copia local del repositorio de código del servidor, también puede usar la url git que vimos anteriormente. Cuando clones el repositorio, verás el mensaje "advertencia: pareces haber clonado un repositorio vacío". Se creará la carpeta de la aplicación, pero solo contendrá los archivos estándar de git y ningún servidor de análisis. Para arreglar esto. Vaya al repositorio git oficial parse-server-example , descargue el archivo zip del repositorio. Extraiga la carpeta, arrastre todos los archivos y carpetas de la carpeta parse-server-example-master a la carpeta de la aplicación.De vuelta en la terminal, ingrese
$ cd <MY_APP_NAME>
para ingresar al repositorio
Habilite CORS (para que pueda usar la API desde otros dominios)
- En su disco duro, busque y abra la copia local del repositorio que acabamos de crear
- En la carpeta, abra
package.json
y agregue"cors": "*"
a lasdependencies
como esta:
.
"dependencies": {
"express": "~4.2.x",
"kerberos": "~0.0.x",
"parse": "~1.6.12",
"parse-server": "~2.0", // <= don''t forget this comma
"cors": "*" // add this line
}
NOTA
Asegúrese de eliminar los comentarios anteriores en su código real, ya que no será válido JSON
- Abra
index.js
y realice estos cambios:
.
var express = require(''express''); // find this line in the file
var cors = require(''cors'') // add this line below it
//....
//var databaseUri = process.env.DATABASE_URI || process.env.MONGOLAB_URI // old name, you may need to change this for new deployments
var databaseUri = process.env.DATABASE_URI || process.env.MONGODB_URI // changed to MONGODB_URI in Heroku!
//....
var app = express(); // find this line in the file
app.use(cors()); // add this line below it
//Add declarations for any keys you plan to use as shown below
var api = new ParseServer({
databaseURI: databaseUri || ''mongodb://localhost:27017/dev'',
cloud: process.env.CLOUD_CODE_MAIN || __dirname + ''/cloud/main.js'',
appId: process.env.APP_ID || ''myAppId'',
masterKey: process.env.MASTER_KEY || '''',
serverURL: process.env.SERVER_URL || ''http://localhost:1337'',
javascriptKey: process.env.JAVASCRIPT_KEY || '''', //** add this line no need to set values, they will be overwritten by heroku config vars
restAPIKey: process.env.REST_API_KEY || '''', //** add this line
dotNetKey: process.env.DOT_NET_KEY || '''', //** add this line
clientKey: process.env.CLIENT_KEY || '''', //** add this line
});
- Vuelve a la ventana de la terminal, asegúrate de que sigues en la carpeta del repositorio que clonamos e ingresa el siguiente para enviar los cambios a Heroku:
.
$ git add .
$ git commit -am "make it better"
$ git push heroku master
Pon a prueba tu nuevo servidor Parse
- Ir a esta página jsFiddle
- Cambie
<MY_APP_ID>
,<MY_JS_KEY>
,<MY_HEROKU_APP_NAME>
en el violín a los valores apropiados para su aplicación y luego haga clic en "Ejecutar"
.
Parse.initialize(''<MY_APP_ID>'', ''<MY_JS_KEY>'');
Parse.serverURL = ''https://<MY_HEROKU_APP_NAME>.herokuapp.com/Parse''
- Debería obtener la alerta a continuación que le informa que su nuevo servidor Parse funciona correctamente
NOTA:
Si utiliza la herramienta jsfiddle con varias instancias del servidor de análisis, puede obtener el error "token de sesión no válido". Si esto sucede, abra la consola de desarrollo y elimine todas las claves de "análisis" del almacenamiento local, después de eso, debería funcionar:
Migre sus datos existentes de Parse
Debería hacer esto al menos una vez con una aplicación de prueba antes de migrar una aplicación de producción. Además, parece que los files
heredados de su aplicación anterior aún no se pueden transferir, consulte este problema de GitHub.
- Antes de migrar , si su nuevo MongoDB tiene datos, la migración fallará. Si acaba de probar el servidor y creó y objeta, vaya a
https://dashboard.heroku.com/apps/<MY_HEROKU_APP_NAME>/resources
, haga clic en "MongoLab" junto a su icono, luego, en la página siguiente, haga clic en "Eliminar todas las colecciones " - Vaya a
https://dashboard.parse.com/apps/<APP_NAME>/settings/general
donde<APP_NAME>
es el nombre de su aplicación de análisis - Desplácese hacia abajo en la página y haga clic en "Migrar"
- En el modal, en el área gris (que no se parece mucho a una entrada ...) ingrese el
MONGOLAB_URI
que tomamos nota de la anterior - Haga clic en "Comenzar la migración"
- Cuando finalice la migración, haga clic en "Finalizar" y, en la ventana emergente, haga clic en "Aceptar" cuando la migración sea definitiva; todos sus datos estarán en su nueva base de datos MongoDB.
- Por ahora, su tablero Parse continuará mostrando sus datos que ahora viven en el nuevo DB. Para probar todo, vuelva al jsFiddle de prueba que usamos antes y vuelva a ejecutarlo. Ahora, dirígete a tu panel de Parse y deberías ver la clase y fila recién agregadas. Tenga en cuenta que cuando utilicé el nuevo panel de Parse, pude ver el número de filas, pero el área de la fila estaba en blanco. Volví al viejo panel de Parse y pude ver todo bien.