Heroku la gì
Chào các bạn, Show 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ì:
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 Heroku1.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 HerokuHeroku 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. 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 CLIHeroku 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 HerokuCá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/2020Bước 2: Chọn “New > Create new app” để đi tới trang tạo app của Heroku. Đ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 .gitBắ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 masterHeroku 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 -> masterSau đó 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 demo2.3 Sử dụng Postgresql databasePostgresql 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. 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_URLBạ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 HerokuBạ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_USERNAMEBạ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 HerokuCó một số lưu ý với tài khoản Heroku miễn phí như sau:
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 |