Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以用Node.js替换Apache吗?_Apache_Node.js - Fatal编程技术网

我可以用Node.js替换Apache吗?

我可以用Node.js替换Apache吗?,apache,node.js,Apache,Node.js,我有一个在CentOS上运行的网站,使用了常见的可疑工具(Apache、MySQL和PHP)。自从这个网站最初推出以来,它已经有了很大的发展,现在我想用它做一些更有趣的事情,即实时通知。据我所知,Apache处理得很差。我想知道我是否可以用Node.js替换Apache(因此,它将取代“LNMP”) 我尝试过在网上搜索解决方案,但没有找到。如果我正确地解释了我所读到的内容,那么似乎大多数人都在说Node.js可以同时取代Apache和PHP。不过,我有很多现有的PHP代码,所以我更愿意保留它 如

我有一个在CentOS上运行的网站,使用了常见的可疑工具(Apache、MySQL和PHP)。自从这个网站最初推出以来,它已经有了很大的发展,现在我想用它做一些更有趣的事情,即实时通知。据我所知,Apache处理得很差。我想知道我是否可以用Node.js替换Apache(因此,它将取代“LNMP”)

我尝试过在网上搜索解决方案,但没有找到。如果我正确地解释了我所读到的内容,那么似乎大多数人都在说Node.js可以同时取代Apache和PHP。不过,我有很多现有的PHP代码,所以我更愿意保留它


如果这还不明显,我很困惑,需要一些启发。非常感谢

如果您准备用JavaScript重新编写PHP,那么Node.js可以取代Apache


如果在服务器和客户机之间放置一个以反向代理模式运行的Apache或NGINX实例,则可以在Node.js上用JavaScript处理一些请求,在Apache托管的PHP中处理一些请求,直到可以用JavaScript代码完全替换所有PHP。这可能是一个令人高兴的媒介:您的WebSocket在Node.js中工作,在Apache+PHP中工作更平凡。

Node.js可能比Apache更快,这要归功于它的事件/非阻塞体系结构,但您可能在查找替代某些Apache功能的模块/库时遇到问题

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

我想说的是,除非你想用基于node.js的web应用程序框架(如express.js)替换PHP,否则你应该继续使用Apache(如果你有性能问题,可以考虑迁移到Nginx)。

因此,请在文章中准确描述我所说的内容(PHP+socket.io+node)

我认为你可以在某台主机上安装一个节点服务器:8000个带有socket.io的服务器,然后将socket.io客户端代码放入标记中,只需很少的工作,就可以让你现有的应用程序在socket.io(realtime baby)的支持下运行,而无需大量的工作


虽然node可以是您唯一的后端服务器,但请记住node喜欢名副其实,并成为一个节点。不久前,我查看了Ryan Dahl给一个PHP用户组的一次谈话,他提到了与多个节点进程相互工作和交谈的愿景相关的名称node

我相信Node.js是web服务的未来,但是如果你有很多现有的PHP代码,Apache/MySQL是你最好的选择。Apache可以配置为将请求代理到Node.js,或者Node.js可以将请求代理到Apache,但我相信在这两种情况下都会损失一些性能,特别是在第一种情况下。如果你的网站流量不是很高,那也没什么大不了的

我刚刚注册到stackoverflow,我还不能对接受的答案发表评论,但今天我创建了一个简单的Node.js脚本,它实际上使用sendfile()通过HTTP协议为文件提供服务。(accepted answer链接到的现有示例仅使用裸TCP协议发送文件,我找不到HTTP示例,所以我自己编写了该示例。)

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


链接:

它的灯与现在的平均值。有关直接比较,请参见

当然,M、E和A是可变的。例如,较新版本可能会取代(E)xpress


然而,仅仅用Node.js替换Apache可能不是使web堆栈现代化的正确方法。

我感谢您的快速响应!nginx是否比Apache优越得多?我已经有了一个.htaccess文件,如果能保留它就好了。另外,我已经读到,让Apache将请求转发到Node.js是毫无意义的,因为这样你就失去了Node.js的优势,因为你仍然在使用Apache。让Node.js在端口80上侦听名为“nodejs”的子文件夹中的任何内容是否更好,然后Node.js可以将不在该子文件夹中的任何内容传递给Apache?Apache可以在其他端口(如8000)上监听。@Rick,我几乎要删除我自己的答案了,还有一种支持,可以使通过节点为您的PHP提供服务变得更容易。至于nginx和Apache,我总是喜欢异步风格的服务器,而不是线程或多进程服务器:),但我发现Apache文档更容易查找和阅读。我称之为个人偏好,除非你需要扩展到惊人的数字@Rick您不希望在了解生产资料是什么以及如何工作之前将其迁移到节点。Node并不是一种让事情变得更快的神奇药丸。事件驱动/异步范例并不是新的,并且有一些原因可以解释为什么它不能用于所有事情@Rick不认为应该替换现有的节点,也许最好另外运行Node。不要认为有任何理由通过节点(?)传递所有内容,这听起来是个坏主意。只需在另一个端口或主机上运行节点即可。@Øyvind Skaar我同意。此外,对于大多数网站(例如Wordpress),真正的瓶颈是数据库,而不是文件访问。而且,如果文件访问是一个问题,那么缓存始终是一个可行的解决方案。无论如何,对于真正的性能来说,PHP-APC是一个非常便宜的把戏。Ape服务器可能值得研究。虽然非常正确,但我仍然相信,如果您将apache剥离,并按照您所描述的那样执行,它将运行得和node.js一样快,如果没有的话,也会比node.js更快。Apache做了很多人们看不到或真正理解的事情,如果您添加了这些web服务器的所有功能