Как бороться с несколькими сайтами, имеющими доступ к одному «мозгу»?
-
19-09-2019 - |
Вопрос
Как правило, моя разработка охватывала только малые и средние компании и сайты электронной коммерции.
Мой следующий проект будет охватывать, скажем, 30 сайтов, однако у них будет около 95% общего.Я хочу, чтобы у них был один «мозг», что означает, что я могу вносить изменения, обновления в структуру и т. д. только один раз.
Интересно, делает ли это семейство сайтов Stack Overflow (суперпользователь, stackoverflow, serverfault и т. д.).
Я предпочитаю языки/платформы PHP 5.3, MySQL 5 и Kohana Framework.
Мозг должен иметь
- 1 система администрирования, которая может обрабатывать каждый сайт
- все шаблоны существуют в мозгу, однако у них есть заполнители, например, заголовок, логотип и т. д.
- Чтобы я мог развернуть любое обновление глобальных шаблонов, я автоматически отфильтрую его для всех остальных сайтов.
Я понимаю, что это создаст большую нагрузку на мозг, поэтому мне придется часто использовать кэширование на стороне сервера.
Как бы мне обеспечить доступ каждого домена к мозгу, например:
http://www.mysite2.com/products/something
беззвучный доступ http://www.mothership.com/mysite2/products/something
И будет ли это лучшим способом сделать это?Есть ли у вас какие-либо советы?Я на правильном пути?
Не стесняйтесь спрашивать меня больше подробностей.
Решение
Проще всего это сделать с помощью виртуального хостинга.По сути, вы запускаете все сайты на одной машине.На одной машине установлена конфигурация Apache, которая обслуживает все сайты.
Если сайты больше похожи, чем различны, просто укажите все сайты в один каталог.Файлы PHP могут определять, какой сайт они обслуживают.Вы можете предоставить разные верхний и нижний колонтитулы для каждого сайта, чтобы обеспечить внешний вид.Таким образом вы также можете ограничить определенные страницы.
Если сайты более разные, чем похожие, укажите каждый из них в отдельный каталог и в каждом каталоге разместите страницы, относящиеся к этим сайтам.
Для общей функциональности вы можете использовать что-то вроде mod_rewrite для сопоставления URL-адресов на разных сайтах с одним и тем же сценарием, или вы можете иметь PHP-скрипты в каждом месте, которые включают/требуют общих функций.
В принципе, вариантов много.Ваша цель должна состоять в том, чтобы сделать сайт простым в обслуживании и свести дублирование кода к абсолютному минимуму.
По просьбе предлагаю прочитать:
- Конфигурация виртуального хостинга Apache:однако это сложная тема, поэтому вы можете обратиться к Serverfault, чтобы добраться до темных глубин;
- Настройка виртуального хоста в Apache;и
- PHP-трюки:Как работать с несколькими доменами.
Другие советы
Вы можете добиться этого в Apache, используя <VirtualHost> Directive
.Чтобы сделать это в Apache 2.x, отредактируйте httpd.conf
и раскомментируйте эту строку (обычно находится в конце файла): Include conf/extra/httpd-vhosts.conf
.Затем найдите файл httpd-vhosts.conf
и войти в VirtualHosts
в этом формате:
<VirtualHost 10.1.2.3>
DocumentRoot /home/site1
ServerName site1.com
</VirtualHost>
<VirtualHost 10.1.2.3>
DocumentRoot /home/site2
ServerName site2.com
</VirtualHost>
<VirtualHost 10.1.2.3>
DocumentRoot /home/site2
ServerName site3.com
</VirtualHost>