1. Tuyển Mod quản lý diễn đàn. Các thành viên xem chi tiết tại đây

Cách Phân biệt Web Server và App Server?

Chủ đề trong 'Rao vặt Khu Vực Hà Nội' bởi minhduongpro, 11/01/2020.

  1. 1 người đang xem box này (Thành viên: 0, Khách: 1)
  1. minhduongpro

    minhduongpro Thành viên rất tích cực

    Tham gia ngày:
    12/07/2017
    Bài viết:
    2.346
    Đã được thích:
    1
    Web server là một chương trình nhận request trong khoảng trang web của bạn và làm cho 1 vài xử lý cho request đấy. Sau đấy sẽ chuyển request đấy cho Rails app. Nginx và Apache là hai ông lớn web server mà bạn sẽ đụng độ.

    nếu request ấy là thứ gì đó ko thường xuyên bị thay đổi, tỉ dụ như một file CSS, JS hay hình ảnh, thì sở hữu thể request này ko cần đến tay Rails. Web server có thể tự xử lý được mà ko cần báo mang app, nó sẽ nhanh hơn theo cách này.

    Web servers sở hữu thể xử lý những SSL requests, cung cấp những file tĩnh và assets, nén những request lại, và sở hữu thể khiến được một số việc mà phần đông mọi website cần. Và nếu như Rails app cần xử lý request, web server sẽ chuyển request đấy cho app server.

    Thế nào là một app server?

    App server là thứ đích thực chạy trong Rails app của bạn. App server vận chuyển code của app lên và giữ app ấy trong bộ nhớ. Lúc app server nhận được request từ web server, nó sẽ báo lại cho Rails app. Sau lúc app xử lý xong request đó, app server sẽ gửi response lại cho web server (và rút cục là cho người dùng).

    Bạn sở hữu thể chạy rất nhiều những app servers 1 mình, ko cần mang web server. Đấy cũng chính là các gì bạn đã làm cho ở môi trường development. Ở môi trường production, thường phải cần một web server đặt phía trước. Nó sẽ xử lý rộng rãi app 1 khi, render assets tốc độ hơn và xử lý sở hữu rộng rãi request.

    với cả tá app servers cho Rails app, như Mongrel, Unicorn, Thin, Rainbows, and Puma. Mỗi cái mang 1 điểm hay riêng, nhưng xét cho cùng, chúng đều khiến cho cùng 1 việc - giữ cho app chạy và xử lý các requests.

    >>> Xem thêm: bán lenovo thinksystem st550



    Thế còn Passenger thì sao?

    Phusion Passenger có một chút dị biệt. Trong "standalone mode", nó hoạt động giống như một app server. Nhưng với còn với thể được build ngay bên trong một web server, nên bạn không cần 1 app server riêng để chạy Rails app.

    Điều này thật sự thuận tiện, đặc trưng nếu như bạn đang mang dự kiến chạy phổ thông apps và không muốn tốn thời kì cho việc setup một app server cho từng Rails app. Sau khi cài đặt Passenger, bạn chỉ cần trỏ web server trực tiếp vào Rails app (thay vì trỏ vào 1 app server), và Rails app sẽ bắt đầu xử lý các requests.

    Passenger là một chọn lọc lý tưởng, nhưng với 1 app server tách biệt vẫn tốt hơn. Giữ app server tách biệt sẽ giúp bạn linh hoạt hơn trong việc chọn một app server phù thống nhất có mục đích, và bạn mang thể nâng cấp, thay thế nó về sau dễ dàng hơn.

    Vậy Rack thì sao?

    Rack thì hơi vi diệu. Nó cho phép bất cứ app servers nào chạy được Rails app (hoặc Sinatra app, hoặc Padrino app,…).

    Bạn sở hữu thể coi Rack là một tiếng nói chung cho các web frameworks của Ruby (Rails là một trong số đó) và app servers để 2 bên mang thể giao tiếp với nhau. Bởi vì cả hai bên đều "nói" cùng một tiếng nói nên Rails có thể "giao tiếp" có Unicorn và trái lại mà Rails và Unicorn không cần phải biết gì về nhau.

    >>> Xem thêm: bán lenovo thinksystem sr650



    Vậy chúng địa chỉ mang nhau ra sao?

    số đông chúng làm thế nào để hoạt động mang nhau?

    Trong số những phần này, một web request sẽ đến web server trước. Giả dụ ấy là một request mà Rails mang thể xử lý, web server sẽ có một vài xử lý có nó và trao lại nó cho app server. App server tiêu dùng Rack để giao thiệp với Rails app, lúc app khiến việc xong mang request đó, Rails app sẽ gửi response lại cho app server và web server gửi lại phản hồi cho kẻ đang dùng app.

    Cụ thể hơn, Nginx với thể gửi request cho Unicorn. Unicorn đưa request ấy cho Rack, đưa nó tới Rails router để gọi đến đúng controller. Sau đó phản hồi lại (theo một con đường khác).

    Đây chỉ là overview đã được đơn thuần hoá. Nhưng sẽ giúp bạn đặt áp dụng của mình đúng nơi, đúng tinh thần có từng phần.

    Sau khi bạn đã hiểu được app servers và web servers hoạt động chung như thế nào, bạn sẽ tiện dụng hơn đầy đủ trong việc debug những vấn đến đề liên quan đến server khi bạn gặp phải.

    >>> Xem thêm: bán lenovo thinksystem sr670

Chia sẻ trang này