MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách triển khai MongoDB trên Heroku

MongoDB Atlas dễ dàng và miễn phí để thiết lập và triển khai MongoDB trên Heroku. MongoDB Atlas thường được gọi là nền tảng ứng dụng dữ liệu đa đám mây. Đây là một dịch vụ dữ liệu và đám mây DB được tích hợp giúp đơn giản hóa và tăng tốc cách người dùng xây dựng với dữ liệu.

Khi bạn bắt đầu xây dựng các ứng dụng gốc đám mây phức tạp hơn, việc lựa chọn các công cụ và dịch vụ thích hợp có xu hướng khá áp đảo. Tuy nhiên, đó không phải là trường hợp khi chọn dịch vụ đám mây DB tốt nhất, vì MongoDB Atlas là giải pháp tốt nhất của bạn.

Mặt khác, Heroku là Nền tảng như một dịch vụ (PaaS) cung cấp cho các nhà phát triển khả năng chạy, xây dựng, thao tác và vận hành các ứng dụng trên đám mây. Heroku hỗ trợ vô số ngôn ngữ lập trình.

Hướng dẫn bài viết này sẽ minh họa cách triển khai MongoDB trên Heroku. Chúng tôi sẽ sử dụng phiên bản MongoDB Atlas vì nó dễ dàng tích hợp với hầu hết các ứng dụng Heroku. Quá trình này thoạt nghe có vẻ phức tạp, nhưng bạn sẽ nhận ra không có gì phức tạp khi bạn đi sâu tìm hiểu về nó. Tất cả những gì cần thiết là đặt chuỗi kết nối cụm MongoDB Atlas của bạn thành một biến cấu hình Heroku đã biết và bạn đã sẵn sàng.

Phiên bản Atlas là một dịch vụ MongoDB trên đám mây được quản lý hoàn toàn, tự động hóa việc quản lý cụm MongoDB trên đám mây. Nó cung cấp cho người dùng khả năng tự động mở rộng quy mô, sao lưu tự động, quản lý bộ hoàn chỉnh, các công cụ phân tích và khả năng chịu lỗi nhiều AZ. MongoDB Atlas là một trong những DBaaS phức tạp nhất.

Làm theo các bước được cung cấp ở đây để tìm hiểu cách thiết lập và chạy MongoDB một cách nhanh chóng. Bạn cũng có thể xem cách kết nối cụm MongoDB Atlas với các ứng dụng Heroku bằng cách làm theo hướng dẫn chuyên sâu được cung cấp trong bài viết này.

Cách triển khai MongoDB trên Heroku

Hướng dẫn bài viết này giả định rằng bạn có các điều kiện tiên quyết sau:

  1. Bạn thành thạo với MongoDB và đã viết các ứng dụng MongoDB
  2. Bạn quen thuộc với Heroku và đã triển khai các ứng dụng Heroku trước đây
  3. Bạn đã cài đặt Heroku CLI
  4. Bạn am hiểu về Git và đã cài đặt nó.

Với các điều kiện tiên quyết đã đề cập, chúng ta hãy tìm hiểu thêm về chủ đề được thảo luận ở trên.

Thiết lập Cụm bản đồ MongoDB

Trước tiên, chúng ta sẽ xem xét cách thiết lập Cụm bản đồ MongoDB trong vòng chưa đầy năm bước.

Bước 1:Tạo tài khoản MongoDB Atlas

Lưu ý: Nếu bạn đã tạo tài khoản MongoDB bằng địa chỉ email của mình, hãy bỏ qua quá trình đăng ký và đăng nhập vào tài khoản của bạn.

Đăng ký tài khoản MongoDB Atlas mới rất dễ dàng. Bạn có thể chọn sử dụng địa chỉ email hoặc tài khoản Google của mình để đăng ký.

Quá trình này hoàn toàn miễn phí; do đó, bạn không phải lo lắng về việc phát sinh các khoản phí bổ sung.

Nhấp vào liên kết này để đăng ký tài khoản MongoDB Atlas miễn phí. Chỉ cần điền thông tin chi tiết của bạn và nhấp vào nút “Bắt đầu miễn phí” để có tài khoản Atlas miễn phí của bạn.

