【问题标题】:Laravel 5 subdomain sites hosts as new project or not?Laravel 5 子域站点是否作为新项目托管?
【发布时间】:2015-05-14 00:49:30
【问题描述】:

我有这个问题,我无法决定什么是什么,什么是最好的。希望有人能给我一些解释,以消除我的困惑。

就是这样,我有一个很大的网站。目前在 Yii 框架上运行,我正在将其迁移到 L5 框架。该网站有几个子网站结构,如下例所示:

1) www.example.com
2) www.example.com/{username}
3) explore.example.com
4) explore.example.com/{organization}
5) connect.example.com
6) coin.example.com
7) m.example.com
8) e3.example.com

所以当前的托管方法是使用 1 个项目来托管所有内容。问题来了,如果某个子站点由于某种原因被禁用,则需要停止整个网站,禁用该站点的代码并再次部署整个站点。

回到 L5 框架,我注意到我可以在 laravel 中做同样的事情,也可以使用 routes.php 中的以下路由方法在一个项目中托管所有内容:

Route::group(['domain' => '{account}.myapp.com'], function()
{

    Route::get('user/{id}', function($account, $id)
    {
        //
    });

});

同样的问题再次出现,如果要禁用子站点,我需要对禁用站点进行编码并重新部署整个站点。所以我在想是否可以将新项目中的每个子站点作为一个模块托管,这样如果对该子站点进行任何更改,它只会影响该特定模块,而其他模块保持运行。

此外,我还想问一下,如果我将它作为一个单独的项目托管,我的网站需要用户登录才能导航到任何页面或应用程序。那么如何告诉其他模块用户在哪里登录,一切都可以照常进行呢?

当然,最后如果有人有任何其他建议或方法,也请不吝赐教。我的主要动机是:

1) Maximum development flexibility
2) Fail tolerance
3) Sub sites can share the same login with the main website 
(You are only require to login at the main page and you will be authorized
to use the rest of the web application)

谢谢。

【问题讨论】:

    标签: laravel laravel-5


    【解决方案1】:

    我想,答案为时已晚。不过,它可能会对其他人有所帮助。

    今天我自己也面临类似的困境 - 我应该为我的应用程序的公共站点和管理站点使用子站点还是单独的应用程序。

    起初,如果我只想升级其中的一个,我似乎应该有单独的应用程序以避免关闭 bith 网站。但我不想在我的存储库中重新复制所有 Laravel 样板代码。

    然后我想到,实际上我可以将所有东西都实现为子站点,但我可以将 Laravel 应用程序部署到多个子域。因此,存储库中将只有一个应用程序,但每个子域都有不同的副本。

    缺点 - 控制器、视图(以及一些特定于站点的模型)的代码将为每个部署的站点复制。对于小型站点来说,这不是问题——只是一堆未使用的文件。但是如果我想要一个干净的解决方案,我可以实现一些模块化结构并在部署期间引入特定于站点的 MVC 东西。那是另一个话题,我猜。模块化 Laravel 应用程序有一些 3rd 方解决方案。当然,模块化解决方案增加了复杂性和维护,因此我不反对在服务器上复制文件,如果这对你来说不是问题的话。

    关于身份验证 - 我没有在 Laravel 中尝试过,但我有在纯 PHP 应用程序中为顶级域实现 cookie 的经验。本质上,您可以将会话 cookie 配置为对所有子域有效,然后用户只需在您的任何站点中登录一次。这似乎是 Laravel 的有效解决方案: Persisting sessions across subdomains in Laravel 5

    只需将顶级域设置为.example.com,理论上你应该很好。不过,出于开发目的,我会将此值存储在 .env 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-20
      • 2019-12-01
      • 2016-08-20
      • 2018-07-11
      • 1970-01-01
      • 2015-02-15
      • 2014-07-16
      相关资源
      最近更新 更多