Движок на домене 1 и нужно, чтобы остальные домены обращались именно к этому движку

nefexus

Новичок
Есть самописный CMS. Не хочется копировать этот движок на домены моих клиентов, т.к. при обновлении движка придётся закачивать обновлённые php-файлы на каждый из доменов. Тоже самое при обновлении базы, например, добавлении новой таблицы, также придётся лезть во все базы клиентов и выполнять команду create table.
Сначала я думал сделать на остальных доменах обращение к движку через <?php include('../general-domain.ru/index.php');
Движок на домене 1 узнавал бы из $_SERVER['HTTP_HOST'] с какого домена пришло обращение и на основе этого выдавал бы соответствующий домену контент. Но проблема в том, что в самом движке есть include шаблонов и почему-то эти шаблоны движком не находятся.
Прошу подсказать как решить проблему по использованию одной копии движка и одной копии базы для множества доменов? Домены находится внутри одного пользователя, т.е. php-сценарию доступны все домены.
 

AnrDaemon

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

nefexus

Новичок
Решением проблемы будет нормальная система развёртывания, и своя база для каждого приложения.
М. CMS не настолько продвинутая и создание системы развёртывания может занять внушительное кол-во времени относительно времени, потраченного на создание движка. По сути единственная проблема - это название домена. Если бы не домен, то тогда бы обращение к движку можно было бы обращаться как domain1.ru/?customer=customer1 Но клиент хочет, чтобы на визитке был указан именно его домен, т.е. customer1.ru, а не domain1.ru/?customer=customer1. Если бы клиенты были бы согласны на адрес вида domain1.ru/?customer=customer1, то тогда проблемы бы не было - через переменную $customer я бы легко загружал нужный контент, добавляя в sql-запросы WHERE customer='customer1'
Но как сделать так, чтобы когда клиент ходит по страницам домена customer1.ru, хостинг делал так, чтобы как будто клиент ходит не по customer1.ru, а по domain1.ru? При этом чтобы движок узнавал о том, какой контент нужно загрузить, через $_SERVER['HTTP_HOST'] или через добавление во все url-ы переменной "?customer=customer1"?
 

AnrDaemon

Продвинутый новичок
Вот честно, не вижу, где тут
1. PHP,
2. проблемы.

Всё настраивается по примерам из мануалов. На веб-сервер, да.

P.S.
И, да, ты ещё не забыл, что HTTP_HOST это заголовок и передаётся клиентом? А доверять данным, переданным клиентом, а тем более строить на них свою бизнес-логику - это несколько ненадёжно?
 

nefexus

Новичок
Не знал, что HTTP_HOST передаётся клиентом. Т.е. это не сам PHP определяет на основе того, на какой домен зашли?
Всё настраивается по примерам из мануалов.
Какой мануал смотреть? По mod_rewrite? С ним работать не приходилось, но видел в статью про подмену, когда речь идёт о преобразовании, например, /articles/17 в ?articles=17. Здесь тоже самое нужно применить с подменой домена, когда человек вводит customer1.ru, а Apache думает, что ввели domain1.ru? А как браузер будет грузить, к примеру картинки, которые он будет искать по адресу customer1.ru/img, хотя они будут лежать в домене движка по адресу domain1.ru/img/?
Мне пока непонятно направление мысли, какое и где решение искать, т.к. такая задача стоит впервые.
 

Kotofey

FloodMaster.
попробуй использовать git и hooks, изменил на главном сервере, подтянулось на остальных.
или на customer1.ru делай проксирование к примеру на nginx контента domain1.ru?customer=customer1
 

WMix

герр M:)ller
Партнер клуба
1. настрой все домены на одну папку. (virtual host)
2. узнай домен при помощи $_SERVER[HTTP_HOST]
всё
 

AnrDaemon

Продвинутый новичок
Вообще-то $_SERVER[SERVER_NAME] …
А то с альясами не разгребёшься.
 

antson

Новичок
Партнер клуба
все даже можно автоматизировать через редактирование алиасов к фиктивным контейнерам используя wwwdomain.edit апи ISP.
остается только продумать как assets и upload клиентов будешь по папкам раскладывать.

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

пути можно сделать нужными только для админки,
а задачу решать откуда вывести статику переложить на nginx
 
Последнее редактирование:
Сверху