如果将后端和前端项目分开,如何部署?
我正在开发一个小团队的Web应用程序,经过一番研究和研究后,我们发现分离后端和前端项目是一种很好的做法。 所以我们将开发后端作为REST API与hapijs和mysql数据库,前端使用angularjs。
但在生产环境中,他们必须在同一台服务器上,对吗? 我们如何将它们部署到同一台服务器,如果它们位于单独的存储库中?
我们是一个相当新的团队,开始我们在网络开发方面的冒险,所以我们正在研究很多东西以使事情正确。
我们的技术堆栈将是:
我们将使用Microsoft Azure来托管我们的Web应用程序。
感谢您的答案和帮助。
他们不必在同一台服务器上。 将后端放在不同的服务器上是非常好的,如果您需要扩展后端/前端而不是其他服务器,也很方便。
有几种可能性:
您可以使用像RabbitMQ这样的消息代理在两种微服务之间进行通信
您的前端应用程序可能会公开您的后端的url,并在您的AJAX请求中使用它,这需要您的后端启用CORS。 不是这种方法的粉丝。
在你的前端使用相对URL,然后用特定的模式(如/ api / *)将请求传送到你的后端。 您的AngularJs应用程序是由Node.js服务器提供服务还是Hapi.js服务器? 如果Node.js类似
:
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中完成,但它也应该是可能的。
我相信有更多的选择,那些是我熟悉的。
正如你们现在开始的,我认为你可以通过用hapi创建两个服务器实例来处理这个问题。 这解决了只有一台服务器在生产中的要求:
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
关于部署,无论您用于构建发行版(持续集成工具,手动脚本等),都可以将git推送到Azure:https://azure.microsoft.com/en-us/documentation/articles/web-网站,发布源控制。 例如,手动脚本会从两个独立的存储库(前端和后端)获取代码,复制相关文件,更新配置值并将最终结果推送到git。
链接地址: http://www.djcxy.com/p/78191.html上一篇: How to deploy backend and frontend projects if they are separate?