MongoDB Atlas jest łatwy i darmowy do skonfigurowania i wdrożenia MongoDB w Heroku. Atlas MongoDB jest powszechnie określany jako platforma aplikacji danych w wielu chmurach. Jest to zintegrowana usługa danych i bazy danych w chmurze, która upraszcza i przyspiesza tworzenie przez użytkowników przy użyciu danych.
Kiedy zaczynasz tworzyć bardziej złożone aplikacje natywne dla chmury, wybór odpowiednich narzędzi i usług wydaje się być dość przytłaczający. Jednak nie jest tak w przypadku wyboru najlepszej usługi DB w chmurze, ponieważ MongoDB Atlas jest najlepszym rozwiązaniem.
Z drugiej strony Heroku to platforma jako usługa (PaaS), która zapewnia programistom możliwość uruchamiania, budowania, manipulowania i obsługi aplikacji w chmurze. Heroku obsługuje wiele języków programowania.
Ten przewodnik po artykule ilustruje, jak wdrożyć MongoDB w Heroku. Będziemy używać wersji MongoDB Atlas, ponieważ łatwo integruje się z większością aplikacji Heroku. Ten proces może początkowo wydawać się skomplikowany, ale zdasz sobie sprawę, że nic nie jest skomplikowane, gdy zagłębisz się w niego głęboko. Wystarczy ustawić parametry połączenia klastra MongoDB Atlas na znaną zmienną konfiguracyjną Heroku i gotowe.
Wersja Atlas to w pełni zarządzana usługa MongoDB w chmurze, która automatyzuje zarządzanie klastrami MongoDB w chmurze. Oferuje użytkownikom automatyczne skalowanie, automatyczne tworzenie kopii zapasowych, kompletne zarządzanie pakietem, narzędzia analityczne i błąd tolerancji wielu AZ. MongoDB Atlas jest jednym z najbardziej wyrafinowanych DBaaS.
Postępuj zgodnie z instrukcjami podanymi w niniejszym dokumencie, aby dowiedzieć się, jak uruchomić MongoDB i jak szybko działać. Będziesz także mógł zobaczyć, jak połączyć klaster MongoDB Atlas z aplikacjami Heroku, postępując zgodnie ze szczegółowym przewodnikiem zawartym w tym artykule.
Jak wdrożyć MongoDB w Heroku
W tym przewodniku po artykułach założono, że spełnione są następujące wymagania wstępne:
- Dobrze znasz MongoDB i napisałeś aplikacje MongoDB
- Jesteś zaznajomiony z Heroku i wdrożyłeś już aplikacje Heroku
- Zainstalowałeś Heroku CLI
- Znasz dobrze Git i zainstalowałeś go.
Ze wspomnianymi warunkami wstępnymi, dowiedzmy się więcej na temat omówiony powyżej.
Konfigurowanie klastra MongoDB Atlas
Najpierw przyjrzymy się, jak skonfigurować klaster MongoDB Atlas w mniej niż pięciu krokach.
Krok 1:Tworzenie konta MongoDB Atlas
Uwaga: Jeśli utworzyłeś już konto MongoDB przy użyciu swojego adresu e-mail, pomiń proces rejestracji i zaloguj się na swoje konto.
Rejestracja nowego konta MongoDB Atlas jest bardzo prosta. Do rejestracji możesz użyć swojego adresu e-mail lub konta Google.
Proces jest całkowicie darmowy; dlatego nie musisz się martwić o ponoszenie dodatkowych opłat.
Kliknij ten link, aby bezpłatnie zarejestrować konto MongoDB Atlas. Wystarczy wpisać swoje dane i kliknąć przycisk „Rozpocznij bezpłatnie”, aby otrzymać bezpłatne konto Atlas.
Po utworzeniu konta Atlas przejdź do następnego kroku
Krok 2:Tworzenie projektu i organizacji
MongoDB Atlas domyślnie poprosi o utworzenie organizacji i projektu po zakończeniu procesu rejestracji. Szybko wypełnij wymagane dane, aby zakończyć ten proces i przejść do następnego kroku. Organizacja i projekt zostaną wykorzystane do wdrożenia Twojego klastra w przyszłości.
Krok 3:Wdróż klaster
W tej fazie wybierzesz klaster spośród różnych opcji klastra. Na potrzeby tego przewodnika po artykule użyjemy opcji „Shared Cluster”, która jest bezpłatną opcją klastra udostępnianą przez MongoDB Atlas. Poniżej opcji „Udostępniony klaster” kliknij „Utwórz”.
Zostaniesz poproszony o wybranie kilku opcji dla swojego klastra na następnej stronie, jak zaznaczono poniżej:
Dostawca i region chmury
Tutaj musisz wybrać, gdzie zostanie wdrożony Twój klaster. Niezbędne jest wybranie regionu najbliższego Twojej aplikacji. Najlepiej byłoby wybrać region stały, aby zminimalizować problemy związane z opóźnieniami. Będziemy używać tego Regionu, „N. Virginia (us-east-1)” z AWS jako dostawcą chmury źródłowej dla tego przewodnika. Wybraliśmy AWS jako naszego dostawcę chmury, ponieważ będziemy wdrażać na Heroku i hostować ich infrastrukturę na AWS.
Poziom klastra
W tej podsekcji zobaczysz dostępne warstwy klastra dla wybranej przez nas opcji klastra, w tym przypadku udostępnionego klastra. Tutaj zobaczysz porównanie pamięci RAM, pamięci masowej, poziomów ceny podstawowej i vCPU. Te porównania pomogą Ci wybrać odpowiednią warstwę odpowiednią dla Twojego projektu. W tym przewodniku zostawimy go do domyślnej warstwy „M0 Sandbox”.
Dodatkowe ustawienia
Ta sekcja zależy od wybranego poziomu. W zależności od wybranego poziomu możesz uzyskać dodatkowe ustawienia. Ustawienia te będą obejmować opcje tworzenia kopii zapasowych i wersje MongoDB do wdrożenia. Wybierz MongoDB w wersji 4.4 i pozostaw opcję tworzenia kopii zapasowej wyłączoną.
Nazwa klastra
To jest ostatnia opcja. Tutaj pomogłoby, gdybyś nazwał swój klaster. Nazwę nasz klaster „Leafix”. Pamiętaj, że po utworzeniu klastra nie będzie można go zmienić.
Uwaga:Zaleca się przejrzenie wybranych opcji i wprowadzenie niezbędnych zmian przed utworzeniem klastra za pomocą przycisku „Utwórz klaster”.
Krok 4:Utwórz użytkownika bazy danych dla nowo utworzonego klastra
MongoDB Atlas wymaga, aby klienci uwierzytelniali się jako użytkownicy bazy danych MongoDB w celu uzyskania dostępu do klastrów. Wykonaj podane kroki, aby utworzyć użytkownika bazy danych dla swojego klastra.
- Przejdź do sekcji „Dostęp do bazy danych”. Znajduje się pod zakładką „Bezpieczeństwo” po lewej stronie.
- Kliknij opcję „Dodaj nowego użytkownika bazy danych”.
- Pojawi się monit. Wprowadź swoją metodę uwierzytelniania i uprawnienia użytkownika bazy danych
- Użyj „Hasła” jako metody uwierzytelniania i podaj hasło i nazwę użytkownika.
Uwaga: Zdecydowanie zaleca się automatyczne generowanie silnego hasła z Atlasu, aby zapobiec komplikacjom związanym z brakiem bezpieczeństwa. Po automatycznym wygenerowaniu hasła skopiuj je i zapisz w dogodnym miejscu, aby łatwo je odzyskać w przyszłości. Ten krok jest niezbędny, ponieważ będziemy wymagać hasła podczas łączenia się z klastrem.
- Przyznaj użytkownikowi największe uprawnienia, wybierając opcję „Administrator Atlasu”.
- Gdy skończysz, kliknij „Dodaj użytkownika”, aby utworzyć użytkownika bazy danych.
Krok 5:Przyznaj dostęp do klastra autoryzowanych adresów IP
Jest to ostatni krok podczas konfigurowania klastra MongoDB Atlas. Ta sekcja wybierze adresy IP, które pozwolą nam uzyskać dostęp do klastra Atlas. Aby udzielić autoryzacji, wykonaj czynności wymienione w niniejszym dokumencie:
- W sekcji „Zabezpieczenia” wybierz „Dostęp do sieci”.
- Następnie wybierz „Dodaj adres IP”.
- Wybierz „Zezwól na dostęp z dowolnego miejsca” i kliknij przycisk „Potwierdź”, aby zakończyć proces.
To wszystko. Pomyślnie skonfigurowałeś klaster MongoDB Atlas.
Uwaga :Nie chcesz zezwalać na dostęp tego typu adresu IP w środowisku produkcyjnym ze względu na problemy z bezpieczeństwem. Musisz określić dokładny adres IP swojej aplikacji i jawnie ustawić zakres adresów IP. Ten proces jest dostosowany do zwiększenia bezpieczeństwa Twojego klastra.
Łączenie z klastrem
Aby połączyć się z nowo utworzonym klastrem, postępuj zgodnie z tym przewodnikiem:
- W sekcji „Przechowywanie danych” na lewym pasku nawigacji kliknij „Klastry”.
- Kliknij kartę „Połącz”
- Wybierz wersję sterownika, a następnie skopiuj tylko parametry połączenia
Po zakończeniu zaktualizuj parametry połączenia. Ponownie, nie zapomnij dodać swojej nazwy użytkownika i hasła.
Tworzenie konta Heroku
Założenie konta Heroku jest bardzo proste. Najpierw odwiedź oficjalną stronę Heroku i zarejestruj się, tak jak zrobiliśmy to w MongoDB Atlas. Po uzupełnieniu konta Heroku kontynuuj i zainstaluj Heroku CLI.
Zainstaluj interfejs Heroku CLI
Ważne jest, aby upewnić się, że masz zainstalowany Git na swoim systemie Linux, ponieważ Heroku CLI wymaga Git. Git to popularny system kontroli wersji, powszechnie używany przez większość programistów. Instalacja Gita jest bardzo prosta. Otwórz terminal i wykonaj poniższe polecenie:
sudo apt-get install git-all
Wyjście:
To polecenie zainstaluje Git w systemie Linux. Następnie uruchom to inne polecenie, aby zainstalować Heroku w systemie Linux:
sudo snap install --classic heroku
Wyjście:
Daj terminalowi czas na wykonanie polecenia i całkowite zainstalowanie Heroku.
Zaloguj się i utwórz nową aplikację na stronie Heroku
Uważamy, że uważnie śledziłeś artykuł i utworzyłeś konto Heroku. Jeśli tak, otwórz pulpit nawigacyjny Heroku. Wprowadź dane, których użyłeś podczas tworzenia konta Heroku, aby zalogować się do swojego pulpitu nawigacyjnego. Po zalogowaniu przejdź do następnego kroku, aby utworzyć nową aplikację:
- Przejdź do heroku.com/apps
- Wybierz Nowy>Utwórz nową aplikację>Wybierz region>Utwórz aplikację.
- Bądź cierpliwy podczas tworzenia aplikacji.
- Po zakończeniu procesu zostaniesz przekierowany do pulpitu nawigacyjnego. Wybierz sekcję „Wdrażanie”
Podłączanie aplikacji Heroku do lokalnych repozytoriów
Postępuj zgodnie z instrukcjami wdrażania zawartymi w wybranej wcześniej sekcji wdrażania w tym artykule.
Mimo to zaloguj się do Heroku w sekcji „Wdrażanie”, którą wybraliśmy wcześniej.
Uruchom następujące polecenia (określone również w sekcji Wdrożenie), aby połączyć się z Heroku i zbudować nowe Dyno z katalogu głównego serwera/projektu:
Uwaga: Nawiasy kątowe „<> ” użyte w poniższych przykładach oznaczają podane przez użytkownika wartości identyfikatora/parametru/argumentu. Podczas uruchamiania poleceń należy je pominąć.
# Dodaj pilota Heroku
heroku git:remote -a <name-of-the-newly-created-app>
# Spójrz na dostępne piloty.
# Połączenie z nowym zdalnym repozytorium „heroku” powinno być widoczne.
git remote -v
# W gałęzi programistycznej zatwierdź najnowszą pracę.
git add . git commit -m 'Write a clear, meaningful commit message here.' git push origin <development-branch-name>
# Gałęzie powinny być wyewidencjonowane do gałęzi głównej.
git checkout master
# Aktualizacje z gałęzi deweloperskiej są scalane.
git merge <development-branch-name> git push heroku master
Konfigurowanie Heroku do łączenia się z klastrem MongoDB Atlas przy użyciu zmiennych konfiguracyjnych
Świetnie się bawiliśmy, szybko konfigurując nasz klaster Atlas, ale uważamy, że ta sekcja spodoba Ci się jeszcze bardziej!
Aplikacje Heroku, które są wspierane przez Atlas, są proste do zbudowania. Utwórz zmienną konfiguracyjną na poziomie aplikacji, która zawiera parametry połączenia klastra. Możesz bezpiecznie uzyskać dostęp do tej zmiennej konfiguracyjnej w swojej aplikacji po jej skonfigurowaniu!
Tak to się robi:
Krok 1:Otwórz Heroku CLI i zaloguj się.
heroku login
To polecenie przeniesie Cię do strony logowania Heroku w Twojej przeglądarce internetowej. Kliknij przycisk „Zaloguj się”, jeśli jesteś już zalogowany. Możesz także użyć flagi -i, aby zalogować się z wiersza poleceń.
Krok 2:Utwórz kopię mojej aplikacji demonstracyjnej
Stworzyłem prototypową aplikację Node, która wykorzystuje MongoDB Atlas i którą chciałbym opublikować w Heroku, aby kontynuować tę lekcję. Sklonuj go, a następnie przejdź do następującego katalogu:
git clone https://github.com/adriennetacke/mongodb-atlas-heroku-leaflix-demo.git cd mongodb-atlas-heroku-leaflix-demo
Wyjście:
Krok 3:Zbuduj aplikację Heroku
heroku create leaflix
Wyjście:
Jak widać, nadałem mojemu liścikowi imię.
Uzyskaj parametry połączenia klastra Atlas
Wróć do pulpitu nawigacyjnego klastra Atlas, aby pobrać nasze parametry połączenia.
- Wybierz „Połącz” z menu rozwijanego.
- Wybierz „Połącz swoją aplikację” z menu rozwijanego.
Tutaj znajdziesz parametry połączenia, które będziemy musieli połączyć z naszym klastrem. Zapisz parametry połączenia.
Wklej ciąg połączenia do edytora; wprowadzimy pewne zmiany przed przypisaniem go do zmiennej konfiguracyjnej Heroku.
Atlas z łatwością dołączył nazwę użytkownika bazy danych, którą utworzyliśmy wcześniej, jak widać. Zamień „hasło” na hasło użytkownika osobistej bazy danych, a „dbname” na „sample_mflix”, który jest przykładowym zbiorem danych, którego nasza aplikacja demonstracyjna użyje do uzupełnienia ciągu połączenia i uczynienia go prawidłowym.
Uwaga:Jeśli nie masz hasła dla użytkownika bazy danych, wygeneruj je automatycznie i użyj go w ciągu połączenia. Jeśli ponownie wygenerujesz go automatycznie, pamiętaj, aby go zaktualizować! Przejdź do opcji Dostęp do bazy danych> Kliknij „Edytuj” na użytkowniku bazy danych, dla którego chcesz znaleźć hasło> Zresetuj hasło> Automatycznie wygeneruj kolejne bezpieczne hasło.
Utwórz zmienną konfiguracyjną MONGODB_URI
Teraz, gdy stworzyliśmy go poprawnie, nadszedł czas, aby zapisać nasze parametry połączenia w zmiennej konfiguracyjnej Heroku. Ustaw zmienną konfiguracyjną MONGODB_URI na nasze parametry połączenia:
heroku config:set MONGODB_URI="mongodb+srv://yourUsername:[email protected]/sample_mflix?retryWrites=true&w=majority"
Oto kilka kluczowych punktów, o których należy pamiętać:
- To polecenie składa się tylko z jednej linii.
- Ponieważ format naszych parametrów połączenia zawiera znaki specjalne, musi być ujęty w cudzysłów.
To takie proste! Pomyślnie dodałeś parametry połączenia klastra Atlas do zmiennej konfiguracyjnej Heroku, co pozwala na bezpieczny dostęp do niej po wdrożeniu aplikacji w Heroku.
Uwaga: Możesz również wprowadzić tę zmienną konfiguracyjną w zakładce „Ustawienia” na pulpicie nawigacyjnym Heroku dla swojej aplikacji. Przejdź do Leaflix> Ustawienia w swoich aplikacjach. Kliknij przycisk „Pokaż zmienne konfiguracyjne” w sekcji Zmienne konfiguracyjne i wprowadź tam swoją zmienną konfiguracyjną.
Ostatnim krokiem jest zmiana kodu aplikacji, aby umożliwić dostęp do tych zmiennych.
Korzystanie z wartości zmiennych konfiguracyjnych Heroku do łączenia aplikacji z klastrem MongoDB Atlas
Zauważysz, że zakodowaliśmy na stałe parametry połączenia klastra Atlas w naszej aplikacji demonstracyjnej. Musimy przerobić nasz kod, aby używał wcześniej wygenerowanej zmiennej konfiguracyjnej Heroku.
Zmienne środowiskowe służą do uwidaczniania zmiennych konfiguracyjnych w kodzie aplikacji. Język, który wybierzesz, aby uzyskać dostęp do tych zmiennych, określi, w jaki sposób uzyskasz do nich dostęp; na przykład w Javie użyjesz System.getenv('klucz') wzywa, a w Ruby użyjesz ENV['klucz'] połączeń.
Wiedząc, że nasza aplikacja jest napisana w Node, możemy użyć zmiennej process.env w Node.js, aby połączyć się z naszym klastrem Atlas. Zmień stałą uri w pliku server.js na:
const uri = process.env.MONGODB_URI;
To kończy naszą dyskusję. Nasza aplikacja będzie bezpiecznie uzyskiwać dostęp do parametrów połączenia klastra Atlas po wdrożeniu, ponieważ dodaliśmy je jako zmienną konfiguracyjną Heroku.
Zapisz plik, zatwierdź modyfikację, a następnie zainstaluj w Heroku.
git commit -am "fix: refactor hard-coded connection string to Heroku config var" git push heroku master
Twoja aplikacja została wdrożona! Używając tego polecenia, możesz dwukrotnie sprawdzić, czy co najmniej jedna instancja Leaflix jest uruchomiona:
heroku ps:scale web=1
Będziesz wiedział, że co najmniej jedna instancja jest uruchomiona, jeśli pojawi się komunikat:„Skalowanie hamowni… gotowe, obecnie działa sieć w 1:Bezpłatnie”.
Na koniec przejdź do witryny swojej aplikacji. Możesz to zrobić, postępując zgodnie z poniższymi krokami:
heroku open
Po naciśnięciu przycisku „Potrzebujesz śmiechu?” nasz program wybierze film na podstawie kategorii „Komedia” w obszarze gatunków. Jeśli wszystko jest w porządku, powinieneś zobaczyć coś takiego:w tym przykładzie używany jest zestaw danych sample_mflix, który pochodzi bezpośrednio z naszego klastra Atlas.
Konfigurowanie adresów IP dla Heroku w MongoDB Atlas
Nasz klaster już działa, a nasza aplikacja jest już dostępna w Heroku!
Skonfigurowaliśmy nasz klaster tak, aby akceptował połączenia z dowolnego adresu IP, aby przejść przez przewodnik po artykule. Wolisz ograniczyć dostęp tylko do swojej aplikacji, a w Heroku jest na to kilka opcji.
Pierwszą opcją jest użycie dodatku, aby nadać aplikacji statyczny wychodzący adres IP, którego można użyć do ograniczenia dostępu w Atlasie. Kilka przykładów można znaleźć tutaj.
Inną opcją jest użycie Heroku Private Spaces i użycie statycznych wychodzących adresów IP przestrzeni. Jest to droższy wybór, ale eliminuje dodatkowy dodatek.
Istnieją różne dokumenty i artykuły, które twierdzą, że możesz używać zakresów adresów IP AWS lub Heroku, aby zapewnić dostęp do adresów IP pochodzących z Twojego obszaru AWS lub Heroku Dynos w tych regionach. Chociaż jest to możliwe, nie jest to zalecane, ponieważ takie zakresy mogą z czasem ulec zmianie. Dlatego zamiast tego sugerujemy użycie jednego z dwóch wymienionych powyżej podejść.
Możesz użyć adresów IP swojej aplikacji, aby skonfigurować zaporę sieciową w Atlasie, gdy już je uzyskasz.
Usuń wszelkie istniejące zakresy adresów IP z klastra Atlas, a następnie dodaj je do listy dozwolonych. Możesz to zrobić, postępując zgodnie z procedurą, której użyliśmy do „Dodaj adresy IP i usuń istniejące zakresy adresów IP”.
To wszystko! Pomyślnie wdrożyłeś MongoDB w Heroku