Các lựa chọn thay thế cho Apache


15

Ngăn xếp hiện tại của chúng tôi là Apache + Tomcat + MySQL, sử dụng ProxyPassAJP để thực hiện các yêu cầu từ Apache sang Tomcat. Chúng tôi cũng chạy PHP cho Wordpress trên cùng các trang web và vì vậy cần .htaccesscác tệp hoạt động. Để đối phó với một vấn đề gây phiền nhiễu (xem trang Stack Overflow này) , chúng tôi đang xem xét các ngăn xếp thay thế. Lưu ý rằng chúng ta thường khá thích apache, nhưng vấn đề này là một công cụ chặn hiển thị: nếu chúng ta không thể sửa nó, chúng ta không thể sử dụng Apache.

Các lựa chọn thay thế bao gồm:

  • Tomcat một mình
  • Glassfish (máy chủ ứng dụng Java, rẽ nhánh từ Tomcat)
  • Cầu tàu (máy chủ Java)
  • Nhựa
  • LightTPD (máy chủ HTTP nhẹ)
  • Nginx (máy chủ HTTP nhẹ)

Theo cách tôi thấy, các giải pháp rơi vào hai phe: trại Java thuần túy, như Glassfish; hoặc trại chia nhỏ như Apache + Tomcat hiện tại của chúng tôi. Chúng tôi thích ý tưởng về một giải pháp Java thuần túy, vì ít bộ phận chuyển động hơn có nghĩa là ít sai sót hơn; Nhưng có ai trong số họ hỗ trợ PHP, .htaccesstập tin, vv?

Về lý thuyết, chúng ta có thể thực hiện phân tách theo cách khác - có một giao diện đơn giản chỉ ủy quyền cho Apache trên các bit cần các tính năng đó - nhưng trong thực tế, đó sẽ là 80% yêu cầu.

Những lựa chọn nào mọi người đề nghị?


Bạn có phiền khi xây dựng "vấn đề dừng trình chiếu phiền phức" của mình thêm một chút nữa không, hay nó hoàn toàn không liên quan?
đánh dấu

Theo liên kết đến trang StackOverflow để biết thêm chi tiết. Đó là một lỗi trong đó các máy khách được gửi phản hồi sai - đôi khi nhận được các tệp JS hoặc CSS thay vì các tệp HTML hoặc chỉ toàn bộ trang sai. Chúng tôi đã thử khá nhiều thứ trong Apache và Tomcat mà chúng tôi có thể nghĩ ra.
Marcus Downing

Câu trả lời:


7

Tôi rất nghi ngờ vấn đề của bạn có liên quan đến AJP.

Tôi đã tham gia một khóa học với một trong những nhà phát triển Tomcat chính cách đây vài tuần (anh ấy đang điều hành nó), lời khuyên của anh ấy là tránh AJP và mod-JK, v.v., và hãy sử dụng HTTP mod-proxy thông thường.

Lý do:

  1. Đó là kết nối Tomcat trưởng thành và ổn định nhất.
  2. Cả hai triển khai AJP đều không được phát triển; cả hai dự án đã phải chịu một chút dừng / bắt đầu.
  3. NBIO không dẫn đến bất kỳ hiệu suất thế giới thực nào trong việc chặn IO, trong tình huống này.

Lời khuyên của tôi, hãy thử sử dụng HTTP mod-proxy thông thường với thiết lập hiện tại của bạn. Đó là thay đổi ít nhất đối với bạn và nó sẽ đưa bạn đến kiến ​​trúc triển khai Tomcat được sử dụng rộng rãi và ổn định nhất.

/ Giàu


Tôi cho rằng tôi có thể cho nó đi. Bạn có bất kỳ số cứng về sự khác biệt hiệu suất?
Marcus Downing

Làm cách nào tôi có thể sử dụng mod-proxy thông thường mà vẫn nhận được tên máy chủ chính xác đến với Tomcat? Tôi khá chắc chắn rằng tất cả họ đang được nhận là localhost tại thời điểm này.
Marcus Downing

2
ProxyPreservehost On có lẽ là thứ bạn đang tìm kiếm. httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypreservehost
Stephen Veiss

5

Ngăn xếp ưa thích hiện tại của tôi là sử dụng nginx để thay thế cho Apache. Bất cứ khi nào cần thiết, php-fpm sẽ đáp ứng nhu cầu về PHP. Thiết lập như vậy đã hoạt động tốt để triển khai các ứng dụng như Rails, Magento và SugarCRM.


4

Glassfish sẽ có khả năng mở rộng hơn Tomcat vì nó sử dụng Grizzly (dựa trên NIO). Bạn không có nhiều lựa chọn khác ngoài một biến thể của Tomcat, Jetty hoặc Glassfish vì yêu cầu Java. PHP có thể được chạy bằng Quercus , nhưng có thể tốt hơn nếu chỉ triển khai nó bằng Nginx.


2

Có các triển khai PHP trên Java, Cái tôi biết (nhưng chưa sử dụng) là cái này . Có một bài đăng trên blog về cách cài đặt nó trên GlassFish (bao gồm cả WordPress), nhưng tôi đoán việc cài đặt trên tomcat là như nhau. Về .htaccess, bạn chưa viết chính xác những gì bạn có ở đó, nhưng nếu đó là để viết lại URL thì có UrlRewriteFilter , người thực hiện cùng một công việc với cùng một ngữ nghĩa.


Các tệp .htaccess chủ yếu là các tệp được tạo bởi WordPress, vì vậy chúng chứa một vài RewriteRules đơn giản
Marcus Downing

Tôi đoán rằng PHP sẽ không hỗ trợ họ, nhưng không khó để có một quy trình đọc chúng và chuyển các định nghĩa vào bộ lọc.
David Rabinowitz

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.