CDN на поддомен + upload css, js & images

Да бы всё таки оптимизировать свой сайт я пытаюсь прибегнуть к одному довольно не простому решению — так как в поиске по сайту LS пути или хоть какие-то сведения увы не нашёл ;(
Цель
1. Создать поддомен, типа cdn.site.ru
2. Поставить на него CloudFlare итп
Уже сделано — проблем никаких

А вот взаимосвязь с LS и его файлами так и не получается настроить

Что нужно сделать, чтобы js, css & images файлы загружались с поддомена?
CSS и JS — идут у меня как один единый файл, он для каждого вроде свой и компилируется в папке /templates/cache/mystyle
1.Чтобы генерировались он в том же месте но не на site.ru/templates/cache/mystyle а уже на поддомене нашем. Пускай даже в той-же папке.
2. Изображения и их загрузка — должна будет осуществляться уже не на site.ru/uploads/images
А на поддомен — cdn.site.ru/uploads/images

Конечно у меня уже в базе данных изображения прописаны как site.ru/uploads/images — пускай, главное чтобы новые изображения теперь попадали на поддомен — cdn.site.ru/uploads/images

30 комментариев

avatar
Прописать везде не пути типа
поддомен.сайт/путь

?
avatar
Вот блин, если бы было это всё так легко — я бы не писал сюда, честное слово!
avatar
А в чем проблемы именно в этом?
avatar
Да хотя бы скажите куда прописать нужно то что вы говорите? Какая папка, какой файл, какая строка?
2. Изображения и их загрузка — должна будет осуществляться уже не на site.ru/uploads/images
А на поддомен — cdn.site.ru/uploads/images
avatar
avatar
У меня после изменения 76 строки вот какой адрес получается:
site.ru/cdn.site.ru/images/00/00/28/2013/11/01/d83a2d.jpg
Что не так?
avatar
Вы путаете два абсолютно не связанных понятия — «поддомен» и «папка».
Как происходит загрузка файлов с использованием PHP:
1) пользователь отправляет файл на сервер;
2) сервер (apache) в общем случае загружает файл в память и передает информацию об этом скрипту PHP;
3) скрипт PHP сохраняет файл на диске, используя текущую структуру каталога.

Если требуется, чтобы загрузка велась на другой домен — необходимо чтобы данные пользователя либо сразу отправлялись на этот домен, либо после пункта 3 скрипт сам загружал файлы куда требуется.
Правка путей может помочь только в случае, если оба домены расположены в пределах одного сервера, т.е. скрипт будет просто копировать данные в каталог, относящийся к другому домену (или, если это нормальный сервер на linux, то можно настроить «жесткую ссылку» и все будет загружаться само).
avatar
Я не понял, что мне нужно изменить чтобы этот php код загружал на поддомен мой, можно подробнее?
3) скрипт PHP сохраняет файл на диске, используя текущую структуру каталога.
Что за скрипт, где расположен, где можно в нём указать директорию для загрузки???
avatar
Я не понял, что мне нужно изменить чтобы этот php код загружал на поддомен мой, можно подробнее?
Если поддомен реализован на том же сервере, то достаточно изменить выше упомянутые строки конфига. Если домен расположен на другом сервере/хостинге — то с помощью настройки это сделать нельзя.
Что за скрипт, где расположен, где можно в нём указать директорию для загрузки???
В данном случае скрипт — это часть Livestreet.
avatar
Пример настройки для одного сервера, на котором крутиться и домен и поддомен (на реальных объектах не проверял).

Настройка apache (упрощенно):
<VirtualHost site.ru>
	DocumentRoot /var/www/site.ru/htdocs
	ServerName site.ru
</VirtualHost>

<VirtualHost cdn.site.ru>
	DocumentRoot /var/www/cdn.site.ru/htdocs
	ServerName cdn.site.ru
</VirtualHost>


Настройка LiveStreet:

$config['path']['uploads']['images'] ='/var/www/cdn.site.ru/htdocs/uploads/images';
$config['path']['smarty']['cache'] = '/var/www/cdn.site.ru/htdocs/uploads/templates/cache';


