如何处理 PHP 中将被多次使用的网站的基础架构?
How to handle infrastructure for the website in PHP which will be used many times?
我有几个 PHP Laravel 项目(restful API,管理应用程序,客户端应用程序)。 API 使用的数据库只有一个。该项目是一些公司可以使用的某种应用程序。他们可以访问管理面板、客户端网页,他们可以使用自己的 API,他们可以创建自己的用户、权限等。如果这个项目将由一个客户使用没有问题,但我要将这个应用程序卖给很多人。我将负责更新、托管、配置等。我想知道如何让它成为最好的方式,我有一些想法。
- 每次有人从我这里购买应用程序时,我都考虑过在服务器上克隆该应用程序。这需要在服务器上设置一个新的子域和大量磁盘 space。不确定。
- 或者克隆应用程序并使用供应商等符号链接共享一些文件,node_modules 等
- 另一个想法是将它作为一个项目,为不同的客户提供许多数据库,但如何以最好的方式在 Laravel 中实现它?我将需要一些动态的方式来更改数据库连接(我希望每个客户端都有单独的数据库),我不确定与会话、缓存等的冲突。
- 也许单独的数据库是一个错误的想法,最好是拥有一个数据库并将其作为一个项目并出售对项目的访问权限?但是我需要将我客户的数据保存在一个数据库中。
你怎么看?
将此应用程序创建为 SaaS(软件即服务)。您可以给他们一些默认的前端模板甚至客户端应用程序(网站和管理部分),但将所有后端保留在您的服务器上。创建 REST 端点、验证客户端并为他们提供他们购买的功能。
例如:
客户A向您购买了计算器服务。它进行身份验证,并对 /api/calculate/subtract/5/1 进行 GET 调用。你给他们你的计算器所做的反应,例如 5-1 = 4。他们可以使用你为这个数据预览准备的模板或创建他们自己的模板。
客户B向您购买了计算器和存储服务。您计算相同的值,将其返回,但也将其存储在您自己的数据库中。所以客户B也可以调用GET /api/storage/last_calculation,你给他们4个,因为客户数据存储在你的数据库中,他也购买了存储服务,所以他不需要自己设置数据库。
这个例子很简单,但是你应该明白了。
例如简单的方案,每个客户端都有单独的数据库:
我有几个 PHP Laravel 项目(restful API,管理应用程序,客户端应用程序)。 API 使用的数据库只有一个。该项目是一些公司可以使用的某种应用程序。他们可以访问管理面板、客户端网页,他们可以使用自己的 API,他们可以创建自己的用户、权限等。如果这个项目将由一个客户使用没有问题,但我要将这个应用程序卖给很多人。我将负责更新、托管、配置等。我想知道如何让它成为最好的方式,我有一些想法。
- 每次有人从我这里购买应用程序时,我都考虑过在服务器上克隆该应用程序。这需要在服务器上设置一个新的子域和大量磁盘 space。不确定。
- 或者克隆应用程序并使用供应商等符号链接共享一些文件,node_modules 等
- 另一个想法是将它作为一个项目,为不同的客户提供许多数据库,但如何以最好的方式在 Laravel 中实现它?我将需要一些动态的方式来更改数据库连接(我希望每个客户端都有单独的数据库),我不确定与会话、缓存等的冲突。
- 也许单独的数据库是一个错误的想法,最好是拥有一个数据库并将其作为一个项目并出售对项目的访问权限?但是我需要将我客户的数据保存在一个数据库中。
你怎么看?
将此应用程序创建为 SaaS(软件即服务)。您可以给他们一些默认的前端模板甚至客户端应用程序(网站和管理部分),但将所有后端保留在您的服务器上。创建 REST 端点、验证客户端并为他们提供他们购买的功能。
例如:
客户A向您购买了计算器服务。它进行身份验证,并对 /api/calculate/subtract/5/1 进行 GET 调用。你给他们你的计算器所做的反应,例如 5-1 = 4。他们可以使用你为这个数据预览准备的模板或创建他们自己的模板。
客户B向您购买了计算器和存储服务。您计算相同的值,将其返回,但也将其存储在您自己的数据库中。所以客户B也可以调用GET /api/storage/last_calculation,你给他们4个,因为客户数据存储在你的数据库中,他也购买了存储服务,所以他不需要自己设置数据库。
这个例子很简单,但是你应该明白了。
例如简单的方案,每个客户端都有单独的数据库: