部署 sails.js 应用程序的最佳方法是什么?

4
我正在使用sails.js作为后端开发Web应用程序。该应用程序将被不同的学校使用,我的第一个方法是为每个学校部署应用程序的实例。
例如:
school1.application.com在school.application.com:8080上有一个sails应用程序的实例 school2.application.com在school.application.com:8081上有一个sails应用程序的实例
每个实例都有一个Bitbucket存储库(或分支),并且使用Git更新源代码。
为了维护目的,我考虑使用与所有Git存储库连接的仪表板,并从那里管理所有推送。
另一方面,只为所有学校使用一个实例更易于管理,但是如何为每个学校使用单独的数据库?当有大约20所学校时,使用一个数据库是否太冒险?
使用第二种方法,如果应用程序停止运行,则所有学校都会受到影响,而使用第一种方法则不会。
希望我的解释清楚明白。
感谢您的见解。
1个回答

1
" sails 应用程序将托管在哪里?由您来托管吗?例如 Nodejitsu、Amazon 等,还是应用程序将部署在学校服务器上?"
  1. 方法:如果您将托管应用程序,则可以创建一个应用程序并仅部署一次。将学校添加为模型,并在所有用户之间创建关系。例如:

    // Student.js 模型
    
      module.exports = {
    
        attributes: {
    
          name : { type: 'string' },
    
          lastname : {
              type : 'string'
          },
    
         // 学生所属的学校
         school : {
           model : 'school'
         }
    
这种方式你只需要创建一个API来控制全部内容,为客户提供单一的URL和日志访问。你可以使用Mongo或SQL,因为Waterline不关心你的数据库类型,只要在模型之间建立良好的关系即可。 请查看Waterline和模型文档: https://github.com/balderdashy/waterline-docs/blob/master/associations.md 1. 方法: 你可以为每个学校独立部署,并使用同一个数据库,但务必避免在每次部署时清空所有数据的风险。Sails会询问您是否想要清除数据库中的所有数据或更改数据(这是实验性功能,请小心)。
2. 方法: 将每个分支独立部署并使用自己的数据库(如果学校将托管应用程序,则最佳方法为此),并为每个部署更改config / connections.js。如果您不想在需要进行维护或实现自定义功能时关闭所有用户,则此方法是最佳方法,但需要更多工作,因为您将单独维护20个实例。
我建议您采用第一种方法。

感谢您详细的回答。该应用程序将部署在云服务器上。 - JDL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接