web-dev-qa-db-fra.com

Comment puis-je héberger mon propre serveur d'analyse sur Heroku en utilisant MongoDB?

(Pour être clair, je pose cette question afin de fournir la réponse que j'ai trouvée dans le but d'aider d'autres personnes qui ont été touchées de la même manière par la fermeture de Parse) =

Parse.com a récemment annoncé la fermeture de sa boutique en janvier 2017, mais heureusement, ils ont fait leur logiciel open source Parse Server afin que nous puissions tous héberger nos propres instances de serveur Parse.

J'ai examiné les différentes options disponibles pour l'hébergement de Parse Server et j'ai décidé d'héberger la mienne sur Heroku

J'ai adoré Parse car il était si facile à utiliser et je n'ai pas vraiment d'expérience dans la mise en place d'un backend. J'ai essayé de suivre plusieurs guides en ligne, mais je les ai tous trouvés un peu difficiles à comprendre avec des étapes vagues ou des étapes qui vous emmènent dans un trou de lapin sur un autre site en installant un tas d'outils et tout devient un peu déroutant.

Comment puis-je héberger Parse Server sur heroku, le configurer pour accepter les demandes interdomaines de mon application, créer une base de données MongoDB et migrer toutes mes données de Parse vers la nouvelle base de données?

29
Wesley Smith

Serveur Parse auto-hébergé sur Heroku


Configurer Heroku, MongoDB et Parse

  1. Visitez https://signup.heroku.com/ et inscrivez-vous pour un compte
  2. Vérifiez votre e-mail et connectez-vous à Heroku
  3. Allez dans Déployer un serveur d'analyse sur Herok
  4. Cliquez sur "Déployer sur Heroku"

enter image description here


  1. Donnez un nom à votre serveur d'analyse
  2. Ignorez APP_ID et MASTER_KEY de l'application pour l'instant, nous le définirons à une étape ultérieure.
  3. Cliquez sur "Déployer gratuitement"

enter image description here


  1. Si la boîte ci-dessous apparaît, entrez vos informations de carte de crédit pour vérifier votre compte. Ne vous inquiétez pas, vous ne serez pas facturé sauf si vous mettez à niveau votre compte plus tard . Il s'agit simplement d'une mesure de sécurité mise en place par Heroku pour éviter les abus.

enter image description here


  1. Heroku créera votre application. En arrière-plan, il créera également un référentiel .git pour vous et clonera le contenu du référentiel git officiel parse-server-example , créera une base de données MongoDB et configurera votre application Heroku pour utiliser cette base de données.
  2. Lorsque l'application est créée, vous serez redirigé vers son tableau de bord Heroku ou vous pourrez y accéder en vous connectant, en cliquant sur "Applications personnelles" puis en cliquant sur le nom de votre serveur d'analyse
  3. Sur le tableau de bord de votre application, cliquez sur "Paramètres" puis sur "Révéler les fichiers de configuration"

enter image description here


  1. Remplissez APP_ID et MASTER_KEY de votre application. Si vous avez maintenant une application sur Parse.com, vous pouvez utiliser les mêmes clés qu'elle utilise. Vous pouvez accéder à https://www.parse.com/apps/<APP_NAME>/edit#keys<APP_NAME> est le nom de votre application. Si vous créez une nouvelle application, vous pouvez générer des clés aléatoires ici . Vous pouvez ajouter de nouvelles clés pour tous les sdks que vous prévoyez d'utiliser, j'en ajoute une pour le sdk javascript ici.

enter image description here


  1. Notez la valeur de MONGOLAB_URI, vous en aurez besoin plus tard si vous souhaitez migrer vos données d'analyse existantes vers votre nouvelle base de données
  2. Faites défiler vers le bas et notez l'URL Git et le domaine Heroku pour votre application, vous en aurez besoin plus tard

enter image description here


  1. Installez le Heroku Toolbelt qui est un outil d'interface de ligne de commande pour gérer vos applications Heroku.
  2. Ouvrez une invite de terminal et entrez $ heroku login, entrez votre e-mail et votre mot de passe Heroku
  3. Entrer $ heroku git:clone -a <MY_APP_NAME> (où <MY_APP_NAME> est le nom de votre application heroku) pour faire une copie locale de votre dépôt de code serveur, vous pouvez également utiliser l'url git de ce que nous avons vu précédemment. Lorsque vous clonez le référentiel, le message "avertissement: vous semblez avoir cloné un référentiel vide" s'affiche. Le dossier d'application sera créé mais il ne contiendra que les fichiers git standard et aucun serveur d'analyse. Pour résoudre ce problème. Allez dans le git repo officiel de parse-server-example , téléchargez le fichier Zip du repo. Extrayez le dossier, faites glisser tous les fichiers et dossiers du dossier parse-server-example-master vers votre dossier d'application.

  4. De retour dans le terminal, entrez $ cd <MY_APP_NAME>pour entrer dans le repo

Activer CORS (pour pouvoir utiliser l'API à partir d'autres domaines)

  1. Sur votre disque dur, recherchez et ouvrez la copie locale du référentiel que nous venons de créer
  2. Dans le dossier, ouvrez package.json et ajouter "cors": "*" au dependencies comme ceci:

.

  "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
  }

