Вопрос

Мы разрабатываем приложение, которое будет предлагаться в качестве размещенного решения.Я поражен пониманием того, как я могу использовать несколько сайтов с одним и тем же кодом без дублирования базового кода.

например:веб-сайт 1:www.example.com и веб-сайт 2:www.sample.com будет работать с тем же кодом, но будет иметь другие параметры конфигурации и другую тему...например, мы запускаем наши собственные доменные имена в WordPress.

я хотел бы знать, как я могу это сделать.

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

пожалуйста, помогите мне.

[уточнение] это не псевдоним домена.Нравится...это была бы услуга.где разным клиентам будет предложено одно и то же приложение на их собственном доменном имени с разной тематикой.что-то вроде того, что делает blogger..с собственными доменными именами, но с тем же приложением для блога

[технология] в частности, я рассматриваю, как использовать имя хоста, чтобы определить, какую конфигурацию использовать мы используем PHP и MySQL

Это было полезно?

Решение

Повторное использование кода определенно желательно.Из ваших постов трудно представить, насколько сайты будут отличаться друг от друга.Мы говорим о логотипах и цветовых схемах или о другой функциональности?

Я начну с другого внешнего вида.Я также предположу, что это единственное приложение на сервере.

Я рекомендую тщательно спланировать вашу структуру каталогов.Что -то вроде:

www-root/  
   / lib  
   / themes
        / domain1  
        / domain2  


index.php:

<?php
$host = $_SERVER['HTTP_HOST'];
$include_theme = "themes/" . $host . "/configuration.php";
//make sure the file exists
require_once($include_theme);

Это упрощенный подход, но в нем есть кое-что, о чем стоит задуматься.

Другие советы

На самом деле все очень просто.

Ваша кодовая база может и должна быть единой.Вы загружаете его в hosting1 и hosting2.При обслуживании, как только вы обновите код, загрузите его в оба пространства хостинга.

Я полагаю, что именно так работает и этот сайт.Посмотрите на нижний колонтитул страницы.У вас есть stackoverflow, meta, superuser и serverfault.Если вы посмотрите, что сейчас написано в комментарии внизу справа, это будет "редакция svn:5404".То же самое.Одна база кода опубликована на четырех сайтах.Базы данных, конечно, разные и содержат совершенно разный контент.

Таким образом, переменными частями являются:

  1. Конфигурация

  2. Настройки

  3. Данные

Те, которые вам нужно скопировать.

Вам нужно закодировать это таким образом, чтобы конфигурация и настройки не были жестко запрограммированы, а либо сохранялись в некоторой таблице базы данных, либо, по крайней мере, в некоторых внешних файлах конфигурации.Они не являются частью кода (или реализации, если хотите), поэтому им не обязательно быть в коде.Если они у вас есть, выньте их.

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

Как правило, если вы используете несколько сайтов, у вас должен быть свой сервер для каждого.

Редактировать:

Прочитав комментарии к другому ответу, я немного лучше понимаю ваш вариант использования.

Если у вас есть большое количество сайтов, для которых вы хотите использовать эту настройку, если вы правильно спроектируете архитектуру и реализуете какую-либо схему балансировки нагрузки для обработки больших пользовательских нагрузок, вы могли бы заставить это работать.

Подводя итог:

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

Прямо сейчас мы делаем это примерно с 15 000 уникальными доменами.Это несложно, но для правильной реализации требуются некоторые конструктивные соображения.

Вы можете сделать это с помощью одной кодовой базы и сервера и, по сути, просто создать свой код, полностью зависящий от входящего запроса HTTP_HOST ценность.Затем все в вашей базе данных отключается от этого значения, чтобы правильно разделить данные и ответить на запрос соответствующими данными / html.

По соображениям безопасности вы могли бы рассмотреть:

A) установите отдельное ограничение open_basedir для каждого хоста, чтобы загруженные пользователем файлы не могли быть доступны другим веб-сайтам, например:/общая библиотека /host1/пользовательские изображения /host2/ пользовательские изображения

Вы можете включить общие каталоги и каталоги, зависящие от домена, в разрешенные пути.

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

Если у вас чрезвычайно простое приложение, вам может сойти с рук одна база данных.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top