我们在一台也使用Perl提供页面的机器上安装了Apache Web服务器。在Apache中运行Node.js?
对于一个项目,我已经决定要使用Node.js的替代的Perl/Ruby的。只是想知道是否可以使用Apache作为我的网络服务器(所以它服务于网页),并使用Node.js动态创建网页(这是为我创建的Web应用程序)?
因此,换句话说,他们能携手就像阿帕奇/ Perl或阿帕奇/ PHP等。
我们在一台也使用Perl提供页面的机器上安装了Apache Web服务器。在Apache中运行Node.js?
对于一个项目,我已经决定要使用Node.js的替代的Perl/Ruby的。只是想知道是否可以使用Apache作为我的网络服务器(所以它服务于网页),并使用Node.js动态创建网页(这是为我创建的Web应用程序)?
因此,换句话说,他们能携手就像阿帕奇/ Perl或阿帕奇/ PHP等。
去做你在找什么做的,就是靠跑他们边的常用方法,并根据域/ url从apache到node.js的代理请求,或者简单地从node.js端口提取您的node.js内容。这个后面的方法很适合在你的站点上使用诸如socket.io的widgets等。
如果你打算然而,可以做所有的动态内容生成的节点,你可能也只是使用Node.js的作为主Web服务器也一样,它在服务于静做了很好的工作和动态http请求。
参见:
号的NodeJS不能作为的方式MOD-Perl和MOD-PHP的Apache模块都是,所以它不是可以运行节点“在“Apache之上”。正如hexist指出的那样,可以将节点作为单独的进程运行并安排两者之间的通信,但这与您已经使用的LAMP堆栈完全不同。
至于Apache的一个替代品,节点提供了性能上的优势,如果你有很多的并发连接。对于几乎所有你能想到的事物,还有一个巨大的模块生态系统。
从你的问题,目前还不清楚,如果你需要动态地生成每个请求的网页,或只是周期性地产生新的内容缓存和服务。如果是后者,可以使用单独的节点任务来将内容生成到Apache将要提供的目录中,但是再次,这与PHP或Perl完全不同。
节点并不是提供静态内容的最佳方式。 Nginx和Varnish在这方面更有效。它们可以在Node处理动态数据时提供静态内容。
如果您使用节点的web应用程序在所有的考虑,快递应该是高的名单上。您可以纯粹在Node中实现一个Web应用程序,但Express(以及Flatiron,Derby和Meteor等类似的框架)旨在消除很多痛苦和枯燥乏味。虽然Express文档起初看起来有点稀疏,但请查看这里仍然可用的屏幕演示文稿:http://expressjs.com/2x/screencasts.html他们会让您很好地了解Express提供的内容以及它的用途。 ExpressJS的github存储库还包含许多从认证到组织应用程序的好例子。
谢谢达伦!幸运的是,这个项目早已结束! – JackSparrow123
这是2015年,我刚刚从这篇文章了解到Express。我想知道Express与流星的优点和常量。 Google Trends中的Express比流星更大,但下降,流星正在增长。 – Ruby
通过apache托管nodejs站点可以使用apache代理模块进行组织。
这是更好地开始在本地主机服务器的NodeJS使用默认端口1337
与命令启用代理:
sudo a2enmod proxy proxy_http
,直到你已经获得您的服务器不能够与将ProxyRequests代理。开放代理服务器对您的网络和整个Internet都是危险的。将ProxyRequests设置为Off不会禁用ProxyPass指令的使用。
配置的/ etc/apche2 /网站,可获取与
<VirtualHost *:80>
ServerAdmin [email protected]
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等等。
YES,你可以在Apache沿IF可以将其作为一个CGI模块侧Perl和PHP 运行Node.js的。到目前为止,我无法找到Apache的mod-node,但请查看:Apache的CGI-Node,这里是http://www.cgi-node.org/。
关于cgi-node有趣的部分是它使用JavaScript,就像使用PHP来生成动态内容,静态页面服务,访问SQL数据库等一样。甚至可以在服务器和客户端/浏览器之间共享核心JavaScript库。
我认为客户端和服务器之间的单一语言转变正在发生,JavaScript似乎是一个不错的选择。
从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网站有所有文档入门。
我知道我很喜欢这个,但最终使用PHP以外的其他东西是一种解脱。另外,还可以在客户端和服务器上编写JavaScript代码。
希望这会有所帮助。
在野外似乎有几个node-cgi包 - CGI-Node与https://larsjung.de/node-cgi/相同。如果不是,你会知道哪个更成熟/完整吗? –
这正是我在寻找处理Dreamhost上的动态内容而不是用PHP编写的解决方案。 Viva la JavaScript! – Sukima
这个答案更直接地回答了问题。有没有其他的网络服务器能够像运行php脚本一样运行node.js脚本? –
你总是可以做一些壳指令码,如:
#!/usr/bin/node
var header = "Content-type: text/plain\n";
var hi = "Hello World from nodetest!";
console.log(header);
console.log(hi);
exit;
如果你运行它和Apache一起节点实际上不是“之上”阿帕奇坐呢?像PHP一样。 它仍然是单独的实例。那是对的吗? 另一个问题......我是否需要Express来创建动态页面,或者我可以直接使用Node.js?似乎没有太多的快递信息... – JackSparrow123
正确,node.js运行在它自己的进程中。 Express处理http请求的内容,请参阅http://expressjs.com/api.html ..它很容易实现,页面开始处的Hello World是您首页所需的全部内容。如果您想生成动态内容,您可能需要某种形式的模板引擎来生成您将通过快递返回的内容,请参阅:https://github.com/joyent/node/wiki/modules#wiki - 模拟一个很好的列表。 – hexist
但你可以使用纯Node.js做一个hello世界的页面,框架优于任何优势? – JackSparrow123