Instant на двух серверах

Разделяем систему на два сервера

#1 22 июля 2010 в 02:43
Доброго всем времени суток!

Столкнулся с одной проблемой: фотографии каталога и некоторых позиций, записываемых в папку images очень сильно разраслись и 2 Гб становиться уже маловато, с учетом того, что каталог помимо меня будут заполнять еще десять человек и позиций будет несколько сотен тысяч. Арендовать сервер пока для меня очень дорого, т.к. неизвестно пойдет ли тема и что из этого получиться, а вот арендовать хостинг на 27 Гб за 400 руб в месяц — вариант. Но тут есть одно "НО" — состоит тарифный план из двух серверов:
Сервер 1 — собственно сайт, на который ссылается домен, на котором стоит БД и выполняются скрипты. Объем диска 2 Гб.
Сервер 2 — файл-хостинг на котором нет возможности ставить БД, выполнять скрипты, и есть только FTP-доступ и технический адрес домена. Объем диска 25 Гб.

На С1 я установил движок (версия 1.6.2), а на С2 я перенес папку images и uploads. Настроить отображение фоток с С2 можно, да и заливку через FTP организовать тоже можно, но вот столкнулся с проблемой:

В контенте статей и HTML-полей каталога добавлены изображения (еще в те времена, когда вся CMS и контент были на одном ресурсе), а это более 10 000 записей каталога! Ссылки на файлы типа src="/images/… записаны в БД вместе с остальными частями контента. Менять вручную каждую запись — нереально, да и зачем, если в будущем допустим найдется вариант по размещению всего на одном ресурсе (а записей будет уже к тому моменту 100 000 — 300 000).

Вопрос к знающим людям: Можно ли через фильтр InstantCMS добиться замены в контенте при его формировании для вывода записей типа
  1. src="/images
на запись типа
  1. src="http://сервер2/images
, т.е. превратить относительную локальную ссылку во внешнюю?

Может кто-нибудь мне помочь в решении этой проблемы?
#2 22 июля 2010 в 03:30
Кстати интересная идея, так же столкнулся с тем, что 2ГБ не хватает — пользователи начали регаться и заводить фотоальбомы и файлы заливать.

А что и где нужно править, чтобы вынести все пользовательские альбомы и файлы на другой хостинг? Как реализовать запись на другой сервер?
#3 22 июля 2010 в 09:11
а разве нельзя купить нормальный хост, где больше места или же VPS, если пока нормальный сервак рановато
в штатах можно взять администрируемый VPS, а это не наш русский сервис, где всё работает через задницу и за каждый шаг берут бабло
#4 22 июля 2010 в 10:57

— состоит тарифный план из двух серверов:

Алексей
И сколько интересно такое стоит?
#5 22 июля 2010 в 11:32


— состоит тарифный план из двух серверов:

Алексей
И сколько интересно такое стоит?

Gray

Я же написал уже — 400 рублей в месяц.
#6 22 июля 2010 в 11:48


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

Anonimus

На VPS у меня не хватило денег (обсуждаемый сайт — не единственный мой проект и когда проплачиваешь их все — по карману бьет очень даже ощутимо). Нормальный хост самый максимальный я видел 4 Гб, но этот объем сожрется за полгода или даже меньше. Хороший хостинг есть и в России и сервис на уровне и в техподдержку звонить не приходится.
Подобная связка у меня была раньше 2 года назад, когда такие же сервера использовались, правда скрипт там другой был, но я так же настроил работу с изображениями между серверами используя FTP-доступ второго сервера (файл-хостинга).

Обсуждаем мы не хостинг и не тарифные планы, а конкретную задачу: превращение локальной ссылки во внешнюю с использованием фильтра и насколько это возможно.
#7 22 июля 2010 в 12:03


Кстати интересная идея, так же столкнулся с тем, что 2ГБ не хватает — пользователи начали регаться и заводить фотоальбомы и файлы заливать.

А что и где нужно править, чтобы вынести все пользовательские альбомы и файлы на другой хостинг? Как реализовать запись на другой сервер?

Алексей Шехин

У меня даже до фотоальбомов не дошло — все сожрал Универсальный каталог своими фотографиями и загруженные в контент фото. :))) А ведь фотоальбомы тоже планируются :)))

Править придется во многих местах, но если тебе нужно именно фотоальбомы перенести — это будет попроще.
Запись я настраивал на другой сервер через FTP, а отображение фото на страницах сайта будет через HTTP.
Как переделаю скрипты — закину тебе архивчик с фотогалереей.
#8 22 июля 2010 в 12:10
Вот нормальный хостинг — www.arvixe.com/linux_web_hosting, без всякого гемора с местом на диске, у меня там сидят 10 сайтов, общим объемом более 40 гигабайт, и все замечательно работает)))
#9 22 июля 2010 в 12:32
А кто-нибудь с фильтром помочь сможет или каждый будет хостинг рекомендовать?

Господа, хостинг уже есть и проплачен на год, денег на новый хостинг нет и варианты сейчас я рассматривать не буду только по одной этой причине. Я не прошу переделать InstantCMS под свой проект (это я способен своими руками сделать), а прошу помочь мне в решении одной проблемы: замены при помощи фильтра адреса выводимого изображения.
#10 22 июля 2010 в 13:20
Алексей,
Теоретически, сам не проверял:
в файл template.php шаблона в первом блоке <?php ?>
  1.  
  2. function replace_img ($img) {
  3. $res = ereg_replace("/images", "http://сервер2/images", $img);
  4. return $res;
  5. }
  6.  
И далее, где выводиться cmsBody(); сделать вместо этого вот так:
  1. <?php ob_start("replace_img"); cmsBody(); ob_end_flush();?>
Не уверен что правильно, но смысл такой.
#11 22 июля 2010 в 19:49

]
Алексей,
Теоретически, сам не проверял:
в файл template.php шаблона в первом блоке

  1.  
  2. function replace_img ($img) {
  3. $res = ereg_replace("/images", "http://сервер2/images", $img);
  4. return $res;
  5. }
  6.  
И далее, где выводиться cmsBody(); сделать вместо этого вот так:
Не уверен что правильно, но смысл такой.

fuze[drums

Супер! То что надо! Спасибо огромное!

Только я слегка модифицировал функцию, поскольку в данном случае она ищет и заменяет "/images", а этот кусок пути может встречаться и в "/components/..../images/icons/...." и в итоге путь будет нарушен вставкой, в связи с чем для того, чтобы менялись именно локальные ссылки (т.е. ссылки, где адрес изображения начинается строго с /images) сделал так:
  1. function replace_img ($img) {
  2. $res = ereg_replace('src="/images', 'src="http://сервер2/images', $img);
  3. return $res;
  4. }
А второй кусок кода прописал не только для cmsBody();, но и для позиций вывода шаблона:
  1. <?php ob_start("replace_img"); cmsModule("left"); ob_end_flush();?>
  1. <?php ob_start("replace_img"); cmsModule("top"); ob_end_flush();?>
и т.д.
Теперь работает и для модулей (например в случае, когда в позиции top выводился модуль последних статей с отображением анонса, а в анонсе была вставлена локальная картинка).

Еще раз ОГРОМНОЕ СПАСИБО! :))))
#13 30 июня 2012 в 12:50
возможно такой вариант снимет нагрузку на хост?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.