Đưa dự án lên “mây” với Heroku – đừng để dự án của bạn trên local

909

Chào các bạn,

Developer chúng ta thường hay tự xây dựng các pet project để học công nghệ mới. Nhưng khi hoàn thiện xong, nhiều bạn vẫn chỉ để trên local, hoặc có bạn thì để trên một git repository. Mình cho rằng làm như vậy không hay lắm, bởi vì:

  • Nếu chỉ để trên local thì khi máy tính của bạn gặp trục trặc dữ liệu có thể bị mất.
  • Nếu để trên một git repository thì sẽ không có demo để show cho người khác xem.

Vậy có cách nào để vừa lưu trữ được source code, lại vừa có demo để show cho người khác xem không?

Có chứ, mà hơn hết là nó miễn phí. Đó chính là Heroku.

I. Heroku là gì? Cách hoạt động của Heroku

1.1 Heroku là gì?

Nếu bạn muốn tìm hiểu chi tiết thì đọc What is Heroku tại trang chủ của nó. Còn ở đây mình sẽ giải thích ngắn gọn:

Heroku là dịch vụ để bạn có thể deploy các ứng dụng của mình, hỗ trợ nhiều nền tảng như NodeJS, Ruby, Java, PHP, Python, Go, Scala …

Ngoài hỗ trợ nền tảng để chạy các ngôn ngữ lập trình, Heroku cũng hỗ trợ cả Postgresql database.

Với những developer “nghèo” không có tiền mua VPS để dùng như mình thì Heroku là dịch vụ lý tưởng để triển khai demo cho các dự án đơn giản.

Demo project đơn giản trên heroku: https://phambinh-net-test-heroku.herokuapp.com

1.2 Cách hoạt động của Heroku

Heroku hoạt động gần tương tự như các dịch vụ git (github, gitlab). Tức để sử dụng, bạn sẽ phải đăng ký một tài khoản, sau đó tạo các git repository (heroku gọi là app) và dùng các git command để đẩy code lên. Có điều khác với các dịch vụ git, với mỗi git repository trên Heroku bạn sẽ có một domain dạng https://ten-repository.herokuapp.com – là nơi show demo cho repository của bạn.

Bạn cũng có thể sử dụng một git repository trên github để deploy lên Heroku.

Với những git repository mà cần có demo để minh họa, thì Heroku là một giải pháp. Nhưng bạn không nên sử dụng Heroku để thay thế cho các dịch vụ git như github hay gitlab.

II. Hướng dẫn sử dụng Heroku

2.1 Đăng ký tài khoản và cài Heroku CLI

Đăng ký tài khoản

Đăng ký tài khoản trên Heroku rất đơn giản, bạn chỉ cần truy cập vào https://signup.heroku.com và điền các thông tin cần thiết vào form đăng ký.

Trang đăng ký của Heroku (giao diện chụp 04/2020)

Hãy điền email chính xác nhé, bởi Heroku yêu cầu một bước xác thực tài khoản qua email.

Cài Heroku CLI

Heroku có hẳn một bộ CLI rất tiện lợi, giúp developer tạo và quản lý các app vô cùng đơn giản. Bạn nên cài đặt, bởi các hướng dẫn tiếp của mình sẽ cần tới nó.

Để cài đặt Heroku cli, bạn truy cập vào https://devcenter.heroku.com/articles/heroku-cli và làm theo hướng dẫn (đơn giản thôi). Nhớ chọn đúng phiên bản với hệ điều hành của bạn nhé, nó hỗ trợ macOS, Ubuntu, Windows (32 bit, 64 bit).

2.2 Tạo app và đưa nó lên Heroku

Các dự án được đưa lên Heroku gọi chung là app.

Bước 1: Truy cập vào https://id.heroku.com/login, sau đó đăng nhập bằng tài khoản vừa đăng ký. Sau đó bạn sẽ được chuyển hướng vào trang dashboard của Heroku như hình bên dưới:

Giao diện chụp 04/2020

Bước 2: Chọn “New > Create new app” để đi tới trang tạo app của Heroku.

Giao diện chụp 04/2020

Điền thông tin app của bạn vào form tạo app sau đó nhấn “Create app”

Giao diện form tạp app heroku (Giao diện chụp 04/2020)

Sao khi tạo xong, bạn sẽ được chuyển hướng vào trang quản lý app vừa tạo, có giao diện dạng như hình:

Giao diện trang chi tiết app (Giao diện chụp 04/2020)

Bạn hãy thử khám phá qua các thông tin & tính năng trong các tab mà mình bôi đỏ. Bạn cũng nên bấm thử vào nút “Open app” xem sao.

Bước 3: Chuẩn bị một source code đơn giản để đưa lên.