Sau khi bạn có tài khoản Atlas, hãy chuyển sang bước tiếp theo

Bước 2:Tạo Dự án và tổ chức của bạn

MongoDB Atlas, theo mặc định, sẽ nhắc bạn tạo một tổ chức và dự án sau khi hoàn tất quá trình đăng ký. Nhanh chóng điền vào các chi tiết cần thiết để hoàn tất quá trình này và chuyển sang bước tiếp theo. Tổ chức và dự án sẽ được sử dụng để triển khai cụm của bạn trong tương lai.

Bước 3:Triển khai cụm

Trong giai đoạn này, bạn sẽ chọn một cụm từ các tùy chọn cụm khác nhau. Vì lợi ích của hướng dẫn bài viết này, chúng tôi sẽ sử dụng tùy chọn “Cụm chia sẻ”, đây là tùy chọn cụm miễn phí được cung cấp bởi MongoDB Atlas. Bên dưới tùy chọn “Cụm được chia sẻ”, hãy nhấp vào “Tạo”.

Bạn sẽ được nhắc chọn một vài tùy chọn cho cụm của mình trên trang tiếp theo, như được đánh dấu bên dưới:

Khu vực &nhà cung cấp đám mây

Tại đây, bạn được yêu cầu chọn nơi mà cụm của bạn sẽ được triển khai. Điều cần thiết là chọn một khu vực gần với ứng dụng của bạn nhất. Tốt nhất, bạn nên chọn một vùng không đổi để giảm thiểu các vấn đề liên quan đến độ trễ. Chúng tôi sẽ sử dụng Khu vực này, “N. Virginia (us-East-1), ”với AWS là nhà cung cấp đám mây nguồn của chúng tôi cho hướng dẫn này. Chúng tôi đã chọn AWS làm nhà cung cấp đám mây của mình vì chúng tôi sẽ triển khai trên Heroku và lưu trữ cơ sở hạ tầng của họ trên AWS.

Cấp cụm

Trong tiểu mục này, bạn sẽ thấy các lớp cụm có sẵn cho tùy chọn cụm mà chúng tôi đã chọn, trong trường hợp này là các tùy chọn cụm được chia sẻ. Tại đây, bạn sẽ thấy so sánh về RAM, Bộ nhớ, Giá cơ bản các cấp và vCPU. Những so sánh này sẽ giúp bạn chọn đúng cấp phù hợp cho dự án của mình. Chúng tôi sẽ để nó ở tầng “M0 Sandbox” mặc định cho hướng dẫn này.

Cài đặt bổ sung

Phần này phụ thuộc vào cấp bạn chọn. Bạn có thể nhận được một số cài đặt bổ sung tùy thuộc vào cấp bạn chọn. Các cài đặt này sẽ bao gồm các tùy chọn sao lưu và các phiên bản MongoDB sẽ được triển khai. Chọn MongoDB phiên bản 4.4 và tắt tùy chọn sao lưu.

Tên cụm

Đây là lựa chọn cuối cùng. Ở đây, nó sẽ hữu ích nếu bạn đặt tên cho cụm của mình. Tôi sẽ gọi cụm của chúng tôi là “Leafix.” Hãy nhớ rằng bạn sẽ không được phép thay đổi nó khi bạn đã tạo cụm.

Lưu ý:Nên xem lại các tùy chọn đã chọn và thực hiện các thay đổi cần thiết trước khi tạo cụm bằng nút “Tạo cụm”.

Bước 4:Tạo Người dùng DB cho cụm mới được tạo của bạn

MongoDB Atlas yêu cầu khách hàng xác thực là người dùng cơ sở dữ liệu MongoDB để truy cập các cụm. Làm theo các bước được cung cấp để tạo người dùng DB cho cụm của bạn.

  • Điều hướng đến phần "Truy cập Cơ sở dữ liệu". Nó nằm trong tab "Bảo mật" ở phía bên trái.
  • Nhấp vào tuỳ chọn “Thêm người dùng cơ sở dữ liệu mới”.
  • Một lời nhắc sẽ xuất hiện. Nhập phương thức xác thực của bạn và các đặc quyền của người dùng cơ sở dữ liệu
  • Sử dụng “Mật khẩu” làm phương thức xác thực của bạn và cung cấp mật khẩu và tên người dùng.

