Hướng dẫn đưa ứng dụng iNut node-red (webHMI) của iNut Platform lên server miễn phí Heroku

Mô tả dự án: 

Sau khi đã có được demo chạy được cảm thấy ổn ở local (máy tính của bạn), bạn muốn đưa webapp của mình lên một server Internet để cho khách hàng xem hoặc chuyển giao cho khách hàng với giá rẻ nhất (gần như bằng 0) mà không cần phải NAT PORT thì tại máy tính của mình? Thì đây là cuốn sổ tay hướng dẫn chi tiết dành cho bạn. Đặc biệt, tất cả bài viết hướng dẫn, dự án mẫu liên quan đến node-red của iNut Platform đều có thể làm theo hướng dẫn sau này nhé!

Một số chức năng và giới hạn

Với heroku phiên bản miễn phí, bạn có thể:

  • Triển khai webapp của mình lên Server ngoài Internet với một địa chỉ Internet ở đâu cũng truy cập được.
  • Miễn Phí trong 21/30 ngày. Đặc biệt, nếu không có lưu lượng truy cập quá 30 phút (tính từ lúc có truy cập cuối cùng) thì webapp sẽ được tự động đưa vào trạng thái ngủ (nôm na là không bị tính tiền giờ heart). Rất phù hợp cho các ứng dụng giám sát, điều khiển.
  • Dễ dàng triển khai chỉ trong vài dòng lệnh vì mọi tài nguyên bạn đã có ở những bài hướng dẫn về iNut Platform.
  • Cộng đồng sử dụng heroku cho mục đích học tập khá nhiều.

Nhưng, không có buổi trưa nào miễn phí cả:

  • Sau ngày thứ 21, tức là sau thời điểm giây thứ 1814400, webapp của bạn sẽ tự động chuyển sang chế độ tính tiền và một khoản tiền vài chục đến vài trăm đô la tùy băng thông. Tiền thì không thành vấn đề nhưng mà lỡ nó bị thì tốn thời gian. Nhưng được cái là mình thấy hiếm khi khách hàng của mình đến mức này. Toàn dừng ở mức 10 ngày liên tục (vì mỗi ngày họ xem khoảng 8 giờ, một tuần có 6 ngày làm việc, thành ra thời gian trung bình 691200 giây). Như vậy không quá anh hưởng ở điểm này.
  • Vì sau 30 phút không  có truy cập, webapp sẽ dừng nên sẽ không thể ứng dụng trong các lĩnh vực như data logging, lưu cơ sở dữ liệu tại chỗ.
  • Chi phí phát sinh lớn và phải có thanh toán quốc tế nếu phát sinh vượt ngưỡng.
  • Tên miền của heroku dạng herokuapp.com.
  • Ví dụ bạn muốn sửa nội dung app sau khi đã up lên heroku, bạn phải sửa ở dưới local rồi up lên trên heroku, nếu bạn sửa trên heroku nó sẽ không lưu lại!

Vì vậy, để có một tên miền ngon mang tên công ty bạn hoặc dùng sub-domain của tên công ty bạn thì phải có một server. Bạn có thể thuê hoặc tự build server (bên mình có hướng dẫn hoặc thuê bên mình cài đặt).

Nhưng ở các dự án nhỏ, khách hàng ít có chi phí duy trì hàng tháng nhưng muốn có một hệ thống Scada của riêng họ thì đây là giải pháp hoàn hảo!

Heroku, nhà cung cấp dịch vụ nodejs free server

1. Heroku là gì?

Heroku cung cấp dịch vụ máy chủ đám mây giúp dễ dàng trong việc deploy ứng dụng. Điều tuyệt vời ở Heroku là trang này bạn có thể sử dụng dịch vụ hoàn toàn miễn phí với các ứng dụng web không yêu cầu phải có tốc độ truy cập cao hay dung lượng lớn. Các dự án của maker chúng ta thì dùng heroku là số 1 rồi, vì chúng ta có thể tự do edit code của mình, thêm thắt tùy ý.

2. Đăng ký tài khoản ở Heroku?

Đầu tiên, bạn hãy chuyển đến trang Đăng ký.

... và nhập các thông tin cần thiết.

... sau đó bạn vào email để xác nhận tài khoản.

Lúc này, bạn sẽ tiến hành tạo password!

Như vậy là xong rồi.

3. Tải về Heroku console app và cài đặt tài khoản

Sau khi bạn đã tạo tài khoản xong, bạn cần như không cần quan tâm đến phần dashboard của heroku, hãy tin mình, đi theo các bước sau đây để tạo app trước đã rồi sau này quay lại dashboard để khám phá app đã tạo thì vui hơn nhiều.

Ở các bài trước, chúng ta đã dùng git cli để lưu và tải về các project, và ở bài nay, chúng ta sẽ dùng heroku cli. Để bắt đầu với nodejs với heroku, bạn có thể đọc tài liệu ở đây. Mình sẽ lược dịch những phần và ghi chú cần thiết để giúp bạn đi nhanh hơn.

Đầu tiên, các bạn hãy tải về Heroku CLI để có thể đi tiếp.

Tiếp theo, bạn cần bật bật Windows Command Prompt lên (Bạn vào Start, gõ cmd rồi enter hoặc nhấn tổ hợp phím Windows + R (phím Windows nằm giữa Ctrl và Alt á)):

