(Это руководство изначально было опубликовано на портале документации Windows Azure в январе 2013 г.) d
Приветствую, искатели приключений! Добро пожаловать в MongoDB как услуга. Вы хотите создать приложение Node.js в Windows Azure с MongoDB с помощью надстройки MongoLab Azure Store?
В этом уроке вы будете:
- Предоставление базы данных. Дополнительный модуль MongoLab для Windows Azure Store предоставит вам базу данных MongoDB, размещенную в облаке Windows Azure и управляемую платформой облачной базы данных MongoLab .
- Создайте приложение — это будет простое приложение Node.js для ведения списка задач.
- Развертывание приложения. Связав несколько хуков конфигурации, мы сделаем наш код быстрым.
- Управление базой данных. Наконец, мы покажем вам веб-портал управления базами данных MongoLab, где вы можете легко находить, визуализировать и изменять данные.
В любое время на протяжении всего этого урока, не стесняйтесь, пишите на адрес [email protected], если у вас есть какие-либо вопросы. Чтобы выполнить это руководство, вам нужна учетная запись Windows Azure с включенной функцией веб-сайтов Windows Azure. Вы можете создать бесплатную пробную учетную запись и включить функции предварительного просмотра всего за пару минут. Подробнее см. В разделе Создание учетной записи Windows Azure и включение учебника по функциям предварительного просмотра .
Кроме того, убедитесь, что у вас установлено следующее:
Быстрый старт
Если вы знакомы с Windows Azure Store, воспользуйтесь этим разделом, чтобы быстро начать работу. В противном случае, продолжайте Предоставлять базу данных ниже.
- Откройте Windows Azure Store.
- Нажмите на дополнение к MongoLab.
- Нажмите на надстройку MongoLab в списке дополнений, а затем нажмите « Информация о подключении» .
- Скопируйте MONGOLAB_URI в буфер обмена. Этот URI содержит имя пользователя и пароль вашей базы данных. Относитесь к ней как к конфиденциальной информации и не делитесь ею.
- Добавьте значение в список «Строки подключения» в меню «Конфигурация» веб-приложения Windows Azure:
- В качестве имени введите MONGOLAB_URI.
- В поле Value вставьте строку подключения, которую мы получили в предыдущем разделе.
- Выберите Custom в раскрывающемся списке Type (вместо SQLAzure по умолчанию).
- Запустите,
npm install mongoose
чтобы получить Mongoose, драйвер узла MongoDB. - Установите хук в своем коде для получения URI соединения MongoLab из переменной среды и подключитесь:
var mongoose = require('mongoose'); ... var connectionString = process.env.CUSTOMCONNSTR_MONGOLAB_URI ... mongoose.connect(connectionString);
Примечание. Windows Azure добавляет префикс CUSTOMCONNSTR_ к первоначально объявленной строке подключения, поэтому код ссылается на CUSTOMCONNSTR_MONGOLAB_URI. вместо MONGOLAB_URI .
Теперь перейдем к полному уроку …
Предоставление базы данных
Вы можете подписаться на полностью управляемую базу данных MongoDB, размещенную в Azure, в Магазине Windows Azure. Для этого выполните следующие действия:
- Войдите на портал управления Windows Azure.
- Нажмите Новый .
- Выберите Магазин .
- Выберите MongoLab. Вы можете найти нас в категории « Службы приложений », а также в разделе « Все» .
- Нажмите Далее . Отобразится запись магазина MongoLab.
- Выберите желаемый вариант подписки .
- Введите имя для вашей базы данных. Ваше имя может содержать только буквенно-цифровые символы, тире, точки и подчеркивания. MongoLab также требует, чтобы это имя было уникальным, поэтому вас могут попросить повторно подать запрос, если имя занято.
- Выберите нужный регион .
Важное замечание : Для максимальной производительности и безопасности мы настоятельно рекомендуем подготовить ваш надстройку MongoLab и веб-сайт Windows Azure в одном регионе. Начиная с этой даты в блоге дополнение MongoLab доступно в регионах Восточной и Западной США. - Нажмите Далее .
- Просмотрите информацию о покупке в вашем магазине и нажмите « Купить» для подтверждения.
- Кнопка прогресса на панели инструментов отображает ваш статус подготовки. Сообщение об успешном завершении отображается после завершения подготовки.
Поздравляем! MongoLab только что подготовил базу данных MongoDB в выбранном вами регионе Windows Azure. Теперь у вас есть доступ к нашему интерфейсу управления и поддержке 24/7.
Создать приложение
В этом разделе вы настроите свою среду разработки и создадите код для веб-приложения со списком основных задач, используя Node.js, Express и MongoDB. Express предоставляет инфраструктуру View Controller для узла, в то время как Mongoose является драйвером для связи с MongoDB в узле.
Настроить
Генерация лесов и установка модулей
- В командной строке создайте и перейдите в каталог списка задач . Это будет каталог вашего проекта.
- Введите следующую команду, чтобы установить экспресс.
npm install express -g
-g
указывает на глобальный режим, который мы используем, чтобы сделать экспресс- модуль доступным без указания пути к каталогу. Если вы получили сообщение об ошибке: EPERM, chmod ‘/ usr / local / bin / express’ , используйте sudo для запуска npm с более высоким уровнем привилегий.Вывод этой команды должен выглядеть примерно так:
[email protected] /usr/local/lib/node_modules/express ├── [email protected] ├── [email protected] ├── [email protected] └── [email protected]
Чтобы создать леса, которые будут использоваться для этого приложения, используйте команду express :
express
Вывод этой команды должен выглядеть примерно так:
create : . create : ./package.json create : ./app.js create : ./public create : ./public/javascripts create : ./public/images create : ./public/stylesheets create : ./public/stylesheets/style.css create : ./routes create : ./routes/index.js create : ./views create : ./views/layout.jade create : ./views/index.jade dont forget to install dependencies: $ cd . && npm install
После выполнения этой команды у вас должно появиться несколько новых каталогов и файлов в каталоге списка задач .
Введите следующее, чтобы установить модули, описанные в
файле package.json :
npm install
Вывод этой команды должен выглядеть примерно так:
[email protected] ./node_modules/express ├── [email protected] ├── [email protected] ├── [email protected] └── [email protected] [email protected] ./node_modules/jade ├── [email protected] └── [email protected]
-
Package.json файл один из файлов , созданных с помощью экспресс — команды. Этот файл содержит список дополнительных модулей, необходимых для приложения Express. Позже, когда вы развернете это приложение на веб-сайте Windows Azure, этот файл будет использоваться для определения, какие модули необходимо установить в Windows Azure для поддержки вашего приложения.
- Затем введите следующую команду, чтобы установить модуль Mongoose локально, а также сохранить запись для него в файле package.json :
npm install mongoose --save
Вывод этой команды должен выглядеть примерно так:
[email protected]./node_modules/mongoose ├── [email protected]└── [email protected]
Вы можете спокойно игнорировать любое сообщение об установке синтаксического анализатора bson для C ++.
Код
Теперь, когда наша среда и леса готовы, мы расширим базовое приложение, созданное командой express , добавив файл task.js, который содержит модель для ваших задач. Вы также изменить существующий app.js и создать новый tasklist.js файл контроллера , чтобы использовать модель.
Создать модель
- В каталоге списка задач создайте новый каталог с именем models .
- В модели каталога, создать новый файл с именем task.js . Этот файл будет содержать модель для задач, созданных вашим приложением.
- Добавьте следующий код в файл task.js :
var mongoose = require('mongoose') , Schema = mongoose.Schema; var TaskSchema = new Schema({ itemName : String , itemCategory : String , itemCompleted : { type: Boolean, default: false } , itemDate : { type: Date, default: Date.now } }); module.exports = mongoose.model('TaskModel', TaskSchema)
- Сохраните и закройте файл task.js.
Создать контроллер
- В каталоге tasklist / маршруты создайте новый файл с именем tasklist.js и откройте его в текстовом редакторе.
- Добавьте следующий код в tasklist.js . Это загружает мангуст модуль и модели задачи определены в task.js . Функция TaskList используется для создания соединения с сервером MongoDB на основе значения соединения и предоставляет методы showTasks , addTask и completeTasks :
var mongoose = require('mongoose') , task = require('../models/task.js'); module.exports = TaskList; function TaskList(connection) { mongoose.connect(connection); } TaskList.prototype = { showTasks: function(req, res) { task.find({itemCompleted: false}, function foundTasks(err, items) { res.render('index',{title: 'My ToDo List ', tasks: items}) }); }, addTask: function(req,res) { var item = req.body.item; newTask = new task(); newTask.itemName = item.name; newTask.itemCategory = item.category; newTask.save(function savedTask(err){ if(err) { throw err; } }); res.redirect('/'); }, completeTask: function(req,res) { var completedTasks = req.body; for(taskId in completedTasks) { if(completedTasks[taskId]=='true') { var conditions = { _id: taskId }; var updates = { itemCompleted: completedTasks[taskId] }; task.update(conditions, updates, function updatedTask(err) { if(err) { throw err; } }); } } res.redirect('/'); } }
- Сохраните файл tasklist.js .
Изменить представление индекса
- Перейдите в каталог views и откройте файл index.jade в текстовом редакторе.
- Замените содержимое файла index.jade приведенным ниже кодом. Это определяет представление для отображения существующих задач, а также форму для добавления новых задач и маркировки существующих как выполненных.
h1= title form(action="/completetask", method="post") table(border="1") tr td Name td Category td Date td Complete each task in tasks tr td #{task.itemName} td #{task.itemCategory} - var day = task.itemDate.getDate(); - var month = task.itemDate.getMonth() + 1; - var year = task.itemDate.getFullYear(); td #{month + "/" + day + "/" + year} td input(type="checkbox", name="#{task._id}", value="#{!task.itemCompleted}", checked=task.itemCompleted) input(type="submit", value="Update tasks") hr form(action="/addtask", method="post") table(border="1") tr td Item Name: td input(name="item[name]", type="textbox") tr td Item Category: td input(name="item[category]", type="textbox") input(type="submit", value="Add item")
Сохраните и закройте
файл index.jade .
Заменить app.js
- В каталоге списка задач откройте файл app.js в текстовом редакторе. Этот файл был создан ранее с помощью команды express .
- Замените содержимое следующим кодом. Это инициализирует TaskList со строкой соединения для сервера MongoDB, добавляет функции, определенные в tasklist.js как маршруты, и запускает сервер приложений:
var express = require('express') , routes = require('./routes') , user = require('./routes/user') , http = require('http') , path = require('path'); var TaskList = require('./routes/tasklist'); var taskList = new TaskList(process.env.CUSTOMCONNSTR_MONGOLAB_URI); var app = express(); app.configure(function(){ app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(path.join(__dirname, 'public'))); }); app.configure('development', function(){ app.use(express.errorHandler()); }); app.get('/', taskList.showTasks.bind(taskList)); app.post('/addtask', taskList.addTask.bind(taskList)); app.post('/completetask', taskList.completeTask.bind(taskList)); http.createServer(app).listen(app.get('port'), function(){ console.log("Express server listening on port " + app.get('port')); });
- Обратите внимание на следующий код выше:
var taskList =newTaskList(process.env.CUSTOMCONNSTR_MONGOLAB_URI);
Конструктор TaskList принимает URI соединения MongoDB. Здесь вы получаете доступ к переменной среды, которую вы настроите позже. Если у вас есть локальный экземпляр mongo, работающий в целях разработки, вы можете временно установить для этого значения значение «localhost» вместо
process.env.CUSTOMCONNSTR_MONGOLAB_URI
. - Сохраните файл app.js.
Разверните приложение
Теперь, когда приложение разработано, пришло время создать веб-сайт Windows Azure для его размещения, настроить этот веб-сайт и развернуть код. Центральным в этом разделе является использование строки подключения MongoDB (URI). Вы собираетесь настроить переменную среды на своем веб-сайте с этим URI, чтобы отделить URI от вашего кода. Вы должны рассматривать URI как конфиденциальную информацию, так как она содержит учетные данные для подключения к вашей базе данных.
Шаги в этом разделе используют инструменты командной строки Windows Azure для создания нового веб-сайта Windows Azure, а затем используют Git для развертывания приложения. Для выполнения этих шагов у вас должна быть подписка Windows Azure.
Установите средство командной строки Windows Azure для Mac и Linux
Чтобы установить инструменты командной строки, используйте следующую команду:
npm install azure-cli -g
Если вы уже установили Windows Azure SDK для Node.js из Центра разработчиков Windows Azure , то инструменты командной строки уже должны быть установлены. Для получения дополнительной информации см. Средство командной строки Windows Azure для Mac и Linux .
Хотя средства командной строки Windows Azure были созданы в основном для пользователей Mac и Linux, они основаны на Node.js и должны работать в любой системе, способной работать на Node.
Импорт настроек публикации
Перед использованием инструментов командной строки в Windows Azure необходимо сначала загрузить файл, содержащий информацию о вашей подписке. Выполните следующие шаги, чтобы загрузить и импортировать этот файл.
- В командной строке введите следующую команду, чтобы запустить браузер и перейти на страницу загрузки. При появлении запроса войдите в систему, используя учетную запись, связанную с вашей подпиской.
azure account download
Загрузка файла должна начаться автоматически; если это не так, вы можете нажать на ссылку в начале страницы, чтобы загрузить файл вручную.
- После завершения загрузки файла используйте следующую команду для импорта настроек:
azure account import<path-to-file>
Укажите путь и имя файла настроек публикации, загруженного на предыдущем шаге. После завершения команды вы должны увидеть вывод, подобный следующему:
info: Executing command account import info: Found subscription: subscriptionname info: Setting default subscription to: subscriptionname warn: The '/Users/user1/.azure/publishSettings.xml' file contains sensitive information. warn: Remember to delete it now that it has been imported. info: Account publish settings imported successfully info: account iomport command OK
-
OK
- После завершения импорта вы должны удалить файл настроек публикации, так как он больше не нужен и содержит конфиденциальную информацию о вашей подписке Windows Azure.
Создайте новый веб-сайт и нажмите ваш код
Создать веб-сайт в Windows Azure очень просто. Если это ваш первый веб-сайт Windows Azure, вы должны использовать портал. Если у вас уже есть хотя бы один, перейдите к шагу 7.
- На портале Windows Azure нажмите « Создать» .
- Выберите Compute> Веб-сайт> Быстрое создание .
- Введите префикс URL. Выберите имя, которое вы предпочитаете, но имейте в виду, что оно должно быть уникальным («mymongoapp», скорее всего, будет недоступно).
- Выберите тот же регион, что и надстройка MongoLab, которую вы указали выше.
- Нажмите Создать веб-сайт .
- Когда создание веб-сайта завершится, щелкните имя веб-сайта в списке веб-сайтов. Отображается панель инструментов веб-сайта.
- Нажмите Set Up Git публикации под быстрым взглядом , и введите желаемое GIT имя пользователя и пароль. Вы будете использовать этот пароль при переходе на свой веб-сайт (на шаге 9).
- Если вы создали свой веб-сайт, используя шаги, описанные выше, следующая команда завершит процесс. Однако, если у вас уже есть несколько веб-сайтов Windows Azure, вы можете пропустить вышеуказанные шаги и создать новый веб-сайт с помощью этой же команды. Из каталога проекта вашего списка задач :
azure site create myuniquesitename --git
Замените «myuniquesitename» уникальным именем сайта для вашего сайта. Если веб-сайт создается как часть этой команды, вам будет предложено указать центр данных, в котором он будет расположен. Выберите центр данных, географически близкий к базе данных MongoLab.
--git
Параметр создает:
- локальный репозиторий git в папке списка задач , если таковой не существует.
- ГИТ-пульт под названием «лазурь», который будет использоваться для публикации приложения в Windows Azure.
- iisnode.yml файл, который содержит параметры , используемые Windows Azure для узла хост — приложений.
- файл .gitignore для предотвращения публикации папки node-modules в .git.
- После выполнения этой команды вы увидите вывод, подобный следующему. Обратите внимание, что строка, начинающаяся с « Созданный веб-сайт», содержит URL-адрес веб-сайта.
info: Executing command site create info: Using location southcentraluswebspace info: Executing `git init` info: Creating default web.config file info: Creating a new web site info: Created web site at mongodbtasklist.azurewebsites.net info: Initializing repository info: Repository initialized info: Executing `git remote add azure http://[email protected]/mongodbtasklist.git` info: site create command OK
Используйте следующие команды, чтобы добавить, а затем зафиксировать файлы в вашем локальном репозитории Git:
git add . git commit -m "adding files"
Нажмите свой код:
git push azure master
При отправке последних изменений Git-репозитория на веб-сайт Windows Azure необходимо указать, что целевая ветвь является главной, поскольку она используется для содержимого веб-сайта. Если будет предложено ввести пароль, введите пароль, который вы создали при настройке публикации git для своего веб-сайта выше.
Вы увидите вывод, похожий на следующий. По мере развертывания Windows Azure загрузит все модули npm.
Counting objects: 17, done. Delta compression using up to 8 threads. Compressing objects: 100% (13/13), done. Writing objects: 100% (17/17), 3.21 KiB, done. Total 17 (delta 0), reused 0 (delta 0) remote: New deployment received. remote: Updating branch 'master'. remote: Preparing deployment for commit id 'ef276f3042'. remote: Preparing files for deployment. remote: Running NPM. ... remote: Deploying Web.config to enable Node.js activation. remote: Deployment successful. To https://[email protected]/MongoDBTasklist.git * [new branch] master -> master
Вы почти закончили!
Настройте свою среду
Помните process.env.CUSTOMCONNSTR_MONGOLAB_URI в коде? Мы хотим заполнить эту переменную среды значением, предоставленным Windows Azure во время подготовки базы данных MongoLab.
Получить строку подключения MongoLab
Когда вы предоставляете базу данных MongoLab, MongoLab передает URI подключения к Windows Azure в стандартном формате строки подключения MongoDB. Это значение используется для инициации подключения MongoDB через выбранный вами драйвер MongoDB. Для получения дополнительной информации о строках соединения см. Соединения на mongodb.org. Этот URI содержит имя пользователя и пароль вашей базы данных. Относитесь к ней как к конфиденциальной информации и не делитесь ею.
Вы можете получить этот URI на портале Windows Azure, выполнив следующие действия:
- Выберите дополнения .
- Найдите сервис MongoLab в списке дополнений.
- Выберите имя вашего дополнения, чтобы перейти на страницу дополнения.
- Нажмите Информация о соединении . Ваш URI MongoLab отображает:
- Нажмите кнопку буфера обмена справа от значения MONGOLAB_URI, чтобы скопировать полное значение в буфер обмена.
Добавить строку подключения в переменные среды веб-сайта
Хотя есть возможность вставить URI MongoLab в ваш код, мы рекомендуем настроить его в среде для простоты управления. Таким образом, если URI изменяется, вы можете обновить его через портал Windows Azure, не переходя к коду.
- На портале Windows Azure выберите Веб-сайты .
- Нажмите на название веб-сайта в списке веб-сайтов. Откроется панель инструментов веб-сайта.
- Нажмите Настроить в строке меню.
- Прокрутите вниз до раздела Строки подключения.
- В качестве имени введите MONGOLAB_URI.
- В поле Value вставьте строку подключения, которую мы получили в предыдущем разделе.
- Выберите Custom в раскрывающемся списке Type (вместо SQLAzure по умолчанию ).
- Нажмите Сохранить на панели инструментов. Примечание. Windows Azure добавляет префикс CUSTOMCONNSTR_ к этой переменной, поэтому приведенный выше код ссылается на CUSTOMCONNSTR_MONGOLAB_URI.
Успех!
Запустите azure site browse
из каталога проекта, чтобы автоматически открыть браузер, или откройте браузер и вручную перейдите по URL вашего веб-сайта (myuniquesite.azurewebsites.net):
Управление базой данных
Поздравляем! Вы только что запустили приложение Node.js, поддерживаемое базой данных MongoDB, размещенной на MongoLab! Теперь, когда у вас есть база данных MongoLab, вы можете обратиться по адресу [email protected] с любыми вопросами или проблемами, касающимися вашей базы данных, или для помощи с MongoDB или самим драйвером узла. Удачи там!
Чтобы получить доступ к пользовательскому интерфейсу MongoLab, выполните следующие действия:
- Выберите дополнения .
- Найдите ваш сервис MongoLab в вашем списке дополнений.
- Нажмите на название вашего дополнения, чтобы перейти на страницу дополнения.
- Нажмите Управление . Откроется новая вкладка браузера с домашней страницей базы данных MongoLab:
Отсюда вы можете выбрать конкретную коллекцию и перейти к отдельным документам. Выйдите, когда закончите.
Поздравляем! Вы только что запустили приложение Node.js, поддерживаемое базой данных MongoDB, размещенной на MongoLab! Теперь, когда у вас есть база данных MongoLab, вы можете обратиться по адресу [email protected] с любыми вопросами или проблемами, касающимися вашей базы данных, или для помощи с MongoDB или самим драйвером узла.