Развертывание 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
с любой коллекцией, которую вы должны обновить.
Все, что я сделал, это добавил 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)