在Apache中运行Node.js?

我们在一台也使用Perl提供页面的机器上安装了Apache Web服务器。

对于一个项目,我决定使用Node.js而不是Perl / Ruby。 只是想知道是否有可能使用Apache作为我的networking服务器(所以它服务的页面),并使用Node.jsdynamic创build网页(这是一个Web应用程序,我正在创build)?

换句话说,它们可以像Apache / Perl或Apache / PHP一样携手合作。

不。NodeJS不能以mod-perl和mod-php的方式作为Apache模块使用,所以不可能在Apache上运行节点。 正如hexist指出的那样,可以将节点作为一个单独的进程来运行,并且在两者之间进行通信,但是这与您已经使用的LAMP栈非常不同。

作为Apache的替代品,如果有多个同时连接,节点将提供性能优势。 还有一个巨大的生态系统模块几乎任何你能想到的。

从你的问题来看,目前还不清楚是否需要在每个请求中dynamic生成页面,或者只是为了caching和服务定期生成新的内容。 如果是后者,则可以使用单独的节点任务将内容生成到Apache将要提供的目录中,但是与PHP或Perl完全不同。

节点不是提供静态内容的最佳方式。 Nginx和Varnish在这方面更有效。 它们可以在Node处理dynamic数据时提供静态内容。

如果您正在考虑使用节点作为Web应用程序,Express应该在您的列表中位居前列。 您可以纯粹在Node中实现一个Web应用程序,但Express(和Flatiron,Derby和Meteor等类似的框架)旨在将很多痛苦和烦恼消除掉。 虽然Express文档起初看起来有点稀疏,但请查看这里仍然可用的屏幕截图: http : //expressjs.com/2x/screencasts.html它们会让您很好地理解明确的优惠以及为什么它是有益的。 ExpressJS的github存储库也包含许多从authentication到组织应用程序的好例子。

通过apache托pipenodejs站点可以使用apache代理模块来组织。

在本地主机上使用默认端口1337启动nodejs服务器更好

使用命令启用代理:

sudo a2enmod proxy proxy_http 

在保证服务器安全之前,请勿使用ProxyRequests启用代理。 开放代理服务器对您的networking和整个Internet都是危险的。 将ProxyRequests设置为Off不会禁用ProxyPass指令的使用。

configuration/ etc / apche2 / sites-availables

 <VirtualHost *:80> ServerAdmin admin@site.com ServerName site.com ServerAlias www.site.com ProxyRequests off <Proxy *> Order deny,allow Allow from all </Proxy> <Location /> ProxyPass http://localhost:1337/ ProxyPassReverse http://localhost:1337/ </Location> </VirtualHost> 

并重新启动apache2服务。

虽然这里有很多好的提示,但我想回答你提的问题:

换句话说,它们可以像Apache / Perl或Apache / PHP一样携手合作。

是的 ,您可以在Apache和PHP上运行Apache上的Node.js, 如果您将其作为CGI模块运行。 到目前为止,我无法find一个Apache的mod-node,但请查看: http ://www.cgi-node.org/上的Apache的CGI-Node。

关于cgi-node的一个有趣的部分是它使用JavaScript,就像使用PHP来生成dynamic内容,静态页面服务,访问SQL数据库等一样。甚至可以在服务器和客户机/浏览器之间共享核心JavaScript库。

我认为,客户端和服务器之间的单一语言转变正在发生,JavaScript似乎是一个不错的select。

cgi-node.org网站的一个简单例子:

 <? include('myJavaScriptFile.js'); ?> <html> <body> <? var helloWorld = 'Hello World!'; ?> <b><?= helloWorld ?><br/> <? for( var index = 0; index < 10; index++) write(index + ' '); ?> </body> </html> 

这输出:

 Hello World! 0 1 2 3 4 5 6 7 8 9 

您也可以完全访问HTTP请求。 包括表单,上传的文件,标题等

我目前正在通过Godaddy上的cgi-node模块运行Node.js。

CGI-Node.org网站有所有的文件开始。

我知道我对此很raving but,但最终使用PHP以外的东西是一种解脱。 此外,能够在客户端和服务器上编写JavaScript代码。

希望这可以帮助。

做你想做的事情的常见方法是并排运行它们,或者根据域/ url从apache到node.js的代理请求,或者简单地从节点中取出你的node.js内容。 js端口。 这个后面的方法在你的站点上有类似socket.io的小部件等很好的工作。


但是,如果要在节点中完成所有dynamic内容生成,则不妨将node.js用作主Web服务器,它在为静态和dynamichttp请求提供服务方面做得非常好。

看到:

http://expressjs.com/

https://github.com/joyent/node/wiki/modules

当做我自己的服务器端JS实验时,我结束了使用teajs 。 它符合common.js ,基于V8,是我所知道的唯一一个提供“mod_teajs”apache服务器模块的项目。

在我看来,Node.js服务器不是生产准备就绪,缺乏太多的function – Apache是​​经过战斗testing和正确的SSJS方法。