Несколько сайтов, использующих одну базу кода, лучшая настройка, чтобы иметь возможность обновлять все сайты одновременно для решения основных проблем, но каждый сайт имеет свои собственные настройки? - PullRequest
2 голосов
/ 04 августа 2020

У меня есть приложение, построенное на laravel, и я использую Bitbucket для управления версиями. В настоящее время я запускаю несколько сайтов из этой одной базы кода / ветки. Я хочу иметь возможность изменять цвета для каждого сайта, а также добавлять собственный код для некоторых страниц. Есть основные части сайта, которые никогда не изменятся, пока не обновятся все сайты. Как лучше всего настроить это в Bitbucket, чтобы, если мне нужно сделать обновление основного кода и sh его для всех сайтов, имея возможность настраивать определенные части каждого сайта?

Ответы [ 2 ]

1 голос
/ 04 августа 2020

Я нахожусь в похожей лодке, и я решил эту проблему, создав новое значение в файле .env: APP_BRANDING, которое отличается для каждого сайта. В файле config / app. php у меня есть такая строка:

'branding'=> env('APP_BRANDING', 'default');

Затем я могу проверить, какое значение config('app.branding') находится в коде, и (например) изменить нижний колонтитул на основе его значения.

Для этого не обязательно иметь только одно значение. Для вас может иметь больше смысла иметь несколько в зависимости от того, какие изменения между сайтами.

Вы не должны сохранять .env в системе управления версиями, поэтому вам не нужно делать что-либо другое для развертывания.

0 голосов
/ 04 августа 2020

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

У меня есть такая структура папок (здесь перечислены не все файлы и папки, а только важные):

core/
  .git
  app/
  config/
  database/
  public -> ../design/public/
  resources -> ../design/resources/
  routes/
  .gitignore
design/
  .git
  public/
  resources/
  .gitignore

Итак, у меня есть две основные папки core и design. Папка core имеет символические ссылки на public и resources, расположенные в папке design. Обе папки имеют собственное хранилище git. Вам даже не нужно исключать public и resources из .gitignore папки core, потому что git будет просто отслеживать символические ссылки, а не их содержимое.

Конечно вы также можете перемещать отдельные файлы, такие как специальные контроллеры, конфигурации, начальные числа базы данных и т. д. c. в папку design, если они не являются частью основных компонентов вашего приложения.

На вашем сервере (ах) вы развертываете приложение в той же структуре папок. Вы извлекаете один репозиторий в папку core, а другой - в папку design. Вы можете свободно работать с репозиторием core и обновлять sh для всех серверов. И если у вас есть design обновлений для сайтов, вы можете работать с репозиторием дизайна и sh с этим для определенного сайта.

Надеюсь, вы следуете моим объяснениям - для меня этот сценарий работает очень хорошо!

...