【问题标题】:Structure PHP application for easy upgrade and scaling?构建 PHP 应用程序以便于升级和扩展?
【发布时间】:2015-11-06 19:49:12
【问题描述】:

我在试图找到一种方法来构建我的应用程序以进行扩展时遇到了一个大问题。以下是我当前的设置:

我们有一个用 PHP 和 MySql 编写的应用程序。该应用程序的编写方式理论上可以使用相同的代码库为数千个不同的网站提供服务(但每个网站都有不同的数据库)。

  1. 在我们当前的设置中,每个网站有 1 个 nginx 配置文件,它们都指向同一个位置,比如说 /var/www/current-version。我们有办法知道应该呈现哪个网站。

  2. 每次升级时,我们都会将代码更新到 /var/www/new-version

  3. 将所有代码从 /var/www/current-version/ 复制到 /var/www/old/

  4. 通过搜索和替换所有 nginx 配置文件并重新加载服务,将所有当前项目从 current/ 指向 old/

  5. 将代码从新/复制到当前/

  6. 通过网站循环到

    • 编辑对应的nginx配置文件指向当前/文件夹
    • 在所有实例中同步新的更新配置文件
    • 运行更新脚本(我们必须这样做,因为升级过程可能涉及迁移数据库和其他一些事情)

此升级过程涉及相当多的步骤,并且会遇到某些问题,例如同步速度不够快。

不知道有没有更好的办法呢?

PS: 我不确定这是否是提出此类问题的最佳地点,stackexchange 的子站点太多,我很困惑。无论如何,如果我发错地方了,请随时告诉我

【问题讨论】:

    标签: php deployment upgrade scalability


    【解决方案1】:

    为什么不只使用符号链接?例如,所有 nginx 配置都设置为 /var/www/website,即 /var/realdir/website_1_1_0 的符号链接。您将新代码部署到 /var/realdir/website_1_2_0 并在它之后更改符号链接以指向这个新目录。

    【讨论】:

    • 这是一个简单而绝妙的想法。但是我确实有一个问题:我们有数千个站点使用相同的代码库,但是当我们升级时,我们不能简单地一次升级它们(因此我们不能简单地一次切换所有代码),我们必须一个一个地做,因为我们有可能必须在每个站点上运行数据库迁移。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 1970-01-01
    • 2022-06-15
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多