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ư Modulus, Nodejitsu.
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
- Truy cập https://heroku.com/
- Click Sign up for free
- Điền email
- 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.
- Truy cập https://toolbelt.heroku.com/
- 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
Xem thành quả
Truy cập http://app_name.herokuapp.com
Xử lý khi có lỗi
heroku logs -a app_name
Anh phải add thêm dòng: heroku git:remote -a <appname> thì mới dùng lệnh git push heroku master được