Bạn đã xây dựng một Nút. js và bây giờ nó đã sẵn sàng đối mặt với thế giới. Điều đó có nghĩa là bạn sẽ phải triển khai nó vào môi trường sản xuất
Làm thế nào để bạn bắt đầu một Node đúng cách. ứng dụng js trong sản xuất?
Đừng để những câu hỏi này ngăn cản bạn
Điều gì sẽ xảy ra nếu bạn có thể tự tin triển khai khi biết rằng ứng dụng của mình luôn hoạt động?
Tìm hiểu lý do tại sao trình quản lý quy trình là công cụ không thể thiếu trong môi trường sản xuất và đâu là ba công cụ phổ biến nhất
Nhưng trước tiên, hãy nói về việc khởi động một ứng dụng ở nền trước so với ở chế độ nền và điều gì sẽ xảy ra khi ứng dụng gặp sự cố
Quá trình nền trước và nền
Trong quá trình phát triển, bạn có thể khởi động Nút của mình. js bằng cách mở terminal và gõ node index.js
[hoặc bất kỳ tệp nào là điểm bắt đầu của ứng dụng của bạn]. Nếu lệnh này tồn tại trong gói. json, bạn chạy nó với NPM bằng cách sử dụng npm start
Khi bạn nhấn CTRL+C hoặc đóng thiết bị đầu cuối, ứng dụng cũng sẽ thoát. Đó thường là những gì chúng tôi muốn trong quá trình phát triển, nhưng không phải trong quá trình sản xuất
Trong môi trường sản xuất, một ứng dụng sẽ tiếp tục chạy ngoài vòng đời của thiết bị đầu cuối hoặc kết nối SSH của chúng tôi
Khi bạn làm việc trên một ứng dụng cục bộ, bạn khởi động ứng dụng đó như một quy trình tiền cảnh. Ở phía trước, đầu vào bàn phím của bạn được chuyển hướng đến quy trình. Đó là lý do tại sao khi bạn nhấn CTRL+C, nó sẽ gửi tín hiệu SIGINT
và dừng ứng dụng. Thay vào đó, những gì chúng tôi muốn là khởi động ứng dụng ở chế độ nền
Để bắt đầu một ứng dụng ở chế độ nền, bạn chỉ cần thêm &
vào cuối lệnh. Sử dụng ví dụ từ trước đó, node index.js &
sẽ bắt đầu Nút của bạn. js ở chế độ nền sẽ duy trì ngay cả sau khi bạn đóng thiết bị đầu cuối hoặc kết nối SSH với máy chủ sản xuất của mình
Điều gì xảy ra khi ứng dụng của bạn gặp sự cố?
Các ứng dụng chắc chắn gặp sự cố trong quá trình sản xuất do một trong nhiều lý do — rò rỉ bộ nhớ, từ chối lời hứa chưa được thực hiện hoặc vòng lặp vô hạn. Với ứng dụng của bạn hiện đang chạy độc lập, điều gì sẽ xảy ra nếu ứng dụng gặp sự cố hoặc ngừng phản hồi?
Để giải quyết vấn đề này, chúng tôi sẽ cần một quy trình khác quản lý ứng dụng của chúng tôi và chịu trách nhiệm khởi động lại ứng dụng trong những trường hợp như vậy. Đó chính xác là những gì các nhà quản lý quy trình làm
Trình quản lý quy trình khởi động ứng dụng của bạn dưới dạng quy trình nền và sẽ khởi động lại khi ứng dụng gặp sự cố. Nó cũng có thể tự động khởi động ứng dụng của bạn khi khởi động hệ thống nếu bạn muốn
Giữ cho ứng dụng của bạn tồn tại cho đến nay là tính năng quan trọng nhất của trình quản lý quy trình
Ba trình quản lý quy trình được sử dụng nhiều nhất bởi Node. js là PM2, Docker và Systemd. Tùy thuộc vào tình huống và mục đích của bạn, bạn có thể sử dụng cái này tốt hơn cái kia. Cả ba đều được sử dụng bởi nhiều ứng dụng trong sản xuất và bạn không thể sai với một trong số chúng
Trình quản lý quy trình cho Node. ứng dụng js
PM2
PM2 là trình quản lý quy trình phổ biến nhất trong Node. cộng đồng js. Cơ sở mã của PM2 được viết bằng JavaScript và được thiết kế dành riêng cho Node. ứng dụng js. Nó có giao diện người dùng đẹp và cung cấp chế độ cụm với tính năng cân bằng tải vượt trội. Cái sau giúp dễ dàng mở rộng quy mô Node. js bằng cách sử dụng nhiều lõi CPU
Để bắt đầu với PM2, tôi khuyên bạn nên làm theo hướng dẫn bắt đầu nhanh của họ. Khi bạn muốn tìm hiểu cách sử dụng một thư viện hoặc công cụ mới, tài liệu chính thức luôn là một nơi tốt để bắt đầu
Khi tôi đang triển khai một ứng dụng không nằm trong vùng chứa, PM2 là trình quản lý quy trình tiếp theo của tôi. Nó rất dễ sử dụng cho phép tôi tập trung vào phát triển ứng dụng
docker
Nếu đang sử dụng Docker để chứa và triển khai ứng dụng của mình, bạn có thể sử dụng các tính năng quản lý quy trình tích hợp. Với Docker CLI, bạn có thể định cấu hình vùng chứa để tự động khởi động lại khi ứng dụng của bạn gặp sự cố
Bạn cũng có thể xác định một HEALTHCHECK
trong Dockerfile của mình. Docker sẽ sử dụng nó để xác định xem ứng dụng của bạn có khỏe không. Kiểm tra tình trạng hữu ích khi ứng dụng của bạn có thể đang chạy, nhưng không thể xử lý các yêu cầu mới vì nó bị mắc kẹt trong một vòng lặp vô hạn chẳng hạn
Khi tôi đang triển khai một Nút. js với Docker Tôi không sử dụng PM2 vì hầu hết các lợi ích của nó đã được thay thế bằng Docker
hệ thống
Mọi hệ điều hành đều có trình quản lý quy trình mặc định. Đối với hầu hết các bản phân phối Linux phổ biến, đó là systemd
Bạn có thể xem systemd là trình quản lý quy trình chính. Nếu bạn đang sử dụng trình quản lý quy trình, chẳng hạn như PM2 hoặc Docker, thì bản thân chúng được quản lý bởi systemd. Systemd là quy trình đầu tiên được nhân Linux khởi động khi khởi động hệ thống và nó chịu trách nhiệm khởi động tất cả các quy trình khác
Systemd hơi khó học nếu bạn không quen với quản trị hệ thống. Tuy nhiên, sử dụng systemd là một cách tuyệt vời để tìm hiểu về DevOps và trở nên thoải mái hơn khi sử dụng Linux. Bài viết cũ nhưng vẫn phù hợp này chỉ cho bạn cách sử dụng systemd với Node. js
Phần kết luận
Chúng ta đã nói về sự khác biệt giữa việc chạy một quy trình ở phía trước so với ở phía sau. Trong môi trường sản xuất, chúng tôi muốn các ứng dụng của mình tiếp tục chạy sau khi chúng tôi đóng thiết bị đầu cuối, đó là lý do tại sao chúng tôi chạy chúng trong nền
Các ứng dụng chắc chắn sẽ gặp sự cố và trình quản lý quy trình đảm bảo khởi động lại chúng khi chúng xảy ra. Họ giữ cho ứng dụng của bạn tồn tại và họ cũng có thể tự động khởi động ứng dụng khi khởi động hệ thống
PM2 là trình quản lý quy trình được sử dụng nhiều nhất trong Node. js và nó rất dễ sử dụng. Nếu ứng dụng của bạn nằm trong vùng chứa, Docker có các tính năng quản lý quy trình tích hợp. Nếu bạn muốn tìm hiểu DevOps và muốn thoải mái hơn với Linux thì sử dụng systemd là một lựa chọn tuyệt vời
Còn nhiều điều nữa để chạy một Nút sản xuất. js bên cạnh việc khởi động lại tự động – bạn phải thêm nhật ký hữu ích và thiết lập theo dõi & cảnh báo trong số những thứ khác. Bạn không cần phải học những điều đó trước khi triển khai ứng dụng của mình
Đưa ứng dụng của bạn vào hoạt động, cho cả thế giới thấy những gì bạn đã xây dựng và lo lắng về phần còn lại sau
Chúc mừng vận chuyển. 🚀
Trở thành một Node lành nghề. nhà phát triển js
Mỗi thứ Ba khác, tôi gửi email với các mẹo về xây dựng Node vững chắc. ứng dụng js. Nếu bạn muốn phát triển với tư cách là một nhà phát triển web và cùng tôi phát triển sự nghiệp, hãy gửi email của bạn bên dưới. 👇