REMARQUE

Assurez-vous de supprimer les commentaires ci-dessus dans votre code réel car il ne sera pas valide JSON

  1. Ouvert index.js et apportez ces modifications:

.

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
});
  1. Revenez à la fenêtre du terminal, assurez-vous que vous êtes toujours dans le dossier du dépôt que nous avons cloné et entrez ci-dessous pour pousser les modifications vers Heroku:

.

$ git add .
$ git commit -am "make it better"
$ git Push heroku master

Testez votre nouveau serveur d'analyse

  1. Allez à ceci page jsFiddle
  2. Changement <MY_APP_ID>, <MY_JS_KEY>, <MY_HEROKU_APP_NAME> dans le violon aux valeurs appropriées pour votre application puis cliquez sur "Exécuter"

.

Parse.initialize('<MY_APP_ID>', '<MY_JS_KEY>');
Parse.serverURL = 'https://<MY_HEROKU_APP_NAME>.herokuapp.com/Parse'
  1. Vous devriez recevoir l'alerte ci-dessous pour vous informer que votre nouveau serveur Parse fonctionne correctement

enter image description here

REMARQUE:

Si vous utilisez l'outil jsfiddle avec plusieurs instances de serveur d'analyse, vous pouvez obtenir l'erreur "jeton de session non valide". Si cela se produit, ouvrez la console de développement et supprimez toutes les clés "d'analyse" du stockage local, après cela, cela devrait fonctionner:

enter image description here


Migrez vos données existantes depuis Parse

Vous devez le faire au moins une fois avec une application de test avant de migrer une application de production. En outre, il semble que l'héritage files de votre ancienne application peut ne pas encore être transféré, voir ce problème GitHub

  1. Avant de migrer , si votre nouveau MongoDB contient des données, la migration échouera. Si vous venez de tester le serveur et créé et objet, allez à https://dashboard.heroku.com/apps/<MY_HEROKU_APP_NAME>/resources, cliquez sur "MongoLab" à côté de son icône, puis, sur la page suivante, cliquez sur "Supprimer toutes les collections"
  2. Aller à https://dashboard.parse.com/apps/<APP_NAME>/settings/general<APP_NAME> est le nom de votre application d'analyse
  3. Faites défiler la page et cliquez sur "Migrer"
  4. Dans le modal, dans la zone grise (qui ne ressemble pas beaucoup à une entrée ...) entrez le MONGOLAB_URI que nous avons noté précédemment
  5. Cliquez sur "Commencer la migration"

enter image description here


  1. Lorsque la migration est terminée, cliquez sur "Finaliser" puis, dans la fenêtre contextuelle, cliquez sur "OK" lorsque la migration est terminée, toutes vos données seront dans votre nouvelle base de données MongoDB.

enter image description here


  1. Pour l'instant, votre tableau de bord Parse continuera d'afficher vos données qui résident désormais dans la nouvelle base de données. Pour tout tester, revenez au test jsFiddle que nous avons utilisé auparavant et exécutez-le à nouveau. Maintenant, accédez à votre tableau de bord Parse et vous devriez voir la classe et la ligne nouvellement ajoutées. Notez que lorsque j'ai utilisé le nouveau tableau de bord Parse, je pouvais voir le nombre de lignes mais la zone de ligne était entièrement vide. Je suis revenu à l'ancien tableau de bord Parse et j'ai tout vu bien.
57
DelightedD0D