Triển khai ứng dụng nodejs cùng với PM2

    Triển khai project là vấn đề cần thiết khi ta đã kiểm thử và test build nó từ local của mỗi dev. Với nodejs khi build trên môi trường server bạn sẽ gặp rất nhiều vấn đề. Bạn sẽ không thể đảm bảo ứng dụng không bao giờ bị crash, khi ứng dụng bị chết ta phải tự động run lại, hoặc cách tối thiểu nhất là viết 1 script kiểm tra và cho phép tự động khởi động lại hệ thống server node. Việc lam phiền phức này với nodejs giờ đây đã quá trở lên đơn giản với pm2. 1 supper library với rất nhiều tính năng từ hỗ trợ tự động khơi động lại app, load balancing, quản lý log …vv. Mọi thiết lập chỉ trong tích tắc với vài câu lệnh ngắn gọn

Tào lao cũng nhiều ghê rồi. Nào ta cùng xem bộ mặt pm2 nó thật sự như nào.
  • Giới thiệu pm2: Như đã nói ở trên – pm2 là 1 ứng dụng nodejs giúp quản lý tiến trình ứng dụng nodejs trên môi trường sản phẩm (production). Nó giữ cho ứng dụng luôn luôn sống
  • Cài đặt pm2: bạn phải đảm bảo đã cài đặt bộ quản lý package npm, nó là gói quản lý đính kèm khi bạn cài đặt nodejs đi cùng. Sử dụng lệnh sau để cài đặt gói dưới chế độ global
                                                                         npm install pm2 –g

1. Lệnh cơ bản khi làm việc với pm2

  • pm2 start <name_app>: khởi dộng app, < name_app> có thể là:
    • Tên file khởi chạy trong ứng dụng
    • Id của app  (liệt kê id app bằng pm2 list)
  • pm2 start <name_app> -i <number_cpu> : number_cpu là số nhân của cpu, để là all thì sẽ start toàn bộ trên các nhân (hay còn gọi là cluster, load balance) tận dụng tối đa các  nhân xử lý và cơ chế của nó là roud robin
  • pm2 list: Liệt kê ra danh sách các ứng dụng đang khởi chạy
         
  • Pm2 restart <id_app> : Khỏi động lại app dựa vào id của app, nếu để là pm2 restart all => khởi động lại toàn bộ app đang chạy
  • Pm2 reload <id_app> : Nạp lại toàn bộ app dựa vào các thông số như của restart app
  • Pm2 delete <id_app>: delete app dựa theo id và nếu để là pm2 delete all => delete toàn bộ các app đang run
  • Pm2 describe <id_app>: Xem thông tin chi tiết app đang chạy
  • Pm2 monit: hiển thị giao diện điều khiển xem chi tiết của tất cả các app
  • Pm2 logs
    • pm2 logs : hiển thị tất cả các lịch sử
    • pm2 logs api: hiển thị ra các api request dưới định dạng json (log có kết quả trả ra json)
    • pm2 flush : Xóa tất cả các log

2. Kịch bản khởi động tự động

        PM2 cung cấp 1 cách tự động để giữ cho các ứng dụng Node còn sống. PM2 sẵn có các kịch bản khởi động và cấu hình, nó đủ thông minh để lưu toàn bộ các danh sách ứng dụng và khởi chạy chúng khi hệ thống restart.
  • Chạy lệnh sau để PM2 sinh ra kịch bản khởi động trên hệ thống (chọn os bạn đang sử dụng tương ứng với các tham số)
                               sudo pm2 startup [ubuntu|centos|gentoo|systemd]
  • Sau khi bạn đã start toàn bộ các ứng dụng Node lên, thì hãy chạy lệnh sau để đảm bảo chúng được chạy sau khi hệ thống khởi động lại.
                               sudo pm2 save
  • Đăng ký khởi động PM2 với hệ thống bằng lệnh sau:
                               sudo -c "chmod +x /etc/init.d/pm2-init.sh; chkconfig --add pm2-init.sh"
  • Để đảm bảo PM2 được đăng ký khởi động thành công hãy dùng lệnh sau để kiểm tra
                               sudo chkconfig --list pm2-init.sh

3. Quản lý pm2 với key metricts

        Key metricts là 1 công cụ trực quan được thiết lập kết hợp cùng với pm2 để quản lý các app ứng dụng của bạn. Khi làm việc với pm2 bạn có thể xem các log request, xem các tiến trình cũng như theo dõi cpu, ram, disk trên server của bạn. Hiện tại key metricts có 2 phiên bản miễn phí và trả phí.
        Hiện có khá nhiều đề cập và bài viết đên cách sử dụng của key metricts lên mình cũng sẽ không đề cập trong bài viết này mà sẽ gửi các bạn một số link tham khảo tại đây hoặc tại đây
Trên đây là những giới thiệu cách làm việc cơ bản với pm2. Comment thêm phía dưới để mình và bạn cùng bàn luận và học hỏi thêm về nó nhé