Lưu ý: Bạn nên tự động tạo một mật khẩu mạnh từ Atlas để ngăn ngừa các biến chứng liên quan đến mất an toàn. Sau khi bạn đã tự động tạo mật khẩu, hãy sao chép và lưu nó ở một nơi thuận tiện để dễ dàng lấy lại trong tương lai. Bước này rất quan trọng vì chúng tôi sẽ yêu cầu mật khẩu trong khi kết nối với cụm.

  • Cấp cho người dùng nhiều đặc quyền nhất bằng cách chọn tùy chọn "Quản trị viên bản đồ".
  • Khi bạn đã hoàn tất, hãy nhấp vào “Thêm người dùng” để tạo người dùng DB.

Bước 5:Cấp quyền truy cập cụm địa chỉ IP được ủy quyền

Đây là bước cuối cùng khi thiết lập cụm MongoDB Atlas. Phần này sẽ chọn các địa chỉ IP cho phép chúng ta truy cập vào cụm Atlas. Để cấp quyền, hãy làm theo các bước được đề cập ở đây:

  1. Trong “Bảo mật”, hãy chọn “Truy cập mạng”.
  2. Tiếp theo, chọn “Thêm địa chỉ IP”.
  3. Chọn “Cho phép Truy cập từ Mọi nơi” và nhấp vào nút “Xác nhận” để hoàn tất quá trình.

Đó là tất cả. Bạn đã thiết lập thành công cụm MongoDB Atlas của mình.

Lưu ý :Bạn không muốn cho phép loại địa chỉ IP này truy cập trong môi trường sản xuất do các vấn đề bảo mật. Bạn cần xác định địa chỉ IP chính xác cho ứng dụng của mình và đặt dải địa chỉ IP một cách rõ ràng. Quy trình này được điều chỉnh để tăng cường bảo mật cho cụm của bạn.

Kết nối với Cụm của bạn

Để kết nối với cụm mới tạo của bạn, hãy làm theo hướng dẫn sau:

  1. Trong phần “Bộ nhớ dữ liệu” trên thanh điều hướng bên trái, hãy nhấp vào “Nhóm”.
  2. Nhấp vào tab “Kết nối”
  3. Chọn phiên bản trình điều khiển của bạn, sau đó chỉ sao chép chuỗi kết nối

Khi bạn đã hoàn tất, hãy cập nhật chuỗi kết nối. Một lần nữa, đừng quên thêm tên người dùng và mật khẩu của bạn.

Tạo tài khoản Heroku

Tạo một tài khoản Heroku rất dễ dàng. Trước tiên, hãy truy cập trang web chính thức của Heroku và đăng ký giống như chúng tôi đã làm với MongoDB Atlas. Sau khi hoàn tất tài khoản Heroku của bạn, hãy tiếp tục và cài đặt Heroku CLI.

Cài đặt Heroku CLI

Điều quan trọng là đảm bảo bạn đã cài đặt Git trên hệ điều hành Linux của mình vì Heroku CLI yêu cầu Git. Git là một hệ thống kiểm soát phiên bản phổ biến thường được hầu hết các nhà phát triển sử dụng. Cài đặt Git rất dễ dàng. Mở thiết bị đầu cuối của bạn và thực hiện lệnh bên dưới:

sudo apt-get install git-all

Đầu ra:

Lệnh đó sẽ cài đặt Git vào hệ điều hành Linux của bạn. Sau đó, chạy lệnh khác này để cài đặt Heroku trên hệ điều hành Linux của bạn:

sudo snap install --classic heroku

Đầu ra:

Cho thời gian đầu cuối để thực thi lệnh và cài đặt hoàn toàn Heroku.

Đăng nhập và tạo ứng dụng mới trên trang web Heroku

