Развертывание — Структура PHP-приложения для простого обновления и масштабирования?

У меня есть большая проблема, пытаясь найти способ структурировать мое приложение для масштабирования. Ниже моя текущая установка:

У нас есть приложение, написанное на PHP и MySql. Приложение написано таким образом, что теоретически оно может обслуживать тысячи различных веб-сайтов, использующих одну и ту же кодовую базу (но у каждого будет разная база данных).

  1. В нашей текущей настройке мы имеем 1 файл конфигурации nginx на 1 веб-сайт, все они указывают на одно и то же местоположение, скажем / var / www / current-version. У нас есть способ узнать, какой веб-сайт должен быть представлен.

  2. Каждый раз, когда мы обновляем, мы обновляем код до / var / www / new-version

  3. Скопируйте весь код из / var / www / current-version / в / var / www / old /

  4. Укажите все текущие проекты от текущего / к старому / путем поиска и замены всех файлов конфигурации nginx и перезагрузите сервис

  5. Скопировать код из нового / в текущий /

  6. Перебирайте сайты, чтобы

    • отредактируйте соответствующий файл конфигурации nginx, чтобы он указывал на текущую / папку
    • синхронизировать новые обновленные файлы конфигурации во всех экземплярах
    • Запустите скрипт обновления (мы должны сделать это, потому что процесс обновления может включать перенос БД и некоторые другие вещи)

Этот процесс обновления включает в себя довольно много шагов и связан с определенными проблемами, например, когда синхронизация происходит недостаточно быстро.

Интересно, есть ли лучший способ сделать это?

PS:
Я не уверен, что это лучшее место, чтобы задать такой вопрос, так как в stackexchange слишком много суб-сайтов, и я запутался. В любом случае, пожалуйста, дайте мне знать, если я напишу не в том месте

0

Решение

Почему бы просто не использовать символические ссылки? Например, все конфиги nginx настроены на / var / www / website, то есть символическую ссылку на / var / realdir / website_1_1_0. Вы развертываете новый код в / var / realdir / website_1_2_0 и после этого просто изменяете символическую ссылку, чтобы указать на этот новый каталог.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]