Sau khi tải về và cài đặt xong, các bạn hãy mở command line lên và đăng nhập vào dịch vụ heroku bằng lệnh

heroku login

Nhập địa chỉ email và password và đăng nhập hoy!

Đưa webapp iNut lên Internet nào!

Bất cứ dự án nào trong iNut Platform heroku đều được nha bạn.

Okay, giả sử bạn đang có một dự án iNut PLC và muốn dưa dự án này lên web heroku! Hãy làm như sau:

Bạn gõ lện sau để chuyển vào thư mục iNut-Node-RED-Kickstarter

cd iNut-Node-RED-Kickstarter

Sau đó, bạn gõ lệnh sau để "lưu lại phiên bản".

Cái này không phải lệnh save nhé. Vì khi bạn nhấn Deploy thì đã save rồi. Cái này dùng để lưu lại phiên bản, tức nghĩa là bạn lên version. Ví dụ, bản nháp bạn làm cho khách hàng A là version 1.0 với nội dung là "Đã xong bản nháp". Sau đó khách đòi sửa thành bản 1.1 với nội dung "Sửa theo yêu cầu để lên 1.1". Tiếp khách lại đòi sửa thành 1.2 với nội dung "aaaaaaaaaaaaaa, chốt nha khách, please!!!!". Cuối cùng khách đòi: "mình nghĩ version đầu (bản nháp) là ok nhất".... và lúc đó với iNut thì có thể restore lại mà không cần phải "Save as" nhiều phiên bản đau đầu!

git add .

git commit -m "Nội dung bạn muốn lưu lại"

#Nếu bạn bị lỗi ở bước này thì vui lòng gõ lại lệnh này rồi tiến hành git commit lại 

git config --global user.email <email của bạn>

Ví dụ

git config --global user.email [email protected]

Sau đó, gõ lệnh sau (bước này bạn chi cần làm một lần duy nhất / một project up lên heroku).

git checkout master

git merge inut-plc-example2 

heroku create

 

Vì sao lại là inut-plc-example2. Vì mình dùng project ở bài http://arduino.vn/tutorial/5961-inut-plche-thong-giam-sat-nuoc-sinh-hoat-bang-huong-dan-giam-sat-plc-tren-internet#index14 làm mẫu (ở bài đó mình checkout inut-plc-example2) nên bây giờ mình phải gõ git merge inut-plc-example2 

Heroku cho chúng ta free 5 app, nhưng các bạn có thể tạo một email khác và dùng thôi heart

Okay, sau merge, các bạn chạy lệnh sau để lưu lại hành động merge vừa rồi. (Sau này khi sửa chữa gì ở project này, bạn chỉ việc chạy từ đoạn lệnh dưới đây, không cần checkout master hay merge nữa)

git add .

git commit -m "Nội dung bạn muốn lưu lại"

Để chính thức pulish version hiện tại, bạn gõ lệnh sau: (bạn nhớ là phải commit trước nha) (lần đầu nó chậm thui, chứ lần sau là chỉ update những phần thay đổi nên sẽ rất nhanh nhé!)

git push heroku master

P/s: Trong quá trình nó chạy, nhìn ngầu ảo lòi lắm nhé!

Để xem logs quá trình chạy của heroku, bạn chỉ việc gõ 

heroku logs

Xem thử nè https://immense-depths-52781.herokuapp.com/ui/#/0 (OFFLINE do mình chuyển cho khách module này ù)!

Các bạn nhớ là phải sửa đổi ở máy tính, sửa xong ok rồi

git add .

git commit -m "nội dung sửa"

git push heroku master 

như hướng dẫn nhé. 

Tuyệt đối không sửa trên app heroku! Vì sao 30 phút không có truy cập thì app heroku sẽ tự tắt á!

Tada! Xong rồi!

lên
4 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

"Độ hoàn toàn" một cổng Terminal RS-232 mà không sử dụng jack 3.5mm

Ở Việt Nam, việc một bạn học sinh mua một mạch Intel Galileo khá là khó. Trong đó, khó nhất là tiền để mua một mạch Intel Galileo, tuy nhiên, khi mua được mạch về, việc bạn có sử dụng hết chức năng của Intel Galileo hay không là một việc khác. Cái hay nhất, theo tớ nghĩ trên Intel Galileo, mà Arduino không có và bạn khó tiếp cận nhất đó là hệ điều hành Linux. Thực sự thì có nhiều cách để vào Linux của Intel Galileo. Tuy nhiên, nếu bạn muốn cài một hệ điều hành xịn như Debian để biến Intel Galileo trở thành một "máy tính" siêu "xịn" thì bạn buộc phải dùng tới cổng RS - 232. Nếu ở các trung tâm công nghệ lớn thì bạn có thể dễ dàng tìm mua các cổng "RS-232 to DB9" để dễ dàng làm theo các bài hướng dẫn trước. Tuy nhiên, không phải ai cũng may mắn như vậy, trong bài viết này, chúng ta sẽ tiếp cận với một cách khác mà tớ đã sử dụng để giải quyết bài toán không có cáp "RS-232 to DB9".

lên
2 thành viên đã đánh giá bài viết này hữu ích.