Chúng tôi tin rằng bạn đã theo dõi sát bài viết và bạn đã tạo được một tài khoản Heroku. Nếu vậy, hãy mở Bảng điều khiển Heroku của bạn. Nhập thông tin chi tiết bạn đã sử dụng khi tạo Tài khoản Heroku để đăng nhập vào trang tổng quan của bạn. Sau khi bạn đã đăng nhập, hãy chuyển sang bước tiếp theo để tạo một ứng dụng mới:

  1. Điều hướng đến heroku.com/apps
  2. Chọn Mới> Tạo ứng dụng mới> Chọn Khu vực> Tạo ứng dụng.
  3. Hãy kiên nhẫn khi ứng dụng được tạo ra.
  4. Sau khi quá trình kết thúc, bạn sẽ được chuyển hướng đến trang tổng quan của mình. Chọn phần "Triển khai"

Kết nối ứng dụng Heroku với kho lưu trữ cục bộ

Làm theo hướng dẫn triển khai được cung cấp trong phần triển khai của bài viết này mà bạn đã chọn trước đó.

Tuy nhiên, hãy đăng nhập vào Heroku trong phần “Triển khai” mà chúng tôi đã chọn trước đó.

Chạy các lệnh sau (cũng được chỉ định trong phần Triển khai) để kết nối với Heroku và tạo Dyno mới từ thư mục gốc của máy chủ / dự án của bạn:

Lưu ý: Dấu ngoặc nhọn “ <> ”Được sử dụng trong các ví dụ dưới đây biểu thị các giá trị định danh / tham số / đối số do người dùng cung cấp. Khi chạy các lệnh, bạn nên bỏ chúng đi.

# Thêm điều khiển từ xa Heroku

heroku git:remote -a <name-of-the-newly-created-app>

# Hãy xem các điều khiển từ xa có sẵn.

# Kết nối với kho lưu trữ từ xa ‘heroku’ mới sẽ hiển thị.

git remote -v

# Trên nhánh phát triển, cam kết công việc gần đây nhất.

git add .

git commit -m 'Write a clear, meaningful commit message here.'

git push origin <development-branch-name>

# Chi nhánh nên được chuyển sang chi nhánh chính.

git checkout master

# Cập nhật từ nhánh phát triển được hợp nhất.

git merge <development-branch-name>

git push heroku master

Thiết lập Heroku để kết nối với Cụm bản đồ MongoDB bằng cách sử dụng các biến cấu hình

Chúng tôi đã rất vui khi nhanh chóng thiết lập cụm Atlas của mình, nhưng chúng tôi nghĩ rằng bạn sẽ thích phần này hơn nữa!

Các ứng dụng Heroku được Atlas hậu thuẫn rất dễ xây dựng. Tạo var cấu hình cấp ứng dụng chứa chuỗi kết nối của cụm của bạn. Bạn có thể truy cập an toàn var cấu hình đó trong ứng dụng của mình sau khi nó được thiết lập!

Đây là cách bạn làm điều đó:

Bước 1:Mở Heroku CLI và đăng nhập.

heroku login

Lệnh này sẽ đưa bạn đến trang đăng nhập Heroku trong trình duyệt web của bạn. Nhấp vào nút “Đăng nhập” nếu bạn đã đăng nhập. Bạn cũng có thể sử dụng cờ -i để đăng nhập từ dòng lệnh.

Bước 2:Tạo một bản sao ứng dụng demo của tôi

Tôi đã xây dựng một ứng dụng Node nguyên mẫu sử dụng MongoDB Atlas và tôi muốn xuất bản lên Heroku để tiếp tục bài học này. Sao chép nó, sau đó đi đến thư mục sau:

git clone https://github.com/adriennetacke/mongodb-atlas-heroku-leaflix-demo.git

cd mongodb-atlas-heroku-leaflix-demo

Đầu ra:

Bước 3:Xây dựng ứng dụng Heroku

heroku create leaflix

Đầu ra:

Như bạn có thể thấy, tôi đã đặt tên cho lá xoắn của mình.

Lấy chuỗi kết nối Cụm bản đồ của bạn

Vui lòng quay lại trang tổng quan của cụm Atlas của bạn để truy xuất chuỗi kết nối của chúng tôi.

  • Chọn “Kết nối” từ menu thả xuống.
  • Chọn “Kết nối ứng dụng của bạn” từ menu thả xuống.

