我可以用Node.jsreplaceApache吗?

我有一个使用常见的嫌疑人(Apache,MySQL和PHP)在CentOS上运行的网站。 自从这个网站最初推出以来,它已经发展了很多,现在我想用它做更有趣的事情 – 即实时通知。 从我读到的,Apache处理这个不好。 我想知道如果我可以用Node.jsreplaceApache(所以而不是“ LAMP ”它将“LNMP”)。

我试着在网上search一个解决scheme,但没有find一个。 如果我正确地解释了我读过的东西,似乎大多数人都说Node.js可以同时replaceApache和PHP。 不过,我有很多现有的PHP代码,所以我宁愿保留它。

如果不是很明显,我很困惑,可以使用一些启发。 非常感谢!

如果你准备用JavaScript重写你的PHP,那么是的,node.js可以代替你的Apache。

如果在服务器和客户端之间放置一个以反向代理模式运行的Apache或nginx实例,则可以在node.js上处理JavaScript中的一些请求,并在Apache托pipe的PHP中处理一些请求,直到完全replace所有的PHP与JavaScript代码。 这可能是一个快乐的媒介:你的WebSockets是否在node.js中工作,在Apache + PHP中是更普通的工作。

你可能总是希望一个Apache或者nginx作为一个枯燥的Web服务器运行来处理所有的静态文件: sendfile(2)系统调用使得从一个真正的web服务器上静态的页面非常快地提供服务(它删除了'double-copy'将数据从磁盘复制到进程内存中,只是将内存复制到网卡的内核中 – 通过告诉内核要将哪个文件描述符的内容通过哪个套接字发送,内核可以安排将数据直接从磁盘复制到内核我不知道node.js是否可以轻松访问sendfile(2)系统调用,但我会感到惊讶,所以我假设运行一个nginx来处理静态文件将是值得的两个完整的服务器同时加载到内存。

Node.js可能比Apache更快,这要归功于它是平坦的/非阻塞的体系结构,但是你可能会遇到一些问题,find替代Apachefunction的模块/库。

Node.js本身是一个轻量级的低级框架,它使您能够相对快速地构buildWeb应用程序的服务器端和实时部分,但Apache提供了更广泛的configuration选项和“经典”的面向服务器的function。

我会说,除非你想用基于node.js的web应用程序框架(比如express.js)replacePHP,那么你应该继续使用Apache(或者考虑如果你有性能问题,迁移到Nginx)。

我相信Node.js是web服务的未来,但是如果你有很多现有的PHP代码,Apache / MySQL是你最好的select。 Apache可以configuration为向Node.js请求代理,或者Node.js可以向Apache请求代理请求,但是我相信在这两种情况下都会丢失一些性能,特别是在第一种情况下。 如果你没有运行一个非常高的stream量网站,那不是什么大问题。

我只是注册到stackoverflow,我不能评论接受的答案,但今天我创build了一个简单的Node.js脚本实际上使用sendfile()通过HTTP协议提供文件。 (接受的答案链接的现有示例仅使用裸TCP协议来发送文件,而我找不到HTTP的示例,所以我自己写了一个。

所以我想有人会觉得这很有用。 通过sendfile()调用文件的操作并不一定比通过“user land”复制数据的速度快,但是它最终不会使用CPU和RAM,因此能够处理比传统方式更多的连接。

链接: https : //gist.github.com/1350901

先前的 SOpost描述到底在说什么(php + socket.io +节点)

我认为你可以把一个节点服务器放在某个主机上:使用socket.io将这个socket.io客户端代码打包成标签,只需很less的工作就可以让你现有的应用程序和socket.io(实时的宝贝)一起摇摆,而不需要大量的工作。

虽然节点可以成为你唯一的后端服务器,但记住,节点喜欢辜负它的名字,成为一个节点。 我检查了Ryan Dahl给PHP用户组的一段话,他提到了名字节点,这个名字节点是关于几个节点进程的工作和相互交谈的愿景。

它的灯与现在的平均值。 有关直接比较,请参阅http://tamas.io/what-is-the-mean-stack

当然M,E和A有些可变。 例如,最近的koa可能会取代(E)xpress。

然而,用Node.jsreplaceApache可能不是使Web堆栈现代化的正确方法。