У меня есть несколько приложений CakePHP, и я предпочитаю иметь приложение для каждого сайта и делиться источником торта.Плагины аккуратны как способ создания функций и многократного использования.Они поддерживают основную базу кода легким, и я согласен, что это помогает.Они не помогут вам настроить маршрутизацию или конфигурации приложения.
Когда я впервые исследовал это для своего проекта, я исследовал использование плагинов в качестве опции, но увидел отсутствие стандартного контроля над конфигурациями ядра и маршрутизацией какболевая точка.Доступ к базе данных или любому источнику данных в этой среде может стать утомительным, если у вас есть несколько сайтов.Особенно, если каждый сайт имеет свои собственные источники данных, маршруты и конфигурации.
То, как я видел это, любое отклонение от «пути CakePHP» не было идеальным, насколько сложно было запускать несколько сайтов из одного кода приложения.база?
Испытания
- Все ваши маршруты одинаковы, или для некоторых сайтов нужны другие правила.
- Является ли ваша функциональность одинаковой для всех сайтов или есть некоторые различия, которые могут заставить вас взломать ваш основной код.
Представьте себе это в любой конфигурации или app_controller.php
if($domain == 'first.example.com'):
#This is the first time I override this value, is it the last?
endif;
Без конца на сайте я обнаружил, что мое время разработки тратится на поиск умных способов абстрагирования этого.Не основной функциональности, которую я жаждал.
Чтобы предотвратить общеизвестное гнездо птиц, я решил создать один каталог приложений для каждого сайта.Основная причина, по которой я так поступил, состояла в том, чтобы предотвратить развитие описанного выше беспорядка в базе кода.Я запускаю несколько источников приложений, но используя bash-скрипт и контроль версий, это простая работа по сравнению со временем, которое требуется, чтобы придумать умный способ абстрагировать все это в одном приложении.
Почему
Ваши сайты становятся проще для тестирования и управления.Помогает то, что у каждого сайта есть свой кэш, а также места для журналов, поэтому, если что-то случится, у вас будет больше времени для отладки.Вы даже можете поделиться своим каталогом плагинов на всех сайтах.Это проще, потому что заботится о сложности управления несколькими средами.
Хотя может быть неоптимальным иметь базу кода для каждого сайта.Я считаю, что это является частью процесса прагматизма.Вы решаете, что подходит именно вам, я знаю, что есть несколько людей, которые говорят об успехе, используя одно решение.Выбор за вами.
Если вы решили пойти по пути, чтобы иметь 1 приложение для каждого сайта.Это похоже на структуру моей папки
/var/www/cakehost/first.example.com/current #Symlink that points to the latest revision.
/var/www/cakehost/second.example.com/current #Symlink that points to the latest revision.
/var/www/cakehost/third.example.com/current #Symlink that points to the latest revision.
/var/www/cakehost/src/cake
После того, как вы решили экспортировать 1 приложение для каждого сайта, вы просто используете файл bootstrap.php так, как это было задумано.
Я используюСкрипт для экспорта шаблонного "приложения" из моего контроля версий.Приложение работает во всех средах без хаков.Любые отклонения происходят из файла bootstrap.php.Чтобы упростить это, вы можете создать единый каталог плагинов и символическую ссылку на него со всех сайтов.
/var/www/cakehost/plugins/ #Symlink source for each app.
Даже если это кажется ненужным дублированием, мой код остается аккуратным, а тестирование - очень простым.Я пытался использовать 1 приложение для всего с плагинами, это было не совсем правильно.