Chuỗi kết nối mà chúng tôi cần kết nối với cụm của chúng tôi sẽ được tìm thấy ở đây. Ghi lại chuỗi kết nối.

Dán chuỗi kết nối vào một trình soạn thảo; chúng tôi sẽ thực hiện một số thay đổi trước khi gán nó vào biến cấu hình Heroku.

Atlas đã dễ dàng bao gồm tên người dùng của người dùng cơ sở dữ liệu mà chúng tôi đã tạo trước đó, như bạn có thể thấy. Thay thế “mật khẩu” bằng mật khẩu của người dùng cơ sở dữ liệu cá nhân của bạn và “dbname” bằng “sample_mflix”, là tập dữ liệu mẫu mà ứng dụng demo của chúng tôi sẽ sử dụng để hoàn thành chuỗi kết nối và làm cho nó hợp lệ.

Lưu ý:Nếu bạn không có mật khẩu cho người dùng cơ sở dữ liệu của mình, hãy tự động tạo một mật khẩu và sử dụng mật khẩu đó trong chuỗi kết nối. Nếu bạn tự động tạo lại nó, hãy nhớ cập nhật nó! Đi tới Truy cập cơ sở dữ liệu> Nhấp vào “Chỉnh sửa” trên người dùng cơ sở dữ liệu mà bạn muốn tìm mật khẩu> Đặt lại mật khẩu của bạn> Tự động tạo mật khẩu an toàn khác.

Tạo biến cấu hình MONGODB_URI

Bây giờ chúng tôi đã tạo chính xác nó, đã đến lúc lưu chuỗi kết nối của chúng tôi trong một biến cấu hình Heroku. Đặt biến cấu hình MONGODB_URI thành chuỗi kết nối của chúng tôi:

heroku config:set MONGODB_URI="mongodb+srv://yourUsername:[email protected]/sample_mflix?retryWrites=true&w=majority"

Dưới đây là một số điểm chính cần ghi nhớ:

  • Lệnh này chỉ bao gồm một dòng.
  • Vì định dạng chuỗi kết nối của chúng tôi chứa các ký tự đặc biệt nên nó phải được đặt trong dấu ngoặc kép.

Nó đơn giản như vậy! Bạn đã thêm thành công chuỗi kết nối của cụm Atlas của mình vào biến cấu hình Heroku, cho phép bạn truy cập nó một cách an toàn sau khi ứng dụng của bạn được triển khai cho Heroku.

Lưu ý: Bạn cũng có thể nhập var cấu hình này trong tab “Cài đặt” của Trang tổng quan Heroku cho ứng dụng của bạn. Đi tới Leaflix> Cài đặt trong ứng dụng của bạn. Nhấp vào nút “Reveal Config Vars” trong phần Config Vars và nhập var cấu hình của bạn vào đó.

Bước cuối cùng là thay đổi mã ứng dụng của bạn để cho phép truy cập vào các biến này.

Sử dụng giá trị var của Heroku config để kết nối Ứng dụng của bạn với Cụm bản đồ MongoDB

Bạn sẽ nhận thấy rằng chúng tôi đã mã hóa cứng chuỗi kết nối cụm Atlas của mình trong ứng dụng demo của chúng tôi. Chúng tôi cần làm lại mã của mình để sử dụng biến cấu hình Heroku đã tạo trước đó.

Các biến môi trường được sử dụng để hiển thị các vars cấu hình cho mã ứng dụng của bạn. Ngôn ngữ bạn chọn để truy cập các biến này sẽ xác định cách bạn truy cập chúng; ví dụ:trong Java, bạn sẽ sử dụng System.getenv (‘key’) cuộc gọi và trong Ruby, bạn sẽ sử dụng ENV [‘key’] cuộc gọi.

Biết rằng ứng dụng của chúng tôi được viết bằng Node, chúng tôi có thể sử dụng biến process.env trong Node.js để kết nối với cụm Atlas của chúng tôi. Thay đổi hằng số uri trong tệp server.js thành:

const uri = process.env.MONGODB_URI;

Điều đó kết thúc cuộc thảo luận của chúng tôi. Ứng dụng của chúng tôi sẽ truy cập an toàn vào chuỗi kết nối cụm Atlas của chúng tôi sau khi được triển khai bởi vì chúng tôi đã thêm nó dưới dạng var cấu hình Heroku.

