11/08/2018, 20:12

Discover Meteor - Chương 3

Trong chương này bạn sẽ: Học để deploy trên Meteor.com. Học để deploy trên Modulus. Học để deploy dùng server riêng với Meteor Up. Một số người thích làm việc lặng lẽ trên một dự án cho đến khi nó hoàn hảo, trong khi những người khác không thể chờ đợi để cho thế giới biết càng sớm ...

Trong chương này bạn sẽ:

  • Học để deploy trên Meteor.com.
  • Học để deploy trên Modulus.
  • Học để deploy dùng server riêng với Meteor Up.

Một số người thích làm việc lặng lẽ trên một dự án cho đến khi nó hoàn hảo, trong khi những người khác không thể chờ đợi để cho thế giới biết càng sớm càng tốt.

Nếu bạn thuộc nhóm đầu tiên, và muốn tạm thời phát triển tại localhost, bạn có thể bỏ qua chương này. Mặt khác, nếu bạn thích dành thời gian để tìm hiểu làm thế nào để triển khai các ứng dụng trực tuyến của Meteor, chúng tôi sẽ hướng dẫn cho bạn.

Chúng ta sẽ được học làm thế nào để triển khai một ứng dụng Meteor theo vài cách khác nhau. Bạn có thể tự do lựa chọn cách triển khai trong bất kỳ giai đoạn phát triển nào, cho dù bạn đang làm việc trên Microscope hoặc bất kỳ ứng dụng Meteor khác. Hãy cùng bắt đầu!

Giới thiệu về Sidebars

Đây là một chương về sidebar. Sidebar tìm hiểu sâu sắc về một chủ đề chung của Meteor độc lập với phần còn lại của cuốn sách.

Vì vậy, nếu bạn muốn bắt đầu xây dựng Microscope, bạn có thể tạm thời bỏ qua chương này và trở lại với nó sau.

Triển khai trên Meteor

