2017-03-21 1 views
0

Je suis en train de déployer mon application avec la galaxie d'étoiles filantes à l'aide ci-dessous commandeMongoError: non autorisé sur local pour exécuter la commande en déploiement galaxie d'étoiles filantes

DEPLOY_HOSTNAME=us-east-1.galaxy-deploy.meteor.com meteor deploy icrm.meteorapp.com --settings scalingo.json 

mais je reçois cette erreur

MongoError: not authorized on local to execute command { find: "oplog.rs", filter: {}, sort: { $natural: -1 }, projection: { ts: 1 }, limit: 1 } dans les journaux

dans mon scalingo.json, je l'ai défini comme suit

"galaxy.meteor.com": { 
     "env": { 
      "MONGO_URL": "mongodb://username:[email protected]:37100/icrm", 
      "MONGO_OPLOG_URL": "mongodb://username:[email protected]:37100/local?authSource=icrm", 
      "ROOT_URL": "http://icrm.meteorapp.com/" 
     } 
    } 

et quand j'accède http://icrm.meteorapp.com/ je reçois

503 Service Unavailable: No healthy endpoints to handle the request. 

Je sais que je fais une erreur dans la mise MONGO_OPLOG_URL, je vous écris même nom d'utilisateur et mot de passe dans MONGO_URL et MONGO_OPLOG_URL, je suis en utilisant la version sandbox gratuit, s'il vous plaît aidez-moi à régler ce problème, si possible me suggérer une solution avec la version bac à sable libre ...

Merci beaucoup

+0

Puisque vous utilisez Scalingo MongoDB, vous pouvez probablement sauter juste à # 4 dans ma réponse (cela suppose que Scalingo a fait les étapes # 1-3 pour toi). – jordanwillis

Répondre

0

Il semble certainement que vous avez un problème avec votre configuration de MongoDB. Malheureusement, il y a beaucoup de différences entre les différents fournisseurs de services de mongodb, mais permettez-moi de partager avec vous comment le mien est configuré (peut-être cela vous aidera d'une certaine manière). Je tiens à noter que je gère ma propre instance mongodb à partir d'un serveur cloud Linux (au lieu d'utiliser un service mongodb).

  1. Activer l'autorisation de sécurité (par exemple, il est activé mongod.conf) et assurez-vous que vous avez créé un utilisateur admin (que vous utiliserez pour créer tous vos autres utilisateurs) et un utilisateur que votre application de météores utilisera pour accéder mongodb.

    Vous devez d'abord créer un utilisateur "admin" avec les bons rôles pour ajouter de nouveaux utilisateurs. De la coquille mongo, vous pouvez le faire. Ensuite, à partir du shell, connectez-vous en tant qu'utilisateur ci-dessus et créez votre compte utilisé par votre application météore. Notez, j'appelle ma base de données d'application de météore meteor_db dans cet exemple. Changez cela pour ce que vous voulez.

    db.getSiblingDB("admin").auth("admin", "admin-password"); 
    
    use meteor_db; 
    
    db.createUser(
        { 
        user: "meteor", 
        pwd: "meteor", 
        roles: [ { role: "readWrite", db: "meteor_db" } ] 
        } 
    ); 
    
  2. Cela fait, vous devez configurer MongoDB pour permettre au oplog (qui météore utilisera pour tailing). Pour ce faire, vous devez configurer la réplication et 1 jeu de réplication en modifiant mongod.conf et en modifiant la section replication.

    replication: 
        replSetName: rs0 
    

    Redémarrez mongodb puis lancer la réplication sur le nouveau membre de la coquille mongo (vous devez le faire en tant que root). Modifiez l'exemple ci-dessous avec votre nom d'hôte et votre port si vous n'utilisez pas mongodb avec le numéro de port local et le numéro de port par défaut.

    rs.initiate({_id:"rs0", members: [{"_id":0, "host":"127.0.0.1:27017"}]}); 
    
  3. Maintenant que oplog est activé, vous devez créer un utilisateur qui peut accéder au oplog. C'est l'utilisateur que vous utiliserez pour configurer MONGO_OPLOG_URL (utilisé par météore). À partir du shell mongo, connectez-vous en tant qu'utilisateur admin (créé ci-dessus) et créez le nouvel utilisateur oplogger.

    db.getSiblingDB("admin").auth("admin", "admin-password"); 
    
    admin = db.getSiblingDB("admin"); 
    
    admin.createUser(
        { 
        user: "oplogger", 
        pwd: "oplogger-password", 
        roles: [ { role: "read", db: "local" } ] 
        } 
    ); 
    
  4. Avec toute la configuration effectuée, il vous suffit de définir vos variables d'environnement de météores et redémarrez votre application.

    export MONGO_URL='mongodb://meteor:[email protected]<hostname>:<port>/meteor_db' 
    export MONGO_OPLOG_URL='mongodb://oplogger:[email protected]<hostname>:<port>/local?authSource=admin' 
    

Permettez-moi savoir si vous rencontrez un problème ou avez autre question. En outre, voici quelques ressources supplémentaires que j'ai trouvées utiles quand j'essayais d'obtenir toute cette configuration (peut-être qu'elles aideront également).

+0

pas utile, j'ai eu besoin de la solution en termes d'utilisation mLab – user3931619

+0

Je suis désolé que cela ne vous a pas aidé, mais j'ai vu que personne n'avait essayé de vous offrir de l'aide, alors je me suis dit que je partagerais au moins pour voir si vous pouvez obtenir de l'aide ... sinon vous n'auriez eu aucune réponse. Avez-vous essayé d'utiliser un utilisateur différent pour votre variable d'environnement 'MONGO_OPLOG_URL'? Clairement, c'est une grande différence avec ce que vous essayez de faire et ce qui est commun? Essayez et réfléchissez aux concepts principaux de ma réponse au lieu des spécificités exactes pour voir si cela aide votre problème. Par exemple, vous avez besoin d'un utilisateur différent pour 'MONGO_OPLOG_URL' et' MONGO_URL'. – jordanwillis

+0

vous êtes juste homme @ jordanwillis, je suis juste en train d'essayer cela. – user3931619