我正在开发一个使用 sails.js 作为后端的 Web 应用程序。该应用程序将由不同的学校使用,我的第一个方法是为每所学校部署一个应用程序实例。
例子:
school1.application.com 在 school.application.com:8080 上有一个 sails 应用实例 school2.application.com 在 school.application.com:8081 上有一个 sails 应用实例
每个实例都有一个 Bitbucket 存储库(或分支),并且使用 Git 更新源。
出于维护目的,我正在考虑使用与所有 Git 存储库连接的仪表板并从那里管理所有推送。
另一方面,所有学校只有一个实例更易于管理,但我如何为每个学校使用单独的数据库?当有大约 20 所学校时,使用一个 DB 不会太冒险吗?
使用第二种方法,如果申请失败,所有学校都会受到影响,而不是第一种。
我希望我的解释很清楚。
感谢您的见解。
最佳答案
sails 应用程序将托管在哪里?由你?即 Nodejitsu、亚马逊等。或者该应用程序将部署在学校服务器上?
方法:如果您要托管应用程序,您可以制作一个应用程序并部署一次。将学校添加为模型并在所有用户之间建立关系。即:
// Student.js model module.exports = { attributes: { name : { type: 'string' }, lastname : { type : 'string' }, // School which the student belongs school : { model : 'school' }
这样一来,您只需制作一个 api 来管理所有这些,并为您的客户提供一个具有日志访问权限的单一 URL。您可以使用 mongo 或 SQL,因为 Waterline 不关心您的数据库,只在您的模型之间建立良好的关系。 检查水线和模型文档:https://github.com/balderdashy/waterline-docs/blob/master/associations.md
方法: 您可以为每个学校独立部署,并只使用一个数据库来管理它们,但请务必避免每次部署时都删除所有数据的风险,sails 会询问您是否要删除所有数据在数据库中或更改数据(请小心,因为这是一项实验性功能)。
方法: 使用他们自己的数据库独立部署您的分支机构(如果学校将托管该应用程序,这是最好的方法),并且只需为每次部署更改 config/connections.js。如果您不想在需要进行维护或实现自定义功能时关闭所有用户,这种方法是最好的,但您需要做更多的工作,因为您将分别维护 20 个实例。
我推荐你第一种方法。
关于git - 部署 sails.js 应用程序的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25362746/