Развертывание Meteor Up, нельзя использовать meteor mongo --url

Я недавно развернул свое приложение Meteor на капле Digital Ocean под управлением Ubuntu 14.04 x32. Я использовал Meteor Up с этим mup.json файл:

{
  // Server authentication info
  "servers": [
    {
      "host": "mycorrecthostname",
      "username": "root",
      "password": "mycorrectpassword"
    }
  ],

  // Install MongoDB in the server, does not destroy local MongoDB on future setup
  "setupMongo": true,

  // WARNING: Node.js is required! Only skip if you already have Node.js installed on server.
  "setupNode": true,

  // WARNING: If nodeVersion omitted will setup 0.10.25 by default. Do not use v, only version number.
  "nodeVersion": "0.10.28",

  // Install PhantomJS in the server
  "setupPhantom": true,

  // Application name (No spaces)
  "appName": "meteor",

  // Location of app (local directory)
  "app": "/my/correct/path/to/app",

  // Configure environment
  "env": {
    "ROOT_URL": "http://mycorrecturl.com"
  },

  // Meteor Up checks if the app comes online just after the deployment
  // before mup checks that, it will wait for no. of seconds configured below
  "deployCheckWaitTime": 15
}

Все отлично работает. Я проверил сайт, и все работает так, как должно. Я также настроил свой ssh ключи с сервером, и может ssh к нему без пароля.

Теперь мне нужно получить удаленный доступ к базе данных сервера. У меня есть некоторые локальные данные в питоне shelf файл, который мне нужен для заполнения моей базы данных. Я понимаю, как подключиться к удаленной базе данных с pymongo, но я пытаюсь получить URI соединения с meteor mongo --url http://mycorrecturl.com/ и он просто возвращает эту ошибку:

Couldn't open a mongo connection: Site does not exist

Какие?? Что здесь не так? Я ожидаю, что он попросит аутентификацию, но просто не существует? Официально запутался.

Ваша помощь ценится заранее!

Обновить

Я искал в моих каталогах сервера, пытаясь успешно запустить meteor mongo там, но несмотря на то, что я установил метеор с curl https://install.meteor.com | /bin/sh, это просто всегда говорит, что я не в каталоге проекта метеора. Даже скрытый .meteor каталог, очевидно, не был каталогом проекта.

Обновить

Я посмотрел более внимательно на документы Meteor Up, и там написано:

Вы не можете получить доступ к MongoDB снаружи сервера. Чтобы получить доступ к оболочке MongoDB, вам нужно сначала войти на сервер по SSH, а затем выполнить следующую команду.

mongo appName

Я попробовал это, и это работает, но этого недостаточно. Мне нужно иметь доступ к базе данных удаленно. Это просто невозможно с развертыванием Meteor Up?

Один из приведенных ниже ответов предполагает, что, установив MONGO_URL в моем env объект, который я в основном буду вручную указывать базе данных, на что нужно ответить. Это точно?

Обновить

Документы Meteor Up говорят следующее:

- это имя базы данных

Итак, по совету одного из ответов я отредактировал свой mup.json включить это:

// Configure environment
"env": {
  "ROOT_URL": "http://localhost/",
  "MONGO_URL": "mongodb://root:mypassword@127.0.0.1:27017/meteor"
  // My appName is "meteor", so that is the name of the database as well.
}

Когда я выполню mup deploy с этими переменными развертывание не выполняется. Вот первая часть ошибки (если вы хотите увидеть остальные, дайте мне знать):

/usr/lib/node_modules/wait-for-mongo/bin/wait-for-mongo:14
    throw err;

Когда я использую mup reconfigure, это не подводит, но тогда сайт просто не может быть найден по его URL. Мне кажется, что MONGO_URL не механизм управления, а просто указатель на внешнюю базу данных, такую ​​как mongohq.

Я думаю, что у меня не будет иного выбора, кроме как прибегнуть к mongo appName конвенция и библиотека ssh python, но я бы хотел найти способ прямого доступа к моей базе данных удаленно и при этом продолжать использовать Meteor Up.

7 ответов

Решение

Невозможно получить удаленный доступ к базе данных, если Meteor Up установлен и настроен для вас. Из документа "Метеор":

Вы не можете получить доступ к MongoDB снаружи сервера. Чтобы получить доступ к оболочке MongoDB, вам нужно сначала войти на сервер по SSH, а затем выполнить следующую команду.

mongo appName

Однако к нему можно получить доступ другими способами. mongo appName интерфейс, если эти программы работают на сервере.

Капли Digital Ocean Ubuntu поставляются с Python 2.7, поэтому использование pymongo возможно. Эта команда свяжет вас:

from pymongo import MongoClient
client = MongoClient()

Это будет автоматически подключаться в mongodb://localhost:27017/

pymongo не является пакетом по умолчанию, поэтому установите pip, а затем использовать pip установить pymongo,

apt-get install python-pip python-dev build-essential
pip install pymongo

Это потому, что вы не установили MONGO_URL в объекте "env".

// Configure environment
"env": {
    "PORT": 58090, # Your application port
    "ROOT_URL": "http://localhost/",
    "MONGO_URL": "mongodb://username:password@127.0.0.1:27017/myDatabase",
    "METEOR_ENV": "production"  # If you need to separate your local environment from production
},

Тогда просто беги mup deploy,

Я думаю, что нашел решение для доступа к БД с помощью mupx на сервере digitalocean ubuntu 14.04.

После развертывания приложения с помощью mupx выполните следующие действия:

Войдите с помощью ssh на свой сервер, затем установите mongo: apt-get install mongodb

Затем запустите mongo Команда на вашем сервере. Попробуйте проверить, существует ли ваша БД, запустив show dbs, Если это так, то use yourdbname, Он должен содержать все данные из вашего запущенного приложения!

Дайте мне знать, если это работает. Удачи.

Мне понадобилось время, чтобы понять это. Невозможно получить доступ к серверу mongodb за пределами вашего хостинг-сервера. Поэтому вы должны ssh сначала на ваш сервер и работайте оттуда. Чтобы подключиться к вашей БД с помощью pymongo, используйте следующее:

client = MongoClient('mongodb://localhost/APPNAME')
posts = client.APPNAME.posts

APPNAME должен быть указан в вашем mup.json подать и заменить posts с любой коллекцией, которую вы должны обновить.

У меня была эта проблема, но я смог использовать 3T MongoChef для этого. В MongoChef есть опция подключения к БД через SSH, и это работает как прелесть. Надеюсь, это поможет другим.

Вот соответствующий экран в MongoChef, откуда вы можете сделать это.

Все, что я сделал, это добавил IP-адрес моего сервера цифровой океанической капли вместо localhost, и это сработало:

env: {
      ROOT_URL: 'http://yourdomain.com',
      MONGO_URL: 'mongodb://104.236.24.66:27017/meteor',
      PORT: 3002,
    },

Использование этого экземпляра Монго в докере для 2-х метеорных приложений.

РЕДАКТИРОВАТЬ: Это зависит от того, как настроен ваш брандмауэр. Проверьте с "UFW статус". Также зависит от того, как развернут ваш монго (какие порты перенаправлены куда; напр.) 0.0.0.0:27017->27017).

Вы можете изменить mongod.conf, чтобы разрешить доступ извне (конечно, немного опасно;)

nano /etc/mongod.conf

# Listen to local interface only. Comment out to listen on all     interfaces.
# bind_ip = 127.0.0.1

затем перезагрузите сервер

service mongod stop
service mongod start

и вы можете получить к нему доступ извне (используя ssh-forwarding в robo-mongo)

Другие вопросы по тегам