首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果后端和前端项目是分开的,如何部署它们?

如果后端和前端项目是分开的,如何部署它们?
EN

Stack Overflow用户
提问于 2016-02-17 00:54:36
回答 3查看 37.3K关注 0票数 21

我正在用一个小团队开发一个web应用程序,经过研究和研究,我们发现将后端项目和前端项目分开是一个很好的实践。因此,我们将把后端开发为带有hapijs和mysql数据库的REST,以及使用angularjs的前端。

但是在生产环境中,它们必须在同一台服务器上,对吗?如果它们位于单独的存储库中,我们如何将它们部署到同一个服务器上?

我们是一个相当新的团队,开始了我们在网络开发方面的冒险,所以我们正在学习很多东西来做正确的事情。

我们的技术栈将是:

  • 用于for服务器的Hapijs
  • orm后缀
  • 用于聊天功能的socket.io
  • 单元测试用摩卡
  • 用于前方的安古拉杰

我们将使用微软的天青托管我们的网络应用程序。

谢谢你的回答和帮助。

EN

回答 3

Stack Overflow用户

发布于 2016-02-17 01:10:24

他们不必在同一台服务器上。将后端放在不同的服务器中是非常好的,如果您需要扩展后端/前端,而不是另一个服务器,这也非常方便。

有几种可能性:

  • 您可以使用像RabbitMQ这样的消息代理在这两个微服务之间进行通信。
  • 前端应用程序可以公开后端的url,并且在AJAX请求中使用它,这需要后端启用CORS。不喜欢这种方法。
  • 在前端使用相对urls,然后用特定模式(如/api/*)将请求输送到后端。您的AngularJs应用程序是由Node.js服务器提供的还是也是Hapi.js服务器?如果Node.js类似于
代码语言:javascript
复制
app.all(['/api/*', '/fe/*'], function(req, res) {
    console.log('[' + req.method + ']: ' + PROXY + req.url);
    req.pipe(request({
        url: PROXY + req.url,
        method: req.method,
        body: req.body,
        rejectUnauthorized: false,
        withCredentials: true
    }))
    .on('error', function(e) {
        res.status(500).send(e);
    })
    .pipe(res);
});

其中PROXY_URL是后端服务器的url/ip。还没有在hapi.js中这样做,但也应该是可能的。

我相信还有更多的选择,这些是我所熟悉的。

票数 11
EN

Stack Overflow用户

发布于 2020-01-20 13:06:22

作为一个初学者团队,你可能会遇到这么多问题。最好的做法是将前端和后端分离为单独的单元。这将导致更好的完整堆栈开发过程。这个https://www.freecodecamp.org/news/lessons-learned-from-deploying-my-first-full-stack-web-application-34f94ec0a286/

本文解释了使用react作为前端,将Express js用作后端的过程。它是为初学者精心设计的。它包括对你的问题的详细解释。

票数 4
EN

Stack Overflow用户

发布于 2016-03-01 22:22:10

正如你们现在开始的那样,我认为您可以通过使用hapi创建两个服务器实例来处理这个问题。这满足了生产中只有一台服务器的需求:

代码语言:javascript
复制
const server = new Hapi.Server();
server.connection({ port: 80, labels: 'front-end' });
server.connection({ port: 8080, labels: 'api' });

这是非常容易实现的,然而,它也有一个缺点:无论何时推出更新,您都需要接受客户端和服务器应用程序的停机时间。

您可以在这篇文章中找到更多信息:https://futurestud.io/blog/hapi-how-to-run-separate-frontend-and-backend-servers-within-one-project

在部署方面,无论您使用什么来构建一个版本(持续集成工具、手动脚本等等)。可以推到天蓝色:https://azure.microsoft.com/en-us/documentation/articles/web-sites-publish-source-control。例如,手动脚本将从两个单独的存储库(前端和后端)获取代码,复制相关文件,更新配置值,并将最终结果推送到git。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35445964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档