Данных действий достаточно для того, чтобы файлы загружались куда надо и были доступны из поддомена по адресу cdn.site.ru/images/00/00/28/2013/11/01/d83a2d.jpg.
Но еще требуется модификация исходного кода LiveStreet, чтобы сразу подставлял правильные ссылки на картинки, JS и CSS (что именно менять с ходу не скажу — нужно рыть код).
avatar
Клянусь сделал всё как написано в итоге адрес такой же становиться…
livestreet.ru/blog/16173.html#comment260850
Точнее уже вот что получается:
site.ru/var/www/user/data/www/cdn.site.ru/storage/00/00/01/2013/11/01/4f2b10.jpg
На поддомен так и не попадает
avatar
Да, посмотрел исходники подробнее — параметр конфигурации $config['path']['uploads']['images'] используется всегда привязан к каталогу 'path.root.server'.
Возможные решения:
1) изменить все файлы, где используется 'path.uploads.images';
2) настроить папку поддомена как вложенную в папку домена;
3) если используется linux, то настроить символьную или жесткую ссылку между каталогами uploads домена и поддомена.
avatar
1) изменить все файлы, где используется 'path.uploads.images';
Примерное расположение этих файлов можно?
3) если используется linux, то настроить символьную или жесткую ссылку между каталогами uploads домена и поддомена.
VPS, Debian — подобное встречал уже но я не помню как это делается ;(
avatar
Примерное расположение этих файлов можно?
Как минимум копать:
\classes\actions\ActionSettings.class.php
\classes\modules\topic\Topic.class.php
\engine\modules\image\Image.class.php
VPS, Debian — подобное встречал уже но я не помню как это делается ;(
1) Если существует каталог "/var/www/site.ru/htdocs/uploads", то переименовываем его.
2) Создаем каталог "/var/www/cdn.site.ru/uploads":
mkdir -p /var/www/cdn.site.ru/uploads

3) Создаем ссылку:
ln -s /var/www/cdn.site.ru/htdocs/uploads /var/www/site.ru/htdocs/uploads

4) Переносим все файлы и каталоги из старого каталога "/var/www/site.ru/htdocs/uploads" в новый, удаляем старый.
avatar
Как минимум копать:
\classes\actions\ActionSettings.class.php
\classes\modules\topic\Topic.class.php
\engine\modules\image\Image.class.php
Ни черта не получается ;(
НУ КТО-НИБУДЬ!!! Скажите как сделать чтоб фото загружались на поддомен!!!
avatar
vk.cc/1WTLSD — так сойдёт? Просто вписать 1 свой адрес сайта а 2 свой cdn-поддомен?
avatar
А я ещё надеюсь! Что кто-нибудь — поможет как сделать чтоб фото загружались на поддомен...
avatar
Забахал плагин под это дело.
Качать отсюда, архив распаковать, папку переименовать в «staticdomain» и залить на сервер.
Благодарность принимаю в вебмани или яндекс.деньгах. :)
avatar
Да, как бы показывает — адрес и пути css и js и даже картинки теперь грузятся на поддомене — только на самом деле ихнет — хотя адреса прописаны. CHMOD 777 и так стоит. Странное дело ;(
avatar
вот такой адрес картинкам даётся почему-то
cdn.site.ru/uploads/images/00/00/01/2013/11/07/6b7133.png
avatar
Ну ладно, не суть — даже пускай такой адрес — Картинки то по этому адресу всё равно нету.
avatar
А по адресу site.ru/uploads/images/00/00/01/2013/11/07/6b7133.png есть?
avatar
Нет, ни там нету не на поддомене
Видно — загрузка идёт, адрес появляется в топике — а вот если перейти по нему — пустота.
avatar
Ищите точное расположение файла «6b7133.png».
Могу предположить, что не происходит перенос файлов. Это может быть из-за того, что плагин не может создать каталог, не может переименовать файл или просто файл не находит. С большой долей вероятности это связано с правами каталог поддомена.
avatar
CHMOD 777 и так стоит.
avatar
Какие-нибудь другие плагины, обрабатывающие изображения установлены?
avatar
Правильный адрес, так и должно быть.
avatar
нет
avatar
А какой должен быть правильный адрес?
avatar
Так вроде из ответов можно собрать пазл.
1) Если поддомен на том же хосте, что и домен, то можно настроить hardlink/softlink с папки поддомена на основной. И в конфигах править ничего не нужно, т.е. загруженное физически будет храниться на поддомене.
2) Если поддомен и домен на разных хостах, то нужно править загрузчик (SaveFile модуля Image), плюс в конфиге менять пути расположения картинок.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.