Плагин «Домен для статики»

Описание

Плагин предназначен для переноса статических файлов на отдельный домен (поддомен).
Обязательным условием является использование одного сервера (общей файловой системы для сайта и для статических файлов).

GitHub: github.com/wasja1982/livestreet_staticdomain

Настройка

Настройка плагина осуществляется редактированием файла "/plugins/staticdomain/config/config.php".

Поддерживаемые директивы:
1) $config['static_web'] — Домен для статических файлов.

2) $config['static_server'] — Путь к каталогу для статических файлов.

3) $config['use_static_cache'] — Привязать JS и CSS к статическому домену. По умолчанию отключено (false).

Установка

1. Скопировать плагин в каталог /plugins/
2. Создать требуемую структуру каталогов.
3. Настроить работу домена для статических файлов.
4. Через панель управления плагинами (/admin/plugins/) запустить активацию плагина.

Пример настройки (отдельный поддомен для статики)

1) Настройка двух виртуальных серверов в Apache
Задаются пути для корневых каталогов основного домена и поддомена для статики:
# Основной домен
<VirtualHost *:8080>
	ServerName site.ru
	ServerAdmin admin@site.ru
	ServerAlias www.site.ru
	DocumentRoot /var/sites/site.ru/htdocs
</VirtualHost>

## Поддомен для статики (настраивается при отсутствии nginx)
#<VirtualHost *:8080>
#	ServerName img.site.ru
#	ServerAdmin admin@site.ru
#	ServerAlias img.site.ru
#	DocumentRoot /var/sites/img.site.ru/htdocs
#</VirtualHost>


2) Настройка nginx
Настраивается передача всех запросов на основной сервер и непосредственный доступ к файлам у поддомена для статики:
# Основной домен
server {
        listen   80;
        server_name  site.ru www.site.ru;
        location / {
                proxy_pass http://127.0.0.1:8080;
        }
        location ~ /\.ht {
                deny  all;
        }
}

# Поддомен для статики
server {
        listen   80;
        server_name  img.site.ru;

        location / {
                root /var/sites/img.site.ru/htdocs;
        }
        location ~ /\.ht {
                deny  all;
        }
}


3) Перенос статических файлов шаблона (не обязательно)
Необходимо скопировать все статические файлы (изображения, CSS, JS) из каталога "/var/sites/site.ru/htdocs/templates" в каталог "/var/sites/img.site.ru/htdocs/templates" с обязательным сохранением структуры каталогов.
Задать в файле «config.local.php» LiveStreet значение переменной
$config['path']['static']['root'] = 'http://img.site.ru';


4) Настройка плагина
В файле "/plugins/staticdomain/config/config.php" задать:
— домен для статики;
$config['static_web']='___path.static.root___';

или (если не настраивался пункт 3)
$config['static_web']='http://img.site.ru';

— путь к каталогу для статических файлов
$config['static_server']='/var/sites/img.site.ru/htdocs';

— разрешить привязку JS и CSS к статическому домену
$config['use_static_cache']=true;


5) Активировать плагин

Если не работает, то проверьте, чтобы были выставлены права доступа к каталогу "/var/sites/img.site.ru/htdocs" и для всех вложенных (0x755).

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

avatar
КРУТО!
avatar
Лучше уж для хранения картинок на отдельном домене.
avatar
во-во. хотя такие меры нужны если у вас реально большой онлайн. Так что для большей массы это не к чему.
avatar
Не переносите файлы шаблона и отключаете привязку JS и CSS к статическому домену ($config['use_static_cache']=false) и остаются только картинки.
avatar
Не круто. Для чего все это нужно? ServerAlias img.site.ru можно убрать.
avatar
Для чего все это нужно?
Как и сказано — для выноса статических файлов на отдельный поддомен. В примере это позволяет четко разграничить доступ к файлам с помощью nginx. Конечно, это можно было и помощью дополнительного правила nginx сделать, но тут как кому нравиться. Дальше к этому поддомену можно прицепить CDN, например. Не сталкивались никогда с серверами, где нужно оплачивать внешний трафик и хотелось бы минимизировать затраты?
ServerAlias img.site.ru можно убрать.
У меня как минимум в одном случае без этой строки поддомен не заводился.
avatar
Статику выносят на другой сервер для разгрузки, здесь же все остается все на одном сервере. Отсюда и вопрос, в чем смысл? CDN сейчас умные могут сами проксировать и кэшировать нужные ресурсы, достаточно записей в dns.
avatar
Правильно. Но всегда есть исключения. Как пример, к основному домену может быть привязан сервис, не связанный с HTTP — SVN, Git, FTP и др. В данном случае привязка к SVN основного домена не возможна. А отдельный поддомен с изображениями, почему не привязать, если он создает максимум загрузки траффика?
avatar
Статику выносят на другой сервер для разгрузки, здесь же все остается все на одном сервере.
А вам кто-то мешает сделать синхронизацию определённой директории на другие сервера?
avatar
Конечно, это можно было и помощью дополнительного правила nginx сделать, но тут как кому нравиться.
Неа, тут не в «нравится» дело. nginx будет делать эту работу на два порядка эффективнее с точки зрения потребляемых системных ресурсов. Но + за инициативу.
avatar
В данном случае nginx не делает ничего полезного, но жрет ресурсы, как ненужное звено.
avatar
У вас что nginx не стоит? если стоит, то правило простое: всё что можно делать nginx-ом нужно делать nginx-ом, уж простите за каламбур.
avatar
В данном случае nginx используется как front-end к apache. И это его основная задача.
avatar
Кстати говоря, как специалист по настройке серверов, как думаете, какой из методов производительнее:
1) настроен домен и поддомен;
2) настроен домен и правило, которое будет пропускать изображения, CSS, JS мимо Apache.
avatar
Разделение на домен и поддомен вообще не имеет прямого отношения к производительности. Это, организационная фишка. В рамках одного сервера, сама по себе будет даже чуть медленние чем без оной. Но это открывает некоторые интересные возможности. Права в рамках одного сервера сомнительно нужные :)

А раздача статики НЕ апачем, а nginx — это чистый буст производительности.
avatar
На мобильной версии работает?
  • lol
  • 0
avatar
Данный плагин вообще никоим образом не воздействует с шаблонами.
avatar
ок щяс проверю тогда)
avatar
а у меня серьезный вопрос, в движке livestreet в конфиги прописывается http:// вашь сайт. так вот я могу сделать так чтоб ваш плагин передавал
3) $config['use_static_cache'] — Привязать JS и CSS к статическому домену. По умолчанию отключено (false). в https:// ибо если это выйдет до домен с https:// будет отображаться нормально и http:// тоже.
avatar
Даже не представляю получиться ли, если честно. Вообще по идее должно работать.
avatar
А вы можете отдельный плагин такой сделать, я думаю много желающих кто заточит исправить такой недочет в движке.
avatar
Я не уверен, что плагин хорошее решение в данном случае. Хотя, надо будет посмотреть…
avatar
я думаю что еще долгое время не чего лучше не будет
avatar
Вот тестовый вариант, пробуйте, может даже заработает :)
avatar
Не не работает, может прописать что то забыл?
avatar
Круто я перепроверил, забыл просто у себя отключить https, экспериментальная модель работает. :))
avatar
Еще хочу сказать что плагин вызывает странные ошибки в браузере Mozilla Firefox, все остальные браузеры ошибок не видят.
avatar
Скиньте адрес в личку, хочу глянуть…
avatar
я бы скинул но у меня на денвере сайт)
avatar
для уточнение чтоб вы меня поняли livestreet.ru https:
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.