Trong bài viết này, tôi sẽ đề cập đến việc lưu trữ ứng dụng Node.js trên các máy chủ lưu trữ được chia sẻ của NamecheapâÃÂÃÂs bằng cPanel. Tôi sẽ không thảo luận về việc thiết lập máy chủ cơ sở dữ liệu hoặc giao diện người dùng React cho ứng dụng web của bạn trong bài viết này. Thay vào đó, tôi muốn tập trung vào những thách thức mà bạn có thể gặp phải khi chạy ứng dụng Node trong môi trường lưu trữ được chia sẻ. == Đừng chậm trễ, hãy tổ chức ngay hôm nay! == Trước khi bạn đi quá xa trên con đường phát triển ứng dụng web của mình, bạn nên đưa một phiên bản ổn định lên mạng. Điều này có thể xảy ra trong môi trường sản xuất của bạn hoặc trong môi trường dàn dựng tương tự như môi trường sản xuất của bạn. Hầu hết mọi người sẽ đợi cho đến khi ứng dụng của họ gần như hoàn tất trước khi lưu trữ ứng dụng đó trực tuyến âÃÂàvà đây là những gì tôi đã làm khi phát triển ứng dụng web React và Node đầu tiên của mình. Tuy nhiên, tại thời điểm đó, tôi gặp rất nhiều thách thức trong việc chạy máy chủ Node API của mình và tôi cũng phải thực hiện nhiều thay đổi đối với ứng dụng React của mình. Đó là lý do tại sao tôi khuyên bạn nên sớm đưa một phiên bản trực tuyến vào để bạn có thể điều chỉnh trước khi viết quá nhiều mã. == Sử dụng dịch vụ lưu trữ chia sẻ == Các máy chủ lưu trữ chia sẻ của NamecheapâÃÂàsử dụng cPanel làm giao diện bảng điều khiển để quản lý máy chủ Apache. Những hướng dẫn này cũng sẽ giúp ích cho bất kỳ ai đang sử dụng dịch vụ lưu trữ được chia sẻ với cPanel, chẳng hạn như A2 Hosting và GoDaddy. Tôi cũng đã thiết lập máy chủ Namecheap với chứng chỉ SSL và cPanel theo mặc định sẽ chuyển hướng tất cả lưu lượng HTTP sang HTTPS. Vì vậy, tất cả lưu lượng truy cập vào máy chủ của tôi đều an toàn. Bạn sẽ tìm thấy nhiều hướng dẫn hướng dẫn bạn cách lưu trữ ứng dụng Node trên dịch vụ lưu trữ VPS (Máy chủ riêng ảo), chẳng hạn như DigitalOcean. Nếu bạn đang bắt đầu lại từ đầu thì việc lưu trữ bằng dịch vụ như vậy sẽ giúp bạn có nhiều quyền kiểm soát hơn. Nhưng nó thường đắt hơn shared hosting. Và trong trường hợp của tôi, tôi đã trả tiền cho dịch vụ lưu trữ chia sẻ của Namecheap. Một số ưu điểm khi sử dụng cPanel và shared hosting: - Được quản lý bằng bảng điều khiển quản lý web đơn giản - Dễ dàng cấu hình - Giá rẻ, đặc biệt nếu bạn đã lưu trữ một trang web / tên miền - Có thể dễ dàng thiết lập các trang web động bằng các công nghệ khác như PHP, v.v., nếu bạn đang khám phá các công nghệ khác nhau Một số nhược điểm: - Ít âÃÂÃÂkiểm soátâÃÂàvì bạn không có quyền truy cập vào hệ điều hành cơ bản - Không thể mở rộng == Mọi thứ sẽ đi về đâu? == Trước tiên, bạn cần tạo một thư mục cho tất cả các tệp nguồn cho ứng dụng Nút của mình. Tôi đã tạo một thư mục có tên âÃÂÃÂnodejsâÃÂàtrong thư mục /home/username và trong thư mục này, sau đó tôi tạo một thư mục con cho mỗi ứng dụng. Bây giờ hãy tải tất cả các tệp nguồn của bạn vào thư mục con này. Đảm bảo bạn cũng bao gồm tệp pack.json. Bạn không tải lên thư mục âÃÂÃÂnode_modulesâÃÂàvì thư mục đó sẽ được tạo bằng trình quản lý gói một lát sau. Hãy nhớ rằng chúng tôi chỉ lưu trữ máy chủ Node API trong ví dụ về kiến ​​trúc ứng dụng web của chúng tôi. Chúng tôi sẽ không lưu trữ ứng dụng React bằng Node (thêm về chủ đề này trong bài viết tiếp theo). httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_1.jpg Bố cục thư mục hiển thị các tệp nguồn Node trong thư mục /home/username/nodejs/mynodeapi và có một tập tin .htaccess trong thư mục /home/username/public_html/myapi == Sự cố âÃÂàỨng dụng nút không thể truy cập các cổng == Thách thức lớn nhất đối với tôi là chạy ứng dụng API Node của mình. Vấn đề là mã mẫu được đưa ra trong tài liệu hỗ trợ của NamecheapâÃÂàkhông hoạt động! Nó cố gắng tạo một máy chủ http để nghe trên cổng 80 và một máy chủ http **s** trên cổng 443. Tuy nhiên, tôi luôn gặp lỗi EACCESS nói rằng tôi không có quyền để sử dụng các cổng đó. == Giải pháp âÃÂàNút khôngâÃÂàkhông cần truy cập vào cổng! == Cuối cùng, tôi đã tìm ra giải pháp bằng cách đọc nhận xét của người dùng SibProgrammer trong chuỗi về Plesk, một bảng điều khiển lưu trữ khác. cPanel sử dụng máy chủ ứng dụng Phusion Pasbah để lưu trữ các ứng dụng Node, cũng như Plesk. Tóm tắt: Khi bạn gửi một yêu cầu từ trình duyệt của mình, nó sẽ chuyển đến máy chủ Apache, sau đó đến Phusion Pasbah và sau đó đến ứng dụng Node của bạn. Ứng dụng Nút của bạn không cần sở hữu cổng vì nó được xử lý ngược dòng bởi các máy chủ ứng dụng Apache và Phusion Pasbah. Điều này đơn giản hóa mã để tạo httpserver trong tệp www.js (hoặc app.js) của bạn: * www.js * Thử nghiệm tạo http server cho Namecheap. * Dave */ const http = require('http http.createServer(function(request, response) { response.writeHead(200, {'Content-Type': 'text/html response.endh1>Xin chào Worldh1 lắng nghe( process.env .PORT); console.log('Ứng dụng đang chạy Một vài điều cần lưu ý: - Nghe trên process.env.PORT (thay vì cài đặt thủ công 80 hoặc 443). Khi kiểm tra, tôi nhận thấy rằng process.env.PORT không được xác định! Nhưng thật thú vị là điều đó không quan trọng trong trường hợp này. - Sử dụng máy chủ http ngay cả khi bạn đã thiết lập SSL. cPanel đã định cấu hình Apache để chuyển hướng tất cả lưu lượng HTTP sang HTTPS và do đó đáp ứng tất cả các yêu cầu của HTTPS. Bạn không cần định cấu hình thủ công ứng dụng Nút của mình để thiết lập máy chủ https và đọc chứng chỉ SSL của mình. == Các bước cuối cùng cho máy chủ Node API == Giờ đây, quá trình làm theo hướng dẫn sẽ tương đối đơn giản để thiết lập ứng dụng nút của bạn. httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_2.jpg Ảnh chụp màn hình trang cấu hình Node.js của cPanelâÃÂÃÂs - Chọn phiên bản Node.js và chế độ ứng dụng phù hợp (Nên sản xuất). - âÃÂÃÂApplication rootâÃÂàsẽ là thư mục nơi bạn đã tải lên các tệp nguồn của mình trước đó (âÃÂànodejs/mynodeapiâÃÂàtrong ví dụ trên). - âÃÂÃÂApplication URLâÃÂàsẽ là URL được sử dụng để truy cập API của bạn (âÃÂÃÂmyapià ¢ÃÂàtrong ví dụ). Tên bạn cung cấp trong hộp này sẽ được sử dụng để tạo thư mục con trong thư mục /home/username/public_html của bạn. Nó không nhất thiết phải cùng tên với thư mục âÃÂÃÂApplication rootâÃÂà(nhưng thường sẽ như vậy). - âÃÂÃÂTệp khởi động ứng dụngâÃÂàsẽ là www.js hoặc app.js tùy thuộc vào cách bạn đã tạo ứng dụng Node của mình. - Tùy thuộc vào cách bạn muốn định cấu hình tệp nhật ký Hành khách. - Sau khi bạn đã tạo ứng dụng, bạn sẽ thấy nút à¢Ã ÂÃÂRun NPM InstallâÃÂÃÂChạy cài đặt NPM. ¢ÃÂÃÂ. Chạy cái này và nó sẽ tạo thư mục âÃÂÃÂnode_modulesâÃÂàvới tất cả các mô-đun phụ thuộc mà ứng dụng của bạn cần. Khi bạn đã thiết lập và khởi động ứng dụng Node của mình, ứng dụng này sẽ tạo thư mục con trong thư mục /home/public_html của bạn. Bây giờ bạn sẽ cần vào thư mục đó và chỉnh sửa tệp .htaccess và thêm vào dòng sau: RewriteEngine tắt Điều này ngăn máy chủ Apache viết lại (hoặc chuyển hướng) bất kỳ yêu cầu nào cần chuyển đến máy chủ API của bạn một cách nguyên vẹn. Và đóâÃÂànó! Giờ đây, ứng dụng Node API của bạn sẽ được thiết lập và chạy cũng như phản hồi các lệnh gọi API của bạn. == Vậy whatâÃÂàtiếp theo là gì? == Bây giờ chúng tôi đã thiết lập máy chủ Node API, chúng tôi có thể thay đổi giao diện người dùng React trong môi trường phát triển của mình để trỏ đến máy chủ API này. Hoặc chúng ta có thể sử dụng Postman để kiểm tra lệnh gọi API của mình. Trong bài viết tiếp theo, chúng ta sẽ xem xét việc lưu trữ ứng dụng React trên Namecheap và cPanel.