У меня есть большая проблема, пытаясь найти способ структурировать мое приложение для масштабирования. Ниже моя текущая установка:
У нас есть приложение, написанное на PHP и MySql. Приложение написано таким образом, что теоретически оно может обслуживать тысячи различных веб-сайтов, использующих одну и ту же кодовую базу (но у каждого будет разная база данных).
В нашей текущей настройке мы имеем 1 файл конфигурации nginx на 1 веб-сайт, все они указывают на одно и то же местоположение, скажем / var / www / current-version. У нас есть способ узнать, какой веб-сайт должен быть представлен.
Каждый раз, когда мы обновляем, мы обновляем код до / var / www / new-version
Скопируйте весь код из / var / www / current-version / в / var / www / old /
Укажите все текущие проекты от текущего / к старому / путем поиска и замены всех файлов конфигурации nginx и перезагрузите сервис
Скопировать код из нового / в текущий /
Перебирайте сайты, чтобы
Этот процесс обновления включает в себя довольно много шагов и связан с определенными проблемами, например, когда синхронизация происходит недостаточно быстро.
Интересно, есть ли лучший способ сделать это?
PS:
Я не уверен, что это лучшее место, чтобы задать такой вопрос, так как в stackexchange слишком много суб-сайтов, и я запутался. В любом случае, пожалуйста, дайте мне знать, если я напишу не в том месте
Почему бы просто не использовать символические ссылки? Например, все конфиги nginx настроены на / var / www / website, то есть символическую ссылку на / var / realdir / website_1_1_0. Вы развертываете новый код в / var / realdir / website_1_2_0 и после этого просто изменяете символическую ссылку, чтобы указать на этот новый каталог.
Других решений пока нет …