Lưu tệp, thực hiện sửa đổi và sau đó triển khai tới Heroku.

git commit -am "fix: refactor hard-coded connection string to Heroku config var"

git push heroku master

Ứng dụng của bạn hiện đã được triển khai! Sử dụng lệnh này, bạn có thể kiểm tra kỹ xem ít nhất một phiên bản của Leaflix đang chạy:

heroku ps:scale web=1

Bạn sẽ biết rằng có ít nhất một phiên bản đang hoạt động nếu bạn nhận được thông báo cho biết:“Việc mở rộng quy mô… đã xong, hiện đang chạy web với giá 1:Miễn phí”.

Cuối cùng, điều hướng đến trang web của ứng dụng của bạn. Bạn có thể làm như vậy bằng cách thực hiện theo các bước bên dưới:

heroku open

Khi bạn nhấn nút "Cần một tiếng cười?" , phần mềm của chúng tôi sẽ chọn một bộ phim dựa trên thể loại "Hài" trong khu vực thể loại. Nếu mọi thứ đều theo thứ tự, bạn sẽ thấy một cái gì đó như sau:tập dữ liệu sample_mflix được sử dụng trong ví dụ này, lấy trực tiếp từ cụm Atlas của chúng tôi.

Định cấu hình địa chỉ IP cho Heroku trong MongoDB Atlas

Cụm của chúng tôi đã hoạt động và ứng dụng của chúng tôi hiện đã có trên Heroku!

Chúng tôi thiết lập cụm của chúng tôi để chấp nhận các kết nối từ bất kỳ địa chỉ IP nào để giúp chúng tôi tìm hiểu hướng dẫn bài viết. Bạn chỉ muốn giới hạn quyền truy cập vào ứng dụng của mình và có một số tùy chọn trên Heroku để làm như vậy.

Tùy chọn đầu tiên là sử dụng tiện ích bổ sung để cung cấp cho ứng dụng của bạn một địa chỉ IP tĩnh bên ngoài mà bạn có thể sử dụng để hạn chế quyền truy cập trong Atlas. Một số ví dụ có thể được tìm thấy ở đây.

Một tùy chọn khác là sử dụng Heroku Private Spaces và sử dụng các IP đi ra ngoài tĩnh của không gian. Đây là một lựa chọn đắt tiền hơn, nhưng nó loại bỏ một tiện ích bổ sung.

Có nhiều tài liệu và bài báo khác nhau tuyên bố rằng bạn có thể sử dụng dải IP AWS hoặc Heroku để cung cấp quyền truy cập vào các IP bắt nguồn từ khu vực AWS của bạn hoặc Heroku Dynos trong các khu vực đó. Mặc dù điều này có thể hình dung được, nhưng nó không được khuyến khích vì những phạm vi như vậy có thể thay đổi theo thời gian. Vì vậy, thay vào đó, chúng tôi khuyên bạn nên sử dụng một trong hai cách tiếp cận được liệt kê ở trên.

Bạn có thể sử dụng (các) địa chỉ IP cho ứng dụng của mình để định cấu hình tường lửa trong Atlas sau khi bạn có chúng.

Xóa mọi dải IP hiện có khỏi cụm Atlas của bạn, sau đó thêm chúng vào danh sách cho phép của bạn. Bạn có thể làm như vậy bằng cách làm theo quy trình chúng tôi đã sử dụng để “Thêm địa chỉ IP và xóa các dải IP hiện có.”

Đó là tất cả! Bạn đã triển khai thành công MongoDB trên Heroku


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Trợ giúp truy vấn MongoDB - truy vấn các giá trị của bất kỳ khóa nào trong một đối tượng con

  2. Cách sắp xếp hoạt động trong phần mở rộng mongodb PECL mới?

  3. Thay đổi loại trường bên trong tập hợp mongoDB và $ lookup có sử dụng chỉ mục trên các trường hay không?

  4. Quản lý AWS:Cách tiết kiệm 30% chi phí lưu trữ MongoDB của bạn

  5. Thiết lập môi trường MongoDB | Cài đặt MongoDB trên Windows