Host ứng dụng node.js trên nền tảng Heroku

24.218 views

Bạn – một JS/node.js ninja đang viết một ứng dụng node.js, bạn muốn demo cho bạn bè xem hay bạn đang gặp lỗi trong quá trình viết và cần sự giúp đỡ của lập trình viên khác.

Bạn không thể bưng máy tính chạy vòng quanh được (thời đại internet rồi bạn ơi!), bạn cần phải up mã nguồn lên host. Đối với các ngôn ngữ phổ biến như PHP, ASP thì việc kiếm ra host là hết sức dễ dàng nhưng đối với nền tảng mới như node.js bạn sẽ up code lên đâu? Câu trả lời cho bạn là máy chủ VPS (DigitalOcean, Linode) hoặc dịch vụ PAAS (platform as a service) như Heroku, OpenShift hoặc PAAS dành riêng cho node.js như ModulusNodejitsu.

Bài viết này mình sẽ hướng dẫn các bạn host ứng dụng node.js lên Heroku và lý do mình chọn Heroku để viết bài là vì:

  • cho phép trỏ domain về (rất nhiều dịch vụ khác bắt trả phí)
  • hỗ trợ up code dùng Git, tốc độ up code rất nhanh
  • vì là cha đẻ của PAAS nên về độ ổn định của Heroku là số 1
  • chạy rất tốt với ứng dụng node.js
  • cho bạn host miễn phí 5 ứng dụng, chứng thực bằng cách nhập thông tin thẻ tín dụng vô, tăng lên 200 ứng dụng miễn phí
  • mỗi ứng dụng có thể sử dụng tới 521MB ram

Điểm trừ của Heroku

  • lưu trữ files trực tiếp trên ứng dụng sẽ bị mất, nên sử dụng Amazon S3 hay dịch vụ tương tự để lưu trữ file
  • database hỗ trợ qua dạng plugin, sử dụng hơi rắc rối
  • tốc độ chạy ứng dụng hơi chậm vì chưa có datacenter ở châu Á
  • HTTP timeout

Viết ra ứng dụng và quản lý mã nguồn sử dụng Git

Nếu bạn chưa có ứng dụng mà chỉ muốn trải nghiệm với Heroku, bạn có thể sử dụng ứng dụng mẫu mình viết ở đây https://github.com/VietJS/port-scanner

Heroku sử dụng Git như là giao thức chính để bạn up source code nên yêu cầu mã nguồn của bạn phải được quản lý bằng Git. Nếu bạn chưa dùng Git bao giờ thì hãy bắt đầu từ tryGit, mình sẽ đợi ở đây, không đi đâu hết!

Đăng ký tài khoản Heroku

Dễ dàng và nhanh chóng

  1. Truy cập https://heroku.com/
  2. Click Sign up for free
  3. Điền email
  4. Kiểm tra email, nhấn link active

Cài Heroku Toolbelt (không bắt buộc)

Heroku Toolbelt là ứng dụng command line giúp tương tác với Heroku, nếu bạn nào không quen dùng command line thì có thể sử dụng giao diện web của Heroku và bỏ qua bước này.

  1. Truy cập https://toolbelt.heroku.com/
  2. Download và cài đặt như các phần mềm thông thường

Tạo Procfile trong source code

Procfile: file bí kiếp hướng dẫn heroku chạy ứng dụng của bạn.

Tạo file Procfile trong thư mục ngoài cùng của ứng dụng với nội dung như sau

Procfile

web: node index.js

Đưa Procfile vào Git

git add Procfile
git commit Procfile -m "Add Procfile"

Tạo ứng dụng mới trên Heroku

# app_name là tên ứng dụng bạn muốn tạo, sẽ được sử dụng trên url của ứng dụng http://app_name.herokuapp.com
heroku create app_name

Dùng Git up mã nguồn lên Heroku

git push heroku master

Chạy ứng dụng Heroku

Dùng Heroku Toolbelt

heroku ps:scale web=1 -a app_name

Dùng giao diện web Heroku Dashboard -> App -> Dyno: web = 1

Heroku App

Xem thành quả

Truy cập http://app_name.herokuapp.com

Xử lý khi có lỗi

heroku logs -a app_name