我们当前的堆栈是 Apache + Tomcat + MySQL,使用ProxyPass
AJP 从 Apache 向 Tomcat 发送请求。我们还在同一个网站上运行 PHP for Wordpress,因此需要工作.htaccess
文件。为了响应一个恼人的问题(参见 Stack Overflow 页面),我们正在考虑替代堆栈。请注意,我们通常非常喜欢 Apache,但这个问题是一个大问题:如果我们无法修复它,我们就不能使用 Apache。
替代方案包括:
- Tomcat 单独
- Glassfish(Java 应用服务器,由 Tomcat 衍生而来)
- Jetty(Java 服务器)
- 树脂
- LightTPD(轻量级 HTTP 服务器)
- Nginx(轻量级 HTTP 服务器)
在我看来,解决方案分为两个阵营:纯 Java 阵营,例如 Glassfish;或分裂阵营,例如我们当前的 Apache + Tomcat。我们喜欢纯 Java 解决方案的想法,因为移动部件越少,出错的可能性就越小;但是它们中是否有支持 PHP、.htaccess
文件等的阵营?
理论上,我们可以用另一种方式进行拆分 - 有一个简单的前端,只在需要这些功能的部分上代理 Apache - 但实际上这将是 80% 的请求。
人们建议什么选择?
答案1
我强烈怀疑您的问题与 AJP 有关。
几周前,我和一位主要的 Tomcat 开发人员一起参加了一门课程(他正在运行该课程),他的建议是避免使用 AJP 和 mod-JK 等,并坚持使用常规的 mod-proxy HTTP。
原因:
- 它是迄今为止最成熟、最稳定的 Tomcat 连接器。
- 两个 AJP 实现都没有得到持续开发;两个项目都遭遇了一些停止/启动。
- 在这种情况下,NBIO 不会比阻塞 IO 带来任何实际性能提升。
我的建议是,尝试在当前设置中使用常规 mod-proxy HTTP。这对您来说是最小的改变,它将带您进入最广泛使用和最稳定的 Tomcat 部署架构。
/ Richy
答案2
我目前首选的堆栈是使用 nginx 替代 Apache。只要有需要,php-fpm 就会满足对 PHP 的需求。这样的设置对于部署 Rails、Magento 和 SugarCRM 等应用程序非常有效。
答案3
Glassfish 比 Tomcat 更具可扩展性,因为它使用 Grizzly(基于 NIO)。由于 Java 要求,除了 Tomcat、Jetty 或 Glassfish 的变体之外,您没有太多选择。可以使用以下方式运行 PHP栎属,但最好只使用 Nginx 进行部署。
答案4
切诺基?他在哪儿?http://www.cherokee-project.com/