MongoDB Atlas е лесен и безплатен за настройка и внедряване на MongoDB на Heroku. Атласът на MongoDB обикновено се нарича платформа за приложения за много облачни данни. Това е интегрирана услуга за данни и облачна база данни, която опростява и ускорява начина, по който потребителите изграждат с данни.
Когато започнете да създавате по-сложни облачни приложения, изборът на подходящи инструменти и услуги обикновено е доста непосилно. Това обаче не е така, когато избирате най-добрата облачна DB услуга, тъй като MongoDB Atlas е най-доброто решение.
От друга страна, Heroku е платформа като услуга (PaaS), която предоставя на разработчиците възможността да стартират, изграждат, манипулират и управляват приложения в облака. Heroku поддържа множество езици за програмиране.
Това ръководство за статия ще илюстрира как да разположите MongoDB на Heroku. Ще използваме версията MongoDB Atlas, тъй като тя лесно се интегрира с повечето приложения на Heroku. Този процес може да изглежда сложен в началото, но ще разберете, че нищо не е сложно, когато се потопите дълбоко в него. Всичко, което е необходимо, е да настроите низа за свързване на клъстера MongoDB Atlas на известна конфигурационна променлива на Heroku и сте готови.
Изданието Atlas е напълно управлявана облачна услуга MongoDB, която автоматизира управлението на MongoDB клъстер в облака. Той предлага на потребителите автоматично мащабиране, автоматизирано архивиране, цялостно управление на пакети, аналитични инструменти и грешка за толерантност към няколко AZ. MongoDB Atlas е сред най-сложните DBaaS.
Следвайте стъпките, предоставени тук, за да научите как да стартирате MongoDB и да работите бързо. Освен това ще можете да видите как да свържете клъстера MongoDB Atlas към приложенията Heroku, като следвате подробното ръководство, предоставено в тази статия.
Как да разположите MongoDB на Heroku
Това ръководство за статия предполага, че имате следните предпоставки:
- Вие сте добре запознати с MongoDB и сте писали приложения за MongoDB
- Запознати сте с Heroku и вече сте разгръщали приложения на Heroku
- Инсталирали сте Heroku CLI
- Запознат сте с Git и сте го инсталирали.
С посочените предпоставки, нека научим повече за темата, обсъдена по-горе.
Настройване на MongoDB Atlas Cluster
Първо, ще разгледаме как да настроим MongoDB Atlas Cluster в по-малко от пет стъпки.
Стъпка 1:Създаване на акаунт в MongoDB Atlas
Забележка: Ако вече сте създали акаунт в MongoDB с вашия имейл адрес, пропуснете процеса на регистрация и влезте в акаунта си.
Регистрирането за нов акаунт в MongoDB Atlas е много лесно. Можете да изберете да използвате своя имейл адрес или акаунта си в Google, за да се регистрирате.
Процесът е напълно безплатен; следователно не е нужно да се притеснявате за допълнителни такси.
Следвайте тази връзка, за да се регистрирате безплатно за акаунт в MongoDB Atlas. Просто попълнете своите данни и кликнете върху бутона „Започнете безплатно“, за да получите своя безплатен акаунт в Atlas.
След като имате акаунт в Atlas, преминете към следващата стъпка
Стъпка 2:Създаване на вашия проект и организация
MongoDB Atlas по подразбиране ще ви подкани да създадете организация и проект след завършване на процеса на регистрация. Бързо попълнете необходимите данни, за да завършите този процес и да преминете към следващата стъпка. Организацията и проектът ще се използват за разгръщане на вашия клъстер в бъдеще.
Стъпка 3:Разгръщане на клъстер
В тази фаза ще изберете клъстер от различни опции за клъстер. В името на това ръководство за статия ще използваме опцията „Споделен клъстер“, която е безплатната опция за клъстер, предоставена от MongoDB Atlas. Под опцията „Споделен клъстер“ кликнете върху „Създаване“.
Ще бъдете подканени да изберете няколко опции за вашия клъстер на следващата страница, както е подчертано по-долу:
Облачен доставчик и регион
Тук от вас се изисква да изберете къде ще бъде разположен вашият клъстер. Важно е да изберете регион, който е най-близо до вашето приложение. В идеалния случай трябва да изберете постоянен регион, за да сведете до минимум проблемите, свързани с латентността. Ще използваме този регион, „N. Вирджиния (us-east-1)“ с AWS като наш доставчик на облак източник за това ръководство. Избрахме AWS като наш доставчик на облак, тъй като ще внедряваме на Heroku и ще хостваме тяхната инфраструктура на AWS.
Клъстерно ниво
В този подраздел ще видите наличните клъстерни нива за опцията за клъстер, която избрахме, в този случай споделените опции за клъстер. Тук ще видите сравнение на RAM, Storage, нива на базова цена и vCPU. Тези сравнения ще ви помогнат да изберете правилното ниво, подходящо за вашия проект. Ще го оставим на ниво „M0 Sandbox“ по подразбиране за това ръководство.
Допълнителни настройки
Този раздел зависи от избраното от вас ниво. Може да получите някои допълнителни настройки в зависимост от избраното ниво. Тези настройки ще включват опции за архивиране и версии на MongoDB, които ще бъдат разгърнати. Изберете MongoDB версия 4.4 и оставете опцията за архивиране изключена.
Име на клъстера
Това е последният вариант. Тук ще ви помогне, ако назовете своя клъстер. Ще нарека нашия клъстер „Leafix“. Не забравяйте, че няма да имате право да го променяте, след като създадете клъстера.
Забележка:Препоръчително е да прегледате избраните опции и да направите необходимите промени, преди да създадете клъстер, като използвате бутона „Създаване на клъстер“.
Стъпка 4:Създайте потребител на DB за новосъздадения клъстер
MongoDB Atlas изисква клиентите да се удостоверяват като потребители на база данни на MongoDB за достъп до клъстери. Следвайте предоставените стъпки, за да създадете потребител на DB за вашия клъстер.
- Отворете секцията „Достъп до база данни“. Намира се под раздела „Сигурност“ от лявата страна.
- Щракнете върху опцията „Добавяне на нов потребител на база данни“.
- Ще се появи подкана. Въведете своя метод за удостоверяване и потребителски права на базата данни
- Използвайте „Парола“ като метод за удостоверяване и посочете паролата и потребителското име.
Забележка: Силно препоръчително е автоматично да генерирате силна парола от Atlas, за да предотвратите усложнения, свързани с несигурността. След като автоматично генерирате паролата, копирайте я и я запазете на удобно място, за да я извлечете лесно в бъдеще. Тази стъпка е жизненоважна, тъй като ще изискваме паролата, докато се свързваме с клъстера.
- Дайте на потребителя най-много привилегии, като изберете опцията „Администратор на Atlas“.
- След като приключите, кликнете върху „Добавяне на потребител“, за да създадете потребител на DB.
Стъпка 5:Предоставете оторизиран достъп до клъстер от IP адреси
Това е последната стъпка при настройването на клъстера MongoDB Atlas. Този раздел ще избере IP адресите, които ни позволяват достъп до клъстера Atlas. За да предоставите разрешение, следвайте стъпките, посочени тук:
- Под „Сигурност“ изберете „Достъп до мрежата“.
- След това изберете „Добавяне на IP адрес“.
- Изберете „Разрешаване на достъп отвсякъде“ и кликнете върху бутона „Потвърждаване“, за да завършите процеса.
Това е всичко. Успешно настроихте своя MongoDB Atlas клъстер.
Забележка :Не искате да разрешавате този тип достъп до IP адрес в производствена среда поради проблеми със сигурността. Трябва да идентифицирате точния IP адрес за вашето приложение и изрично да зададете диапазона на IP адресите. Този процес е пригоден за подобряване на сигурността на вашия клъстер.
Свързване с вашия клъстер
За да се свържете с новосъздадения си клъстер, следвайте това ръководство:
- Под секцията „Съхранение на данни“ в лявата навигационна лента щракнете върху „Клъстери“.
- Щракнете върху раздела „Свързване“.
- Изберете версията на драйвера си, след което копирайте само низа за връзка
След като сте готови, актуализирайте низа за връзка. Отново, не пренебрегвайте да добавите вашето потребителско име и парола.
Създаване на акаунт в Heroku
Създаването на акаунт в Heroku е много лесно. Първо, посетете официалния уебсайт на Heroku и се регистрирайте точно както направихме за MongoDB Atlas. След като завършите акаунта си в Heroku, продължете и инсталирайте Heroku CLI.
Инсталирайте Heroku CLI
Важно е да се уверите, че имате инсталиран Git на вашата Linux OS, тъй като Heroku CLI изисква Git. Git е популярна система за контрол на версиите, често използвана от повечето разработчици. Инсталирането на Git е много лесно. Отворете терминала си и изпълнете командата по-долу:
sudo apt-get install git-all
Изход:
Тази команда ще инсталира Git във вашата Linux OS. След това изпълнете тази друга команда, за да инсталирате Heroku на вашата Linux OS:
sudo snap install --classic heroku
Изход:
Дайте време на терминала да изпълни командата и да инсталира изцяло Heroku.
Влезте и създайте ново приложение на уебсайта на Heroku
Вярваме, че сте следили внимателно статията и сте създали акаунт в Heroku. Ако е така, отворете вашето табло за управление на Heroku. Въведете данните, които сте използвали при създаването на своя Heroku акаунт, за да влезете в таблото си за управление. След като влезете, преминете към следващата стъпка, за да създадете ново приложение:
- Отворете heroku.com/apps
- Изберете Ново>Създаване на ново приложение>Изберете Регион>Създаване на приложение.
- Бъдете търпеливи при създаването на приложението.
- След като процесът приключи, ще бъдете пренасочени към таблото си за управление. Изберете секцията „Внедряване“
Свързване на приложението Heroku с локални хранилища
Следвайте ръководствата за внедряване, предоставени в раздела за разполагане на тази статия, който сте избрали по-рано.
Все пак влезте в Heroku в секцията „Внедряване“, която избрахме по-рано.
Изпълнете следните команди (също посочени в секцията Deploy), за да се свържете с Heroku и да изградите нов Dyno от основната директория на вашия сървър/проект:
Забележка: Ъгловите скоби „<> ” използвани в примерите по-долу обозначават предоставените от потребителя стойности на идентификатор/параметър/аргумент. Когато изпълнявате командите, трябва да ги пропуснете.
# Добавете Heroku дистанционно
heroku git:remote -a <name-of-the-newly-created-app>
# Разгледайте наличните дистанционни.
# Връзката с новото отдалечено хранилище „heroku“ трябва да е видима.
git remote -v
# В клона за разработка попълнете най-новата работа.
git add . git commit -m 'Write a clear, meaningful commit message here.' git push origin <development-branch-name>
# Клоновете трябва да бъдат проверени в главния клон.
git checkout master
# Актуализациите от клона за разработка са обединени.
git merge <development-branch-name> git push heroku master
Настройване на Heroku за свързване към MongoDB Atlas Cluster с помощта на конфигурационни променливи
Много се забавлявахме бързото настройване на нашия Atlas клъстер, но смятаме, че този раздел ще ви хареса още повече!
Приложенията Heroku, които се поддържат от Atlas, са лесни за изграждане. Създайте конфигурационна var на ниво приложение, която съдържа низа за връзка на вашия клъстер. Можете безопасно да получите достъп до тази конфигурационна опция в приложението си, след като бъде настроена!
Ето как го правите:
Стъпка 1:Отворете Heroku CLI и влезте.
heroku login
Тази команда ви отвежда до страницата за влизане в Heroku във вашия уеб браузър. Щракнете върху бутона „Вход“, ако вече сте влезли. Можете също да използвате флага -i, за да влезете от командния ред.
Стъпка 2:Направете копие на моето демонстрационно приложение
Създадох прототип на приложение Node, което използва MongoDB Atlas и което бих искал да публикувам в Heroku, за да продължа този урок. Клонирайте го, след което отидете в следната директория:
git clone https://github.com/adriennetacke/mongodb-atlas-heroku-leaflix-demo.git cd mongodb-atlas-heroku-leaflix-demo
Изход:
Стъпка 3:Създайте приложение Heroku
heroku create leaflix
Изход:
Както можете да видите, дадох име на моя листовник.
Получете своя низ за връзка с Atlas Cluster
Моля, върнете се към таблото за управление на вашия Atlas клъстер, за да извлечете нашия низ за връзка.
- Изберете „Свързване“ от падащото меню.
- Изберете „Свържете приложението си“ от падащото меню.
Низът за връзка, който ще трябва да се свържем с нашия клъстер, ще бъде намерен тук. Запишете низа за свързване.
Поставете низа за връзка в редактор; ще направим някои промени, преди да го присвоим на конфигурационна променлива на Heroku.
Както можете да видите, Atlas лесно включи потребителското име на потребителя на базата данни, който създадохме по-рано. Заменете „паролата“ с паролата на потребителя на вашата лична база данни и „dbname“ с „sample_mflix“, което е примерният набор от данни, който нашето демонстрационно приложение ще използва, за да завърши низа за връзка и да го направи валиден.
Забележка:Ако нямате паролата за потребителя на вашата база данни, генерирайте я автоматично и я използвайте в низа за връзка. Ако го генерирате отново автоматично, не забравяйте да го актуализирате! Отидете на Достъп до база данни> Щракнете върху „Редактиране“ на потребителя на базата данни, за когото искате да намерите паролата> Нулирайте паролата си> Автоматично генериране на друга безопасна парола.
Създайте конфигурационна променлива MONGODB_URI
Сега, когато го създадохме правилно, е време да запазим нашия низ за връзка в конфигурационна променлива на Heroku. Задайте конфигурационната променлива MONGODB_URI на нашия низ за връзка:
heroku config:set MONGODB_URI="mongodb+srv://yourUsername:[email protected]/sample_mflix?retryWrites=true&w=majority"
Ето няколко ключови точки, които трябва да имате предвид:
- Тази команда се състои само от един ред.
- Тъй като форматът на нашия низ за връзка съдържа специални знаци, той трябва да бъде затворен в кавички.
Толкова е просто! Успешно добавихте низа за връзка на вашия Atlas клъстер към конфигурационна променлива на Heroku, което ви позволява сигурен достъп до нея, след като приложението ви бъде разгърнато в Heroku.
Забележка: Можете също да въведете тази конфигурационна опция в раздела „Настройки“ на таблото за управление на Heroku за вашето приложение. Отидете на Leaflix> Настройки във вашите приложения. Щракнете върху бутона „Reveal Config Vars“ в секцията Config Vars и въведете своя config var там.
Последната стъпка е да промените кода на приложението си, за да разрешите достъп до тези променливи.
Използване на Heroku config var стойности за свързване на вашето приложение към MongoDB Atlas Cluster
Ще забележите, че сме кодирали твърдо нашия низ за връзка с клъстер Atlas в нашето демонстрационно приложение. Трябва да преработим нашия код, за да използваме предварително генерираната конфигурационна променлива Heroku.
Променливите на средата се използват за излагане на конфигурационни vars на кода на вашето приложение. Езикът, който сте избрали за достъп до тези променливи, ще определи как ще получите достъп до тях; например в Java бихте използвали System.getenv(‘key’) повиквания, а в Ruby бихте използвали ENV[‘key’] обаждания.
Знаейки, че нашето приложение е написано на Node, можем да използваме променливата process.env в Node.js, за да се свържем с нашия Atlas клъстер. Променете uri константата във файла server.js на:
const uri = process.env.MONGODB_URI;
С това приключваме нашата дискусия. Нашето приложение ще има защитен достъп до нашия низ за връзка с клъстер Atlas, след като бъде разгърнат, защото го добавихме като конфигурационна опция на Heroku.
Запазете файла, извършете модификацията и след това го разгръщайте в Heroku.
git commit -am "fix: refactor hard-coded connection string to Heroku config var" git push heroku master
Вашето приложение вече е внедрено! Използвайки тази команда, можете да проверите отново дали се изпълнява поне един екземпляр на Leaflix:
heroku ps:scale web=1
Ще разберете, че поне един екземпляр е стартиран и работи, ако получите известие, което гласи „Мащабирането на dynos... готово, в момента се изпълнява уеб на 1:Free.“
Накрая отидете до уебсайта на приложението си. Можете да направите това, като се придържате към стъпките по-долу:
heroku open
Когато натиснете „Имате нужда от смях?“ бутона, нашият софтуер ще избере филм въз основа на категорията „Комедия“ в областта на жанровете. Ако всичко е наред, трябва да видите нещо подобно:в този пример се използва наборът от данни sample_mflix, който идва направо от нашия Atlas клъстер.
Конфигуриране на IP адреси за Heroku в MongoDB Atlas
Нашият клъстер вече работи и приложението ни вече е на живо в Heroku!
Настроихме нашия клъстер да приема връзки от всеки IP адрес, за да ни преведе през ръководството за статия. Предпочитате да ограничите достъпа само до приложението си и в Heroku има няколко опции за това.
Първата опция е да използвате добавка, за да дадете на приложението си статичен изходящ IP адрес, който можете да използвате за ограничаване на достъпа в Atlas. Някои примери можете да намерите тук.
Друга възможност е да използвате Heroku Private Spaces и да използвате статичните изходящи IP адреси на пространството. Това е по-скъп избор, но елиминира допълнителна добавка.
Има различни документи и статии, които твърдят, че можете да използвате диапазони на AWS или Heroku IP, за да предоставите достъп до IP адреси, произхождащи от вашата AWS зона или Heroku Dynos в тези региони. Въпреки че това е възможно, не се препоръчва, тъй като такива диапазони могат да се променят с течение на времето. Затова вместо това предлагаме да използвате един от двата подхода, изброени по-горе.
Можете да използвате IP адреса(ите) за вашето приложение, за да конфигурирате защитната си стена в Atlas, след като ги имате.
Премахнете всички съществуващи IP диапазони от вашия Atlas клъстер, след което ги добавете към вашия списък с разрешени. Можете да направите това, като следвате процедурата, която използвахме за „Добавяне на IP адреси и изтриване на съществуващите IP диапазони.“
Това е всичко! Успешно разположихте MongoDB на Heroku