Triển khai trên một tên miền phụ Meteor (ví dụ http://myapp.meteor.com) là lựa chọn dễ dàng nhất, và là điều đầu tiên chúng ta sẽ thử làm. Điều này có thể hữu ích để giới thiệu ứng dụng của bạn với những người khác trong những ngày đầu của nó, hoặc để nhanh chóng thiết lập một server cho môi trường staging.

Triển khai trên Meteor khá là đơn giản. Bạn chỉ cần mở terminal, di chuyển vào thư mục ứng dụng Meteor của bạn, và gõ:

meteor deploy myapp.meteor.com

Tất nhiên, bạn sẽ phải thay thế "myapp" với một tên do bạn lựa chọn, tốt nhất là một tên mới mà vẫn chưa được sử dụng.

Nếu đây là lần đầu tiên bạn triển khai một ứng dụng, bạn sẽ được nhắc nhở để tạo một tài khoản Meteor. Và nếu mọi việc suôn sẻ, sau một vài giây, bạn sẽ có thể truy cập vào ứng dụng của bạn tại http://myapp.meteor.com.

Bạn có thể tham khảo tài liệu chính thức để biết thêm thông tin về những thứ như truy cập trực tiếp vào cơ sở dữ liệu lưu trữ trên máy chủ của bạn, hoặc cấu hình một tên miền tùy chỉnh cho ứng dụng của bạn.

Triển khai trên Modulus

Modulus là một lựa chọn tuyệt vời cho việc triển khai các ứng dụng Node.js. Đó là một trong số ít PaaS (nền tảng như một dịch vụ) mà cung cấp hỗ trợ Meteor chính thức, và đã có khá một số lượng người chạy sản phẩm ứng dụng Meteor trên đó.

Bạn có thể học thêm về Modulus bằng việc đọc hướng dẫn triển khai cho ứng dụng Meteor.

Hãy bắt đầu bằng việc tạo một tài khoản. Để triển khai ứng dụng trên Modulus, chúng ta cần phải cài đặt công cụ dòng lệnh Modulus:

npm install -g modulus

Và sau đó xác nhận với:

modulus login

Bây giờ chúng ta sẽ tạo ra một dự án Modulus (lưu ý rằng bạn cũng có thể làm được điều này thông qua bảng điều khiển web Modulus ):

modulus project create

Bước tiếp theo sẽ được tạo ra một cơ sở dữ liệu MongoDB cho ứng dụng của chúng ta. Chúng ta có thể tạo ra một cơ sở dữ liệu MongoDB với chính Modulus, Compose hoặc với bất kỳ nhà cung cấp dịch vụ cloud MongoDB nào khác.

Một khi đã tạo ra cơ sở dữ liệu MongoDB, chúng ta có thể nhận được MONGO_URL cho cơ sở dữ liệu từ giao diện người dùng web Modulus '(đi vào Bảng điều khiển> Cơ sở dữ liệu> Chọn cơ sở dữ liệu của bạn> Quản trị), sau đó sử dụng nó để cấu hình ứng dụng như vậy:

modulus env set MONGO_URL "mongodb://<user>:<pass>@mongo.onmodulus.net:27017/<database_name>"

Để deploy ứng dụng, đơn giản hãy gõ:

modulus deploy

Bây giờ chúng ta đã triển khai thành công ứng dụng lên Modulus. Tham khảo tài liệu Modulus để biết thêm thông tin về truy cập nhật ký, thiết lập tên miền tùy chỉnh, và SSL.

Meteor Up

Mặc dù giải pháp cloud xuất hiện hàng ngày, chúng thường xuất hiện đi kèm với vấn đề và hạn chế của mình. Vì vậy tốt hơn hết là bạn triển khai ứng dụng Meteor trên server của riêng mình. Chỉ có một vấn đề là, việc tự mình triển khai thường không đơn giản, nhất là nếu bạn mong muốn triển khai với chất lượng của một sản phẩm thực sự.

Meteor Up (hoặc nói ngắn gọn mup) là một giải pháp khác, được đi kèm với tiện ích dòng lệnh giúp cho việc thiết lập và triển khai dễ dàng hơn. Vì vậy hãy cùng xem làm thế nào để triển khai Microscope với Meteor Up.

Trước hết, chúng ta cần một server để push dữ liệu lên. Chúng tôi khuyến khích dùng Digital Ocean là dịch vụ có thể bắt đầu với chỉ $5 một tháng, hoặc AWS, dịch vụ có thể bắt đầu hoàn toàn miễn phí (bạn sẽ sớm gặp phải những vấn đề về việc mở rộng, nhưng đủ để bạn tìm hiểu sơ qua với Meteor Up).

Dù cho bạn chọn server nào, bạn sẽ đi đến ba thứ: địa chỉ IP cho server, tài khoản đăng nhập (thường là root hoặc ubuntu), và mật khẩu. Hãy giữ cho chúng được bảo mật, vì bạn sẽ cần dùng đến sớm thôi!

Khởi tạo Meteor Up

Để bắt đầu, chúng ta cần phải cài đặt Meteor Up qua npm như sau:

npm install -g mup

Chúng ta sẽ tạo một thư mục đặc biệt, tách rời mà sẽ chứa đựng thiết lập cho Meteor Up cho việc triển khai. Chúng ta dùng thư mục tách rời vì hai lý do: đầu tiên, sẽ tốt hơn nếu tránh dùng thông tin cá nhân vào một repo Git, đặc biệt trong trường hợp bạn làm việc với mã nguồn công cộng.

Tiếp theo, bằng việc dùng thư mục tách rời, chúng ta có thể đồng thời quản lý thiết lập của nhiều Meteor Up. Điều này sẽ thuận tiện cho cả việc triển khai môi trường phát triển và staging.

Hãy tạo một thư mục và dùng nó để khởi tạo dự án Meteor Up:

mkdir ~/microscope-deploy
cd ~/microscope-deploy
mup init

Chia sẻ qua Dropbox

Cách tốt nhất để chắc chắn rằng bạn và nhóm của bạn cùng dùng chung thiết lập cho việc triển khai là tạo thư mục thiết lập Meteor Up bên trong Dropbox hoặc một dịch vụ tương tự.

Thiết lập cho Meteor Up

Khi khởi tạo một dự án mới, Meteor Up sẽ tạo hai file cho bạn: mup.json và settings.json.

mup.json sẽ thiết lập liên quan đến việc triển khai, trong khi settings.json sẽ chứa toàn bộ thiết lập liên quan đến ứng dụng (token OAuth, token phân tích, vân vân...).

Bước tiếp theo là thiết lập file mup.json. Sau đây là file mup.json được tạo mặc định bởi mup init, và tất cả việc bạn phải làm chỉ là điền vào chỗ trống:

{
  //server authentication info
  "servers": [{
    "host": "hostname",
    "username": "root",
    "password": "password"
    //or pem file (ssh based authentication)
    //"pem": "~/.ssh/id_rsa"
  }],

  //install MongoDB in the server
  "setupMongo": true,

  //location of app (local directory)
  "app": "/path/to/the/app",

  //configure environmental
  "env": {
    "ROOT_URL": "http://supersite.com"
  }
}

mup.json

Hãy xem xét từng bước thiết lập ở trên.

Authentication Server

Bạn sẽ nhận thấy rằng Meteor Up hỗ trợ xác thực dựa trên mật khẩu và xác thực dựa trên khoá mật (PEM), vì vậy nó có thể được sử dụng với hầu hết các nhà cung cấp điện toán đám mây.

Lưu ý quan trọng: nếu bạn chọn để sử dụng xác thực dựa trên mật khẩu, trước hết hãy chắc chắn rằng bạn đã cài đặt sshpass (

SSHPass is a tiny utility, which allows you to provide the ssh password without using the prompt. This will very helpful for scripting. SSHPass is not good to use in multi-user environment. If you use SSHPass on your development machine, it don't do anything evil.

Installing on Ubuntu

apt-get install sshpass

Installing on OS X

Installing on OS X is tricky, since there is no official build for it. Before you get started, you need install xcode and command line tools.

Installing with Homebrew

Homebrew does not allow you to install sshpass by default. But you can use the following unofficial brew package for that.

brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb

Installing from the Source

  • Download the Source Code
  • Extract it and cd into the directory
  • ./configure
  • sudo make install
view raw gistfile1.md hosted with ❤ by GitHub
).

Cấu hình MongoDB

Bước tiếp theo là cấu hình cơ sở dữ liệu MongoDB cho ứng dụng của bạn. Chúng tôi khuyên bạn nên sử dụng Compose hoặc bất kỳ nhà cung cấp dịch vụ đám mây MongoDB nào khác, vì họ cung cấp hỗ trợ chuyên nghiệp và các công cụ quản lý tốt hơn.

Nếu bạn đã quyết định sử dụng Compose, thiết lập setupMongo thành false và thêm biến môi trường MONGO_URL trong khối env của file mup.json. Nếu bạn quyết định host MongoDB với Meteor Up, chỉ cần thiết lập setupMongo thành true và Meteor Up sẽ lo phần còn lại.

Đường dẫn ứng dụng Meteor

Vì cấu hình Meteor Up của chúng ta nằm trong một thư mục khác, chúng ta sẽ cần phải trỏ Meteor Up trở lại ứng dụng của chúng ta bằng việc sử dụng thuộc tính app. Chỉ cần nhập vào đường dẫn local đầy đủ , mà bạn có thể nhận được bằng cách sử dụng lệnh pwd từ terminal khi đã nằm bên trong thư mục của ứng dụng.

Biến môi trường

Bạn có thể xác định tất cả các biến môi trường của ứng dụng (chẳng hạn như là ROOT_URL,MAIL_URL, MONGO_URL, vân vân) bên trong khối env.

Thiết lập và Triển khai

Trước khi chúng ta có thể triển khai, chúng ta sẽ cần phải thiết lập máy chủ để sẵn sàng host ứng dụng Meteor. Sự kỳ diệu của Meteor Up ở chỗ nó có thể gói gọn quá trình phức tạp này trong một lệnh duy nhất!

mup setup

Lệnh này sẽ mất một vài phút tùy thuộc vào hiệu suất của máy chủ và kết nối mạng. Sau khi quá trình cài đặt thành công, cuối cùng chúng ta sẽ có thể triển khai ứng dụng của mình với:

mup deploy

Lệnh này sẽ bó các ứng dụng Meteor, và triển khai đến máy chủ mà chúng ta vừa mới thiết lập.

Hiển thị log

Viết log là một việc khá quan trọng và Meteor Up cung cấp một cách rất dễ dàng để xử lý chúng bằng cách dùng lệnh tail -f. Chỉ cần gõ:

mup logs -f

Lệnh này kết thúc giới thiệu tổng quan cho chúng ta về những gì Meteor Up có thể làm. Để biết thêm thông tin, chúng tôi khuyên bạn nên truy Meteor Up's GitHub repository.

Ba cách để triển khai các ứng dụng Meteor nên là đủ cho hầu hết các trường hợp sử dụng. Tất nhiên, chúng tôi biết một số độc giả sẽ thích được kiểm soát hoàn toàn và thiết lập máy chủ Meteor từ con số 0. Nhưng đó là một chủ đề cho một ngày khác... hoặc có thể là trong một cuốn sách khác!

0