Jac*_*123 68 javascript apache webserver node.js
我们在一台机器上安装了一个Apache Web服务器,该机器也使用Perl提供页面.
对于一个项目,我决定使用Node.js而不是Perl/Ruby.只是想知道是否可以使用Apache作为我的网络服务器(因此它服务于页面)并使用Node.js动态创建网页(这是我正在创建的网络应用程序)?
换句话说,它们可以像Apache/Perl或Apache/PHP等一样携手合作.
Evg*_*pov 64
通过apache托管nodejs站点可以使用apache代理模块进行组织.
最好使用默认端口1337在localhost上启动nodejs服务器
使用命令启用代理:
sudo a2enmod proxy proxy_http
Run Code Online (Sandbox Code Playgroud)
在保护服务器之前,请勿使用ProxyRequests启用代理.开放代理服务器对您的网络和整个Internet都是危险的.将ProxyRequests设置为Off不会禁用ProxyPass指令的使用.
配置/ 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>
Run Code Online (Sandbox Code Playgroud)
并重新启动apache2服务.
Dar*_*ren 42
没有.NodeJS不像mod-perl和mod-php那样可以作为Apache模块使用,因此不可能在"Apache"之上运行节点.正如hexist指出的那样,可以将节点作为一个单独的进程运行并安排两者之间的通信,但这与您已经使用的LAMP堆栈完全不同.
作为Apache的替代品,如果您有许多同时连接,则节点可提供性能优势.对于您能想到的几乎任何事物,还有一个巨大的模块生态系统.
从您的问题来看,您不清楚是否需要在每个请求上动态生成页面,或者只是定期生成新内容以进行缓存和提供.如果是后者,您可以使用单独的节点任务来生成Apache将服务的目录的内容,但同样,这与PHP或Perl完全不同.
节点不是提供静态内容的最佳方式.Nginx和Varnish在这方面更有效.它们可以在Node处理动态数据时提供静态内容.
如果您正在考虑将节点用于Web应用程序,Express应该在您的列表中占据优势.您可以纯粹在Node中实现Web应用程序,但Express(以及像Flatiron,Derby和Meteor这样的类似框架)旨在消除大量的痛苦和乏味.尽管Express文档起初看起来有点稀疏,但请查看仍然可用的屏幕转换:http://expressjs.com/2x/screencasts.html 它们会让您很好地了解快递提供的内容和原因它是有益的.ExpressJS的github存储库还包含许多从身份验证到组织应用程序的好例子.
小智 23
虽然这里有很多好的提示,但我想回答你提出的问题:
换句话说,它们可以像Apache/Perl或Apache/PHP等一样携手合作.
是的,您可以在Perl和PHP上运行Apache上的Node.js,如果您将其作为CGI模块运行.作为然而,我无法找到阿帕奇国防部节点,但检查出:CGI节点为Apache这里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>
Run Code Online (Sandbox Code Playgroud)
这输出:
Hello World!
0 1 2 3 4 5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)
您还可以完全访问HTTP请求.这包括表单,上传文件,标题等.
我目前正通过Godaddy上的cgi-node模块运行Node.js.
CGI-Node.org网站提供了所有入门文档.
我知道我对此赞不绝口,但最后使用PHP之外的其他东西是一种解脱.此外,还能够在客户端和服务器上编写JavaScript代码.
希望这可以帮助.
要做您想做的事情的常用方法是并排运行它们,或者基于域/ url从apache到node.js的代理请求,或者只是将node.js的内容从节点中拉出。 js端口。对于您的站点上具有由socket.io驱动的小部件之类的东西,此后一种方法非常有效。
但是,如果要在node中进行所有动态内容生成,那么最好也将node.js用作主要的Web服务器,它在满足静态和动态http请求方面都做得很好。
看到:
https://github.com/joyent/node/wiki/modules
| 归档时间: |
|
| 查看次数: |
103676 次 |
| 最近记录: |