Mình đã chuẩn bị sẵn một source code đơn giản tại đây: https://github.com/phambinh217/test-nodejs, bạn chỉ cần clone về để đẩy lên.

git clone https://github.com/phambinh217/test-nodejs.git

# Di chuyển vào thư mục vừa tạo
cd test-nodejs

# Xóa thông tin git cũ đi
rm -rf .git

Bắt đầu đẩy lên Heroku

# Login heroku từ terminal
heroku login

# Di chuyển vào thư mục vừa clone
cd test-nodejs

# Khởi tạo git của Heroku
git init
heroku git:remote -a ten-app-cua-ban

# Đẩy toàn bộ code lên
git add .
git commit -m "init"
git push heroku master

Heroku sẽ tự nhận biết ứng dụng của bạn chạy trên nền tảng nào và biết cách deploy cho phù hợp.

Khi deploy thành công, bạn sẽ nhận được output dạng như

...
remote: -----> Caching build
remote: - node_modules
remote:
remote: -----> Pruning devDependencies
remote: audited 194 packages in 1.075s
remote: found 4 vulnerabilities (3 low, 1 critical)
remote: run npm audit fix to fix them, or npm audit for details
remote:
remote: -----> Build succeeded!
remote: -----> Discovering process types
remote: Procfile declares types -> (none)
remote: Default types for buildpack -> web
remote:
remote: -----> Compressing…
remote: Done: 23.7M
remote: -----> Launching…
remote: Released v3
remote: https://ten-app-cua-ban.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy… done.
To https://git.heroku.com/ten-app-cua-ban.git
[new branch] master -> master

Sau đó thử truy cập vào https://ten-app-cua-ban.herokuapp.com để xem kết quả nhé. Nếu thấy giao diện như sau thì có nghĩa là thành công:

Giao diện sau khi deploy thành công demo

2.3 Sử dụng Postgresql database

Postgresql database thực chất là một add-on của Heroku, mặc định thì Heroku không cài sẵn cho bạn. Để cài postgresql, bạn chạy command sau tại thư mục root của project.

heroku addons:create heroku-postgresql:hobby-dev

hobby-dev là tên plan (và nó miễn phí), bạn có thể tham khảo chi tiết tại đây: https://devcenter.heroku.com/articles/heroku-postgresql

Sau khi chạy xong command trên, Heroku sẽ sinh ra một biến env tên là DATABASE_URL, đây là biến lưu thông tin kết nối tới postgresql. Bạn có thể chạy command sau để xem giá trị của biến DATABASE_URL.

heroku config:get DATABASE_URL

Bạn cũng có thể cài add-on Postgresql từ trang dashboard của Heroku, ở tab “Resources”.

Giao diện quản lý resources (Giao diện chụp 04/202)

2.4 Quản lý env với Heroku

Bạn cũng có thể quản lý các biến env (Heroku gọi là config vars) thông qua Heroku CLI như sau:

# Tất cả env
heroku config

# Set một biến env
heroku config:set GITHUB_USERNAME=joesmith

# Xem giá trị của một biến env
heroku config:get GITHUB_USERNAME

# Xóa một biến env
heroku config:unset GITHUB_USERNAME

Bạn cũng có thể quản lý env từ trang dashboard của Heroku, tab “settings”

Giao diện settings (Giao diện chụp 04/202)

III. Một số lưu ý với Heroku

Có một số lưu ý với tài khoản Heroku miễn phí như sau:

  • Cứ 30 phút nếu app không có request, thì nó sẽ sleep. Đây là lý do nhiều khi bạn mở app sẽ thấy hơi lâu.
  • Bạn sẽ tạo tối đa được 5 app, nếu bạn thêm thông tin thẻ tín dụng sẽ tạo được tối đa 100 app.
  • Mỗi tài khoản sẽ có 550 giờ sống mỗi tháng, chia đều cho tất cả các app. Nếu thêm thông tin thẻ tín dụng, bạn sẽ có 1000 giờ sống mỗi tháng. Nếu sử dụng hết tầm 70% số giờ, Heroku sẽ có mail thông báo cho bạn. Chi tiết bạn tham khảo tại https://devcenter.heroku.com/articles/free-dyno-hours
  • Nếu app của bạn có các tính năng như thêm, sửa, xóa file thì nó sẽ không hoạt động, bởi tất cả các file khi deploy lên Heroku sẽ ở trạng thái read-only.

Bạn nên thêm thông tin thẻ tín dụng để có nhiều quyền lợi hơn. Một số add-on như MySql Database cũng yêu cầu phải có thông tin thẻ tín dụng thì mới kích hoạt được.

Để thêm thông tin thẻ tín dụng, bạn làm theo hướng dẫn ở đây (cũng đơn giản thôi): https://devcenter.heroku.com/articles/account-verification#how-to-verify-your-heroku-account