-2

Triển khai ứng dụng nodejs lên heroku

Heroku Heroku cung cấp dịch vụ máy chủ 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 tốc độ truy cập cao hay dung lượng lớn.

Kiến thức cơ bản

Để làm việc với heroku bạn cần chuẩn bị một số kiến thức cơ bản như

Sử dụng git command

Đã tạo 1 tài khoản trên heroku. https://signup.heroku.com/?c=70130000001x9jFAAQ

Cài đặt thành công heroku cli. Nếu bạn chưa cài đặt vui lòng lựa chọn phiên bản và cài đặt tại đây

Biết sử dụng một trong các ngôn ngữ mà heroku support tại đây

Oke nếu bạn đã chuẩn bị đẩy đủ các điều kiện trên thì ta sẽ bắt đầu ngay thôi

Chú ý: Trong phạm vi bài viết này mình sẽ hướng dẫn các bạn deploy ứng dụng lên heroku trên nền tảng nodejs các nền tảng khác cũng tương tự.

Bạn có thể tham khảo tài liệu trên trang chủ của heroku.

https://devcenter.heroku.com/articles/getting-started-with-nodejs#introduction

Bắt đầu với Node.js trên Heroku Tooloku

Tải xuống và cài đặt và Thiết lập, hãy thực hiện chính xác, sau đó bạn có thể chạy heroku từ dòng lệnh.

$ heroku
Usage: heroku COMMAND [--app APP] [command-specific-options]
...

Thực hiện login từ heroku như sau

$ heroku login
Enter your Heroku credentials.
Email: [email protected]
Password (typing will be hidden):
Authentication successful.

thực hiện logout Heroku.

heroku logout
 Local credentials cleared.

sử dụng git sao chép ứng dụng nodejs được cung cấp dưới dạng mẫu


git clone https://github.com/heroku/node-js-getting-started.git

$ heroku create
Creating gentle-reaches-3456... done, stack is cedar-14
https://gentle-reaches-3456.herokuapp.com/ | https://git.heroku.com/gentle-reaches-3456.git
Git remote heroku added
$
$ git remote -v
heroku  https://git.heroku.com/gentle-reaches-3456.git (fetch)
heroku  https://git.heroku.com/gentle-reaches-3456.git (push)
origin  https://github.com/heroku/node-js-getting-started.git (fetch)
origin  https://github.com/heroku/node-js-getting-started.git (push)
$
$ git push heroku master
Counting objects: 375, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (295/295), done.
Writing objects: 100% (375/375), 208.74 KiB | 0 bytes/s, done.
Total 375 (delta 50), reused 375 (delta 50)
...
...
$ heroku ps:scale web=1
Scaling dynos... done, now running web at 1:1X.
$ heroku open

Xác nhận quá trình được triển khai

Tail

$ heroku log --tail
2014-12-12T11:10:13.958570+00:00 heroku[router]: at=info method=GET path="/" host=gentle-reaches-3456.herokuapp.com request_id=005ea777-e7b0-4e6a-a659-e291afc2d634 fwd="126.54.29.38" dyno=web.1 connect=1ms service=3ms status=304 bytes=130

apps:info


 heroku apps:info
=== gentle-reaches-3456
Dynos:         1
Git URL:       https://git.heroku.com/gentle-reaches-3456.git
Owner Email:   [email protected]
Region:        us
Repo Size:     211k
Slug Size:     5M
Stack:         cedar-14
Web URL:       https://gentle-reaches-3456.herokuapp.com/
Workers:       0
updating...done. Updated to 3.20.0

cmd PS

$ heroku ps
=== web (1X): `node index.js`
web.1: up 2014/12/12 20:09:48 (~ 9m ago)

Chế độ bảo trì

Trong khi ở chế độ bảo trì, bạn có thể kích hoạt chế độ bảo trì tích hợp của HEROKU khi ở chế độ bảo trì, ứng dụng của bạn là một trang bảo trì tĩnh cho tất cả khách truy cập.

Trong khi chế độ bảo trì được kích hoạt, mã lỗi H80 được trả về trong nhật ký của bạn.


$ heroku maintenance:on
Enabling maintenance mode for gentle-reaches-3456... done

Tắt chế độ bảo trì

$ heroku maintenance:off
Disabling maintenance mode for myapp... done

Để kiểm tra trạng thái bảo trì hiện tại của ứng dụng:

$heroku maintenance
off

Chế độ bảo trì và dynos Web dynos tiếp tục chạy, nhưng các bộ định tuyến của Heroku chặn tất cả các yêu cầu HTTP đến với chúng Dynos của các loại khác (chẳng hạn như dynos worker ) cũng tiếp tục chạy và bạn có thể chạy dynos một lần như bình thường.

run

$ heroku run bash
Running `bash` attached to terminal... up, run.4882
~ $
~ $ ls
Procfile  README.md  app.json  index.js  node_modules  package.json  public  vendor
~ $ exit
$

Procfile. Với Procfile trong ứng dụng Root


$ cat Procfile
web: node index.js

releases

$ heroku releases
=== gentle-reaches-3456 Releases
v4  Deploy 8c8b5ac   [email protected]  2014/12/12 20:33:15 (~ 1m ago)
v3  Deploy 1adc26f   [email protected]  2014/12/10 23:25:32
v2  Enable Logplex   [email protected]  2014/12/10 23:22:44
v1  Initial release  [email protected]  2014/12/10 23:22:43
$
$ heroku release:rollback v3

Biến môi trường


$ heroku config:set name=hiyuzawa
Setting config vars and restarting gentle-reaches-3456... done, v9
name: hiyuzawa
$ heroku config:get name
hiyuzawa
$ heroku config
=== gentle-reaches-3456 Config Vars
name: hiyuzawa

Bây giờ bạn có thể tham khảo process.env.name từ nodejs
Để xem env này trong môi trường phát triển cục bộ, hãy sử dụng foreman.


$ more .env
name=hiyuzawa
$ foreman start
20:52:20 web.1  | started with pid 26689
20:52:21 web.1  | Node app is running at localhost:5000

Đừng quên thêm file .gitignore


$ cat .gitignore
node_modules
.env

Tài liệu tham khảo:

https://qiita.com/hiyuzawa/items/0c17de747b27b99907d0 https://devcenter.heroku.com/articles/getting-started-with-nodejs#introduction


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.