Несколько сайтов в одном

Решение вопроса возможности в рамках одного сайта создать несколько, и сэкономить на тарифе хостинга

#1 9 июля 2016 в 12:15
Пользуюсь хостингом с ограничением по количеству сайтов. В какой-то момент достиг потолка и понял, что переплачивать только лишь за возможность создавать бОльшее их число не хочется, поэтому решил задаться вопросом: возможно ли в рамках одного сайта создать несколько?

Решение нашлось, понадобится добавить лишь несколько строчек кода, об этом ниже)

В принципе, я подготовил архив с уже подредактированными файлами – они для версии 2.5.1. Необходимо просто закинуть на хостинг, заменив имеющиеся. Файл можно скачать здесь: cloud.mail.ru/public/HSSo/xvgxtdPEs
\install\steps\config.php
\system\controllers\admin\actions\install_ftp.php
\system\core\config.php
Добавится один новый – \system\config\domen.config.php

Принцип работы прост: при заходе с разных доменов на сайт, CMS подключается к разным базам данных, либо той же, но с другими настройками (какие — укажете при установке). Обо всём подробнее ниже.

Добавляемые строки кода

Строка 8:
  1. $file = 'config.php';
заменяется на
  1. $file = $_SERVER['HTTP_HOST'] . '-config.php';
В функции "create_config" добавляются строки:
  1. $newdomen = fopen($path . '/' . 'domen.config.php', 'a');
  2. fwrite($newdomen, "else if(\$_SERVER[HTTP_HOST] == '" . $_SERVER[HTTP_HOST] . "') { \$cfg_file='" . $file . "'; } \n");
  3. fclose($newdomen);
Добавляется новая функция:
  1. public function getDomenConfig(){
  2. //require_once('domen.config.php');
  3. include('system/config/domen.config.php');
  4. return $cfg_file;
  5. }
В функции "checkDestination" добавляются строки:
  1. $cfg_file='config.php';
  2. $cfg_file = self::getDomenConfig();
Там же меняется строка
  1. 'system/config' => 'config.php'
на
  1. 'system/config' => $cfg_file
.

Добавляется новая функция:
  1. public function getDomenConfig(){
  2. //require_once('domen.config.php');
  3. include('system/config/domen.config.php');
  4. return $cfg_file;
  5. }
В функциях "__construct", "load", "save" и "update" добавляются строка:
  1. $cfg_file = self::getDomenConfig();
.

Здесь прописаны переменная и правило:
  1. $cfg_file='config.php';
  2. if($_SERVER[HTTP_HOST] == 'mysite.ru') { $cfg_file='config.php'; }
ПС. В дальнейшем, при установке новых сайтов, здесь будут добавляться правила вида: если на сайт был заход с такого-то домена, то открывается такой-то файл конфигурации.
Внимание! Прежде чем продолжить работу над сайтом, необходимо изменить доменное имя "mysite.ru" на имя вашего первого (основного) домена!

Все изменения сопровождаются комментариями в самих файлах.

В общем-то ни чего сложного нет, как видите. Этот способ был опробованы на версиях 2.4.0 и 2.5.1 – всё отлично работает!

Установка

Рекомендую производить установку первого сайта обычным образом, с применением стандартной сборки CMS. Иначе, если вы замените файлы до установки первого (основного) сайта, необходимо будет подредактировать следующие файлы:
\system\config\domen.config.php — здесь понадобится удалить лишнюю строку
  1. if($_SERVER[HTTP_HOST] == 'your-domen.ru') { $cfg_file='your-domen.ru-config.php'; }
— она появится сразу после строки
  1. if($_SERVER[HTTP_HOST] == 'mysite.ru') { $cfg_file='config.php'; }
(ПС. Здесь "your-domen.ru" — имя домена, с которого вы производили установку первого (основного) сайта).
Далее заменяем в строке
  1. if($_SERVER[HTTP_HOST] == 'mysite.ru') { $cfg_file='config.php'; }
доменное имя "mysite.ru" на доменное имя первого (основного) сайта.
\system\config\your-domen.ru-config.php — заменяем имя файла на "config.php" (ПС. Здесь "your-domen.ru" — имя домена, с которого вы производили установку первого (основного) сайта).

После того, как вы закончили с установкой первого сайта, можно подходить к установке второго, и последующих – процедура установки каждого следующего сайта, начиная со второго, одинакова:

1. Заходим на нужный нам домен (например, "site2.ru"), добавляем через слеш название папки инсталляции (например, так: "site2.ru/install"), переходим по получившемуся адресу;
2. Здесь вполне стандартная установка, кроме двух пунктов:
– на вкладке, где указываем расположение кэша и загружаемых файлов, желательно (не обязательно) указать другое расположение, и скопировать туда соответствующие предустановленные папки ("cache" и "upload");
– на вкладке, где прописываем базу данных и префикс, мы должны указать другую базу данных, либо префикс – иначе оба ваших сайта будут работать с одними и теми же данными.
3. Радуемся)

Комментарии и замечания

Во время установки второго сайта на первой вкладке я менял названия папок следующим образом: "\cache" на "\cache_domen-name", "\upload" на "\upload_domen-name". На второй вкладке я исправлял только префикс с "cms_" на "cms_domen-name_", базу данных я оставлял прежней. Здесь важное замечание: ни когда не пишите префиксы с точками, например так: "cms_site2.ru_" – работать не будет, проверенно!

Cron не работает, увы.

  1. PHP Warning: include(system/config/domen.config.php): failed to open stream: No such file or directory in /home/x/мой_логин_на_хостинге/папка_сайта/public_html/system/core/config.php on line 50
  2. PHP Warning: include(system/config/domen.config.php): failed to open stream: No such file or directory in /home/x/мой_логин_на_хостинге/папка_сайта/public_html/system/core/config.php on line 50
  3. PHP Warning: include(): Failed opening 'system/config/domen.config.php' for inclusion (include_path='.:/opt/php53/share/pear:/usr/share/pear') in /home/x/мой_логин_на_хостинге/папка_сайта/public_html/system/core/config.php on line 50
  4. PHP Warning: include(system/config/domen.config.php): failed to open stream: No such file or directory in /home/x/мой_логин_на_хостинге/папка_сайта/public_html/system/core/config.php on line 50
  5. PHP Warning: include(system/config/domen.config.php): failed to open stream: No such file or directory in /home/x/мой_логин_на_хостинге/папка_сайта/public_html/system/core/config.php on line 50
  6. PHP Warning: include(): Failed opening 'system/config/domen.config.php' for inclusion (include_path='.:/opt/php53/share/pear:/usr/share/pear') in /home/x/мой_логин_на_хостинге/папка_сайта/public_html/system/core/config.php on line 50
  7. PHP Warning: include(/home/x/мой_логин_на_хостинге/папка_сайта/public_html/system/config): failed to open stream: No such device in /home/x/мой_логин_на_хостинге/папка_сайта/public_html/system/core/config.php on line 168
  8. PHP Warning: include(): Failed opening '/home/x/мой_логин_на_хостинге/папка_сайта/public_html/system/config/' for inclusion (include_path='.:/opt/php53/share/pear:/usr/share/pear') in /home/x/мой_логин_на_хостинге/папка_сайта/public_html/system/core/config.php on line 168

Обновлять не пробовал. ИМХО, это возможно, но производить обновление придётся в обязательном порядке для каждого "внутреннего сайта", ни кого не упуская, так как системные (основные) файлы у них у всех будут одни и теже.
Прикрепленный файл
multidomen251_gbc7d.zip 7 Кб
#2 9 июля 2016 в 13:25
За работу ума и за желание поделиться с миром своими успехами, плюс конечно, но зачем такие жертвы, когда полно вот такого
#3 9 июля 2016 в 14:11
интересно!
#4 9 июля 2016 в 14:42
Надо еще постараться надо найти хостинг где ограничение будет по доменам.
#5 9 июля 2016 в 14:43


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

Нил™

Нил, вот честно, нет у меня 700 руб. в месяц на хостинг! Да и не доверяю я "безграничным" хостингам – у них часто сайты медленно работают.
#6 9 июля 2016 в 14:53
У кого ни будь есть идеи, почему Cron не работает?
#7 9 июля 2016 в 14:54
Да, 700р в месяц это как-то очень дороговато особенно если сайт ничего не приносит и он в основном просто как хобби
#8 9 июля 2016 в 14:55
Webhost1.ru размещайте сколько угодно сайтов)
Превосходный хостинг)
#9 9 июля 2016 в 15:15

Да, 700р в месяц это как-то очень дороговато особенно если сайт ничего не приносит и он в основном просто как хобби

Capitan
ну так если у вас сайт один который ничего не приносит и просто как хобби, то перед вами не встает вопрос о том как разместить много доменов на один аккаунт, верно? Тогда конечно для вас дорого. А если вы делаете уже десятый сайт, то наверно стоит заплатить)
#10 9 июля 2016 в 15:48
Огненный Лис, я плачу 300 рублей в месяц за безлимит. Около 10 сайтов. Правда посещалка на всех маленькая, но открываются быстро.
#11 9 июля 2016 в 16:06


Огненный Лис, я плачу 300 рублей в месяц за безлимит. Около 10 сайтов. Правда посещалка на всех маленькая, но открываются быстро.

Volgomarket

Пробовал несколько безлимитных, ни один из них так не радовал, как радует мой хостинг. Пользуюсь ТаймВебом (http://timeweb.com/ru/services/hosting/), плачу 299 за 25 сайтов. Так как здесь, ни где мои сайты лучше не летали.

Вы сами то каким хостингом пользуетесь?
#12 9 июля 2016 в 16:53

Вы сами то каким хостингом пользуетесь?

Огненный Лис
Вот этим Сервера расположены в России, Европе и в Украине
#13 9 июля 2016 в 17:29


Вы сами то каким хостингом пользуетесь?

Огненный Лис
Вот этим Сервера расположены в России, Европе и в Украине

Volgomarket

Volgomarket, сравнил "возможности" обоих хостингов (здесь dominant-telecom.ru/help/power-levels и здесь timeweb.com/ru/support/faq/hosting/technical/kakie-ogranicheniya-ustanovleny-na-serverakh-virtualnogo-khostinga/#answer), пришёл к выводу, что у хостинга dominant-telecom.ru слишком большие ограничения по способностям, большого "наплыва" посетителей он не выдержит. В общем, мне свой больше нравится) Но спасибо за вариант)
#14 9 июля 2016 в 17:33
Уважаемые, давайте не будем обсуждать хостинги и их возможности, уверен для этого есть другая тема!

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

Помимо прочего, интересно ваше мнение об актуальности такого метода (быть может есть более актуальные варианты, не включая вопрос смены хостинга), идеях по улучшению. В конце концов, если кому-то пригодится данный метод, было бы интересно обсудить возможность наладить работу Cron и мнения по поводу обновления.
#15 9 июля 2016 в 19:40

Надо еще постараться надо найти хостинг где ограничение будет по доменам.

letsgo
Например на Reg.Ru пакет Unlimited

Использовать одну и ту же базу — это использовать префиксы! Конечно возможно, но и резко нагружает саму базу данных, особенно когда ресурсы часто посещаемые.

Само решение интересное, но довольно узкого применения! Действительно, стоит поискать подходящий по цене и качеству хостинг!
Но на заметку взял! Спасибо!
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.