将 AngularJS 应用程序部署到普通 Apache HTTP 服务器是一种常见的选择吗?
Posted
技术标签:
【中文标题】将 AngularJS 应用程序部署到普通 Apache HTTP 服务器是一种常见的选择吗?【英文标题】:Is it a common choice to deploy an AngularJS app to a vanilla Apache HTTP server? 【发布时间】:2014-04-09 01:53:19 【问题描述】:我很好奇 AngularJS 应用程序通常部署到什么样的服务器上,而 Google 并没有给出令人满意的答案。特别是,在我看来,AngularJS 应用程序只是静态文件的集合,那么将这样的应用程序部署到生产中的普通 Apache HTTP 服务器是否很常见?还是首选轻量级 Node.js 服务器?
非常感谢。
【问题讨论】:
【参考方案1】:我运行 nginx 来提供静态 AngularJS 内容。后端功能由 NodeJS 服务器提供,它提供所有必要的动态内容并回答来自客户端的 REST 请求。 Nginx 将动态查询路由到 NodeJS,并直接提供静态内容。客户端和服务器端逻辑都是用相同的语言(javascript 或 CoffeeScript)编写的。
这样做的最大好处是我们可以分别对客户端静态内容和后端内容进行负载平衡。这取决于您的应用程序的大小以及它对动态内容访问的要求。
关于部署 AngularJS 的其他一些帖子:
不要在生产环境中运行“grunt server”:can grunt server use for production application deployment 在生产环境中运行 Apache/Nginx:Best way for deploy angular.js application made with yeoman? 同时托管服务器/客户端:The best deployment architecture for angularjs nodejs app【讨论】:
【参考方案2】:任何像 AngularJS 这样的客户端框架都不会因为只使用普通的 Apache 安装而受到丝毫的困扰,因为它是纯客户端 JavaScript。
也就是说,它是一种罕见的单页 Web 应用程序,它至少没有通过 AJAX 与 Web 服务器进行一些交互以获取和修改存储在那里的数据,这就是您可能需要考虑使用什么服务器的地方你应该小心使用。最终,您可以使用您认为最合适的任何服务器端技术来构建后端,无论是 php、Python、Ruby、Node 还是其他任何东西,您对服务器的选择将更多地取决于您对客户端的选择框架。
我要补充一点,我经常听说 Nginx 在提供静态文件方面比 Apache 更快,以至于有时值得将 Nginx 用于静态文件并使用反向代理到 Apache 来处理动态内容。因此,在单页 Web 应用程序中使用 Nginx 可能比使用 Apache 更有意义。我个人将 Nginx 与 Gunicorn 一起用于 Django 应用程序,据我所知,它通常也用于 Ruby 和 Node.js 应用程序。在 Node.js 的上下文中,我不认为 Node 通常用于在生产中提供静态文件,据我所知,更常见的安排是让 Nginx 提供静态文件并反向代理到 Node 应用程序其他一切。
【讨论】:
所有正确,但我要补充一点,由于该应用程序由静态文件组成,您也可以使用 CDN 甚至根本不处理服务器. (提供数据 API 来支持应用程序是一个完全不同的问题。我们通过 CDN 提供应用程序文件,并通过 Sinatra 应用程序提供数据 API。)以上是关于将 AngularJS 应用程序部署到普通 Apache HTTP 服务器是一种常见的选择吗?的主要内容,如果未能解决你的问题,请参考以下文章
Chrome扩展程序(Angularjs)到Gmail附加组件(Appscript)