Chúng tôi hiện đang phát triển một trang web (TYPO3 theo Apache) cho một khách hàng được hỗ trợ bởi ứng dụng node.js/socket.io cung cấp bản cập nhật thời gian thực cho nội dung được phân phát từ CMS.Thiết lập Node.js để dễ triển khai và cập nhật
Vì đây là dự án node.js đầu tiên của chúng tôi, tôi không có bất kỳ phương pháp hay nhất nào để thực hiện khi cài đặt hoàn hảo nên tôi đã dành thời gian nghiên cứu kỹ thuật triển khai.
Một vài câu hỏi vẫn cho tôi để đạt được một thiết lập tốt đó:
là dễ dàng cho khách hàng để triển khai. Điều này rất quan trọng vì trang web của chúng tôi sẽ được tích hợp trong cài đặt TYPO3 'sống', phục vụ nhiều trang web và đang chạy trên các máy chủ không được quản lý bởi khách hàng nhưng tổ chức khác (tập trung) thực hiện cuộc gọi hỗ trợ và thay đổi máy chủ quá trình chậm.
Nên dễ cập nhật. Như đã đề cập yêu cầu khởi động lại và thực hiện thay đổi máy chủ là một quá trình chậm, do đó, việc cài đặt nút nên khởi động lại/cập nhật khi nhận được các thay đổi được đẩy lên phần cài đặt trực tiếp bằng cách sử dụng
git
.
Deployment
Các general consensus có vẻ là để sử dụng forever
khi nói đến việc triển khai các ứng dụng nút để giữ cho chúng chạy. Tôi đã thử nghiệm forever
và có vẻ như hoạt động tốt khi được cài đặt bởi npm install forever -g
(toàn cầu). Điều này sẽ yêu cầu hỗ trợ bên ngoài để cài đặt trên toàn cầu trên môi trường sống mặc dù, vì vậy tôi muốn có nó chạy từ thư mục node_modules
của ứng dụng, nhưng tôi đã không thể tạo một trình bao bọc vững chắc để làm như vậy.
Ngoài ra, forever
hoạt động tốt, nhưng nó phải được bắt đầu theo cách thủ công. Điều gì sẽ là cách tiếp cận tốt nhất để đảm bảo rằng nó được bắt đầu trên máy chủ khởi động và tiếp tục chạy?
- Một đoạn mã đơn giản
init.d
? - Viết trình bao bọc cơ quan giám sát?
- Tác vụ lên lịch TYPO3 kiểm tra trạng thái
forever
?
phát triển nhanh/Restart vào cập nhật
Chúng tôi hiện vẫn đang trong giai đoạn phát triển của dự án và mỗi khi tôi thay đổi các ứng dụng Node.js tôi tự khởi động lại node
hoặc forever
. Điều này làm việc, nhưng là xa lý tưởng. Có một số npm
module nhỏ hơn mà rà soát để sửa đổi tập tin và khởi động lại node
khi có thay đổi được phát hiện, như:
- Nodemon
- Node.js Supervisor
- Bounce
- Nodules (mà không yêu cầu khởi động lại nút, do đó có thể dễ dàng kết hợp với
forever
) - Up
Có ai có kinh nghiệm với bất kỳ điều nào trong số này không?
Cập nhật: Tại sao bạn không sử dụng Cluster?
Cluster module cung cấp chức năng tương tự thông qua cơ chế reload, nhưng doesn't work with Node 0.5+. Các core Cluster module (Node 0.6+) mà thay thế nó không có tất cả các tính năng này nhưng chỉ cung cấp phân cụm. Mà lần lượt doesn't play well with socket.io. Ít nhất not without using Redis (đó là một vấn đề đối với chúng tôi, bởi vì chúng tôi không thể buộc một dịch vụ prereq khác cho khách hàng).
-
Rõ ràng là tôi đang cố gắng để tìm ra giải pháp ổn định nhất mà kết hợp một update-restarter với forever
trước khi bàn giao dự án cho khách hàng và tôi thực sự hy vọng bất cứ ai đã tạo ra một sự kết hợp đã được chứng minh của kỹ thuật.
và cho bất kỳ ai khác nghĩ về Cluster: nó chưa được cập nhật trong ba năm qua. – oligofren