Документация KVS

Настройки

Содержание

Введение

Раздел Настройки предназначен для конфигурирования всех системных аспектов KVS, за исключением отображения контента на сайте. Настройка сайта и управление им осуществляется в разделе UI сайта, по которому существует отдельное руководство.

Важно! Изменение настроек может привести к частичной потере функциональности проекта (как со стороны админки, так и со стороны сайта).

Персональные настройки

Персональные настройки предназначены для настройки удобного формата работы администратора с панелью администрирования KVS. Для каждого администратора могут быть заданы свои настройки. Большинство персональных настроек интуитивно понятно, поэтому остановимся только лишь на некоторых из них:

  • Выключить защиту по IP - выключает защиту сессии по IP администратора. Вам стоит включить этот параметр только в том случае, если ваш IP постоянно меняется с течением времени работы с панелью администрирования. Если такое происходит регулярно, то вас будет постоянно выкидывать на страницу логина, т.к. с измененным IP ваша сессия становится устаревшей.
  • Режим отображения страницы редактирования видео - позволяет выбрать один из предустановленных режимов отображения страницы редактирования видео. Рекомендуется использовать режим Для дескописателя при работе с текстовками или категоризацией видео, т.к. в нем скрыты все ненужные поля.
  • Отображение скриншотов - позволяет настроить, в каком виде должны отображаться скриншоты на странице редактирования видео. По умолчанию они не отображаются, но вы можете включить их и выбрать формат скриншотов, отображение которого будет для вас наиболее удобным.
  • Столбцы списка видео - позволяет настроить вид списка видео в панели администрирования. Если вы включите отображения тумбы, вам также будет необходимо выбрать формат скриншотов и указать размер, до которого будет ужиматься тумба при отображении.
  • Режим отображения страницы редактирования альбома - позволяет выбрать один из предустановленных режимов отображения страницы редактирования фотоальбома. Рекомендуется использовать режим Для дескописателя при работе с текстовками или категоризацией фотоальбомов, т.к. в нем скрыты все ненужные поля.
  • Отображение изображений - позволяет настроить, в каком виде должны отображаться фотографии на странице редактирования фотоальбома. По умолчанию они не отображаются, но вы можете включить их и выбрать формат альбомов, отображение которого будет для вас наиболее удобным.
  • Столбцы списка альбомов - позволяет настроить вид списка фотоальбомов в панели администрирования. Если вы включите отображения тумбы, вам также будет необходимо выбрать формат альбомов и указать размер, до которого будет ужиматься тумба при отображении.
  • Столбцы списка пользователей - позволяет настроить вид списка пользователей в панели администрирования.

Настройки контента

Настройки изображений

В данном разделе настроек указываются размеры изображений, которых должен придерживаться движок KVS (кроме размеров скриншотов видео и фотографий). Все размеры указываются в формате NxM, где N - ширина изображения, M - соответственно, высота.

Важно! При изменении каких-либо размеров в данном разделе автоматическая конвертация имеющихся на сервере изображений происходить не будет. Так, например, при изменении размера аватаров пользователя, все аватары, загруженные после изменения, будут иметь новый размер, в то время как все существующие на данный момент аватары останутся в старых размерах.

Детальное описание опций (некоторые опции доступны только для специфических пакетов функциональности):

  • Размер аватара пользователя - строгий размер аватара пользователя. При загрузке на сайте или в панели администрирования происходит уменьшение размеров загружаемого файла до нужных размеров. При попытке загрузить изображение с меньшими размерами будет выводиться ошибка.
  • Размер аватара категории - строгий размер аватара категории. При загрузке в панели администрирования происходит уменьшение размеров загружаемого файла до нужных размеров. Этот же размер используется и для аватаров групп категорий. При попытке загрузить изображение с меньшими размерами будет выводиться ошибка.
  • Размер скриншота модели - строгие размеры для скриншотов модели. Поскольку модели поддерживают скриншоты 2 размеров, вы можете выбрать опцию обработки второго скриншота. Если вы выберете опцию Создавать автоматически на базе размера #1, то при загрузке исходного изображения в поле скриншота #1 второй скриншот будет создан на базе этого же файла, что позволит вам получить 2 одинаковых изображения разных размеров. Если вы выберете опцию Загружать вручную, то второй скриншот будет создаваться только тогда, когда вы загрузите его вручную, что позволит иметь 2 разных изображения. При попытке загрузить изображение с меньшими размерами будет выводиться ошибка.
  • Размер скриншота канала (или обложки DVD) - строгие размеры для скриншотов канала (обложек DVD). Поскольку каналы (DVD) поддерживают скриншоты 2 размеров, вы можете выбрать опцию обработки второго скриншота. Если вы выберете опцию Создавать автоматически на базе размера #1, то при загрузке исходного изображения в поле скриншота #1 второй скриншот будет создан на базе этого же файла, что позволит вам получить 2 одинаковых изображения разных размеров. Если вы выберете опцию Загружать вручную, то второй скриншот будет создаваться только тогда, когда вы загрузите его вручную, что позволит иметь 2 разных изображения. При попытке загрузить изображение с меньшими размерами будет выводиться ошибка.
  • Размер скриншота группы каналов (или обложки группы DVD) - строгие размеры для скриншотов группы каналов (обложек групп DVD). Поскольку группы каналов (DVD) поддерживают скриншоты 2 размеров, вы можете выбрать опцию обработки второго скриншота. Если вы выберете опцию Создавать автоматически на базе размера #1, то при загрузке исходного изображения в поле скриншота #1 второй скриншот будет создан на базе этого же файла, что позволит вам получить 2 одинаковых изображения разных размеров. Если вы выберете опцию Загружать вручную, то второй скриншот будет создаваться только тогда, когда вы загрузите его вручную, что позволит иметь 2 разных изображения. При попытке загрузить изображение с меньшими размерами будет выводиться ошибка.

Настройки движка конвертации

Детальное описание опций:

  • Включить режим паузы для фоновых задач - при включении этой опции движок конвертации начинает переход в режим паузы. Время перехода зависит от количества и типа фоновых задач, которые уже были частично запущены. После завершения всех запущенных задач движок перейдет в режим паузы и выдаст предупреждение на странице старта, а также подсказку в шапке панели администрирования.
  • Приоритет фоновых операций - позволяет выбрать одно из нескольких возможных значений приоритета ресурсоемких операций, которые выполняются на главном сервере (в реальном времени, высокий, средний, низкий, очень низкий). Аналогичное значение можно выбрать и для каждого сервера конвертации в отдельности.
  • Минимум свободного места для главного сервера - указывает лимит свободного места на главном сервере, после наступления которого произойдет приостановка любых процессов импорта контента, чтобы не довести ситуацию до полной нехватки места, которое может требоваться для нормальной работы сайта.
  • Минимум свободного места для группы серверов хранения - указывает лимит свободного места на серверах хранения, после наступления которого на сервере какой-либо группы серверов вы не сможете больше добавлять контент на эту группу.

Настройки видео

Детальное описание опций:

  • Сохранять исходники - включает сохранение исходников видео на главном сервере. Исходники могут использоваться в будущем при добавлении новых форматов видео и при ручном граббинге скриншотов. Наличие исходников не является обязательным условием для операции создания новых форматов видео, поскольку при их отсутствии в качестве исходников будут выступать файлы уже существующих форматов видео. Однако в этом случае качество новых форматов будет сильно зависеть от качества уже существующих форматов, а не от качества исходников.
  • Определять длительность видео по - позволяет выбрать на основе каких видеофайлов должна определяться общая длительность стандартных и премиум видео: исходники, либо файлы определенных форматов.
  • Количество скриншотов - начальное количество обзорных скриншотов, которое будет создаваться автоматически при первичной обработке всех видео. Вы можете задать как фиксированное количество (в этом случае у каждого видео будет создаваться одинаковое количество обзорных скриншотов), так и указать интервал в секундах, через который будут сниматься скриншоты (тогда количество обзорных скриншотов для конкретного видео будет зависеть от его длительности).
  • Кроп скриншотов - задает настройки кропа при создании скриншотов с видео. Задается для каждой стороны изображения либо в пикселях, либо в % от размера изображения. Кроп выполняется перед уменьшением скриншотов до нужных размеров.
  • Смещение первого скриншота - смещение в секундах относительно начала видео перед снятием первого скриншота. Имеет смысл, если в начале видеофайлов отображаются какие-либо титры и другая статика.

Важно! Операция кропа используется только для скриншотов, которые создаются движком автоматически. При загрузке скриншотов вручную вы должны выполнить кроп самостоятельно.

Настройки защиты скрипта отдачи видео

Настройки защиты видеофайлов предназначены для защиты видеофайлов от хотлинкования и несанкционированного доступа совместно с серверной технологией защиты (для Nginx это X-Accel-Redirect).

Для настройки полноценной защиты директория, в которой находятся видеофайлы должна быть объявлена внутренней в конфиге Nginx (директива internal). Если вы используете несколько серверов для хранения видеофайлов, то аналогичным образом на всех серверах, где хранится видео, директории хранения должны быть внутренними. Внутренняя директория Nginx запрещает прямой доступ к файлам, хранящимся в этой директории, соответственно файлы могут быть доступны только через скрипт раздачи get_file.php, в который встроены все проверки. Объявление внутренней директории в конфиге Nginx делается таким образом:

location ^~ /contents/videos/ {
    mp4; # включение MP4 стриминга
    root /usr/home/clients/ftp0/domains/kernel-tube.com/html; # указание полного пути к директории /contents/videos/
    internal; # запрет доступа к директории по прямым ссылкам
}

KVS предоставляет следующие опции для защиты видеофайлов:

  • Включить защиту скрипта отдачи видео - включает защиту скрипта раздачи get_file.php от хотлинкования и парсинга контента. Это приведет к тому, что ссылки на скрипт get_file.php, которые используются на сайте, станут временными и не смогут быть использованы на других сайтах для хотлинкования. В случае срабатывания защиты вместо видеофайла будет возвращаться файл по URL-у, который указывается ниже.
  • Настройка ограничений по IP - работает при включенной защите скрипта get_file.php от хотлинкования. Позволяет указать, какое количество видео можно смотреть с одного IP адреса в течение указанного промежутка времени. Здесь учитываются любые запросы на скрипт раздачи, в том числе и перемотка. В случае срабатывания ограничения вместо видеофайла будет возвращаться файл по URL-у, который указывается ниже.
  • Отображать файл по указанному URL-у вместо видео - файл по этому URL-у будет возвращаться вместо видеофайла при срабатывании защиты в скрипте get_file.php. Если это поле оставлено пустым, то скрипт раздачи вернет ошибку (403 Forbidden). В этом поле вы должны указать ссылку на видеофайл для его корректного отображения в плеере. Если вы хотите показывать какой-то статический текст, то вы можете воспользоваться плагином Видео по картинке, который создаст видеофайл определенной длительности по загруженной картинке.
  • IP проекта - показывает IP адрес, который используется вашим проектом для тестовых запросов видео. Данный IP адрес никогда не блокируется защитой.
  • Белый список IP - позволяет указать маски IP адресов, которые не должны блокироваться защитой независимо от количества запросов с них.
  • Заблокированные IP - показывает список IP адресов, которые заблокированы на текущий момент времени. Этот список может меняться с периодичностью в 5 минут, т.к. каждые 5 минут происходит пересчет заблокированных адресов.

Настройки защиты нужно проверить для каждого сервера хранения в отдельности. Для каждого сервера на списке серверов хранения в панели администрирования есть опции проверки отдачи контента с сервера, которая помимо всего прочего проверяет и корректность защиты контента для данного сервера.

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

Для возможности проигрывания видео на мобильных устройствах необходимо включить возможность скачивания в настройках формата видео. Это ослабит защиту для данного формата.

Настройки ротатора

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

Важно! Использование ротатора повышает нагрузку на ваш сервер (HDD и CPU).

Детальное описание опций:

  • Включить ротатор видео - включает на сайте ротацию видео.
  • Включить ротатор скриншотов - включает на сайте ротацию скриншотов видео. Для дополнительных настроек ротатора скриншотов используются опции ниже.
  • Мин. показов видео - первое из двух значений критерия завершенности ротации. Видео должно набрать указанное кол-во показов, чтобы ротатор мог завершить ротацию скриншотов по нему.
  • Мин. кликов по видео - второе из двух значений критерия завершенности ротации. Видео должно набрать указанное кол-во кликов, чтобы ротатор мог завершить ротацию скриншотов по нему.
  • Удаление скриншотов - данная опция позволяет настроить удаление части худших скриншотов после завершения ротации скриншотов у видео. Если вы хотите удалять часть скриншотов, то вам необходимо указать число скриншотов, которое должно остаться после завершения ротации скриншотов.
  • Степень завершенности - показывает распределение видео по степеням завершенности ротации скриншотов. Используются 5 степеней интервалов (0%-20%, 21%-40%, 41%-60%, 61%-80%, 81%-100%) и одна финальная степень (100%), которая при клике ведет на список видео, у которых ротация скриншотов завершена. Данная гистограмма позволяет оценить насколько адекватно выбран критерий завершенности ротации скриншотов. При изменении любого из двух значений критерия завершенности график может измениться.

Важно! Процесс включения ротатора постепенный и зависит от настройки кэширования сайта. Полностью ротатор включится только тогда, когда обновится весь кэш. Для ускорения процесса можно вручную сбросить кэш сайта (кэш Smarty и MemCache) - это делается в разделе UI сайта (Website UI). Не стоит забывать, что сброс кэша приведет к скачку нагрузки на вашем ресурсе.

После включения ротатора вы можете заметить, что в ссылки на страницы просмотра добавляется параметр ?pqr, который содержит данные, необходимые для обработки клика ротатором. Если вы хотите очистить ссылки от этого параметра, можно настроить сайт передавать параметры клика через JavaScript. Описание необходимых действий доступно в техническом FAQ.

Настройки альбомов

Эта группа настроек предназначена для глобальных настроек альбомов и доступна только в Ultimate пакете. Детальное описание опций:

  • Кроп изображений - задает настройки кропа при создании форматов альбомов с исходных изображений. Задается для каждой стороны изображения либо в пикселях, либо в % от размера изображения. Кроп выполняется перед уменьшением изображений до нужных размеров.
  • Создавать ZIP архивы с исходниками - позволяет включить создание ZIP архивов с исходными изображениями фотоальбомов. При включении произойдет создание фоновой задачи, которая создаст архивы для всех существующих фотоальбомов.
  • Доступ к исходным изображениям - позволяет указать какие типы пользователей имеют физический доступ к исходникам изображений альбомов через скрипт раздачи. По умолчанию пользователи сайта не имеют доступа к исходникам. Если вы хотите разрешить доступ к исходным изображениям для любых посетителей сайта, то вам необходимо также убедиться, что исходные изображения доступны по прямым ссылкам на всех серверах хранения. Для этого можно воспользоваться опцией тестирования отдачи контента на серверах хранения, которое учитывает данную опцию и покажет ошибку, в случае если прямые ссылки не работают. За работоспособность прямых ссылок отвечает правило в конфиге Nginx.

Настройки для добавления / редактирования видео в панели администрирования

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

Детальное описание опций:

  • Исходный рейтинг видео - рейтинг видео при создании.
  • Пользователь по умолчанию для добавления видео - устанавливает от какого пользователя по умолчанию будут добавляться видео в панели администрирования. Во время добавления видео вы сможете выбрать любого другого пользователя для данного видео. Если вам нужно загрузить видео от нескольких пользователей, воспользуйтесь импортом, т.к. импорт видео позволяет указать список пользователей.
  • Статус по умолчанию для добавления видео - устанавливает статус видео по умолчанию. Во время добавления видео вы сможете выбрать другой статус при необходимости для добавляемого видео.
  • Группа серверов по умолчанию - позволяет настроить, как будет выбираться группа серверов для хранения видео: автоматически с наибольшим свободным пространством, случайным образом или конкретная группа серверов.
  • Время появления на сайте - настраивает механизм подстановки временной части даты появления видео на сайте. Во время добавления видео вы сможете указать любое конкретное время появления для данного видео.
  • Перегенерировать директории автоматически - запрещает ручное редактирование директории видео и форсирует перегенерацию директории каждый раз, когда изменяется название видео. Если эта опция выключена, то директория видео не будет изменяться, даже если изменяется его название. Мы не рекомендуем включать эту опцию, если в ссылках на страницы видео у вас не используются числовые идентификаторы (по умолчанию они всегда используются), потому что при изменении директории старые ссылки на страницы видео перестанут работать. Если же ссылки содержат числовые идентификаторы, то изменение директории не приведет к потере работоспособности ссылок.

Настройки для добавления / редактирования альбомов в панели администрирования

Данная группа настроек позволяет указать значения по умолчанию для некоторых данных при добавлении или редактировании фотоальбомов через панель администрирования и доступна только в Ultimate пакете.

Детальное описание опций:

  • Исходный рейтинг альбомов - рейтинг фотоальбомов при создании.
  • Пользователь по умолчанию для добавления альбомов - устанавливает от какого пользователя по умолчанию будут добавляться фотоальбомы в панели администрирования. Во время добавления фотоальбомов вы сможете выбрать любого другого пользователя для данного фотоальбома. Если вам нужно загрузить фотоальбомы от нескольких пользователей, воспользуйтесь импортом, т.к. импорт фотоальбомов позволяет указать список пользователей.
  • Статус по умолчанию для добавления альбомов - устанавливает статус фотоальбомов по умолчанию. Во время добавления фотоальбомов вы сможете выбрать другой статус при необходимости для добавляемого фотоальбома.
  • Группа серверов по умолчанию - позволяет настроить, как будет выбираться группа серверов для хранения фотоальбомов: автоматически с наибольшим свободным пространством, случайным образом или конкретная группа серверов.
  • Время появления на сайте - настраивает механизм подстановки временной части даты появления фотоальбомов на сайте. Во время добавления фотоальбома вы сможете указать любое конкретное время появления для данного фотоальбома.
  • Перегенерировать директории автоматически - запрещает ручное редактирование директории фотоальбомов и форсирует перегенерацию директории каждый раз, когда изменяется название фотоальбома. Если эта опция выключена, то директория фотоальбома не будет изменяться, даже если изменяется его название. Мы не рекомендуем включать эту опцию, если в ссылках на страницы фотоальбомов у вас не используются числовые идентификаторы (по умолчанию они всегда используются), потому что при изменении директории старые ссылки на страницы фотоальбомов перестанут работать. Если же ссылки содержат числовые идентификаторы, то изменение директории не приведет к потере работоспособности ссылок.

Настройки API

KVS предоставляет небольшой API, который позволяет внешним скриптам создавать пользователей сайта и давать им / забирать у них премиум доступ. Вы можете использовать API для интеграции KVS с другими своими ресурсами при необходимости. Для информации о принимаемых параметрах смотрите скрипт /admin/api/kvs_api.php.

Детальное описание опций:

  • Включить API - включает API.
  • Пароль API - задает непустой секретный ключ, который необходим для использования API извне.
  • URL доступа к API - URL по которому работает API. Его значение отличается у разных доменов.

Настройки сайта

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

Детальное описание опций (некоторые опции доступны только для специфических пакетов функциональности):

  • Выключить сайт - позволяет полностью выключить сайт для сторонних пользователей (администраторы KVS при этом будут видеть сайт без ограничений). Вместо сайта пользователи будут перенаправлены на статическую страницу /website_unavailable.html, которую вы можете редактировать по своему усмотрению.
  • Динамические HTTP параметры - таблица позволяет указать до 5 динамических HTTP параметра и их значения по умолчанию. Эти параметры будут подхватываться движком сайта и заменяться на всех страницах сайта, в ссылках на контент провайдеры и страницы оплаты биллингов даже при использовании кэширования. Динамические HTTP параметры предназначены для тех случаев, когда вам необходимо принять сторонний HTTP параметр (который не поддерживается движком) и отобразить его значение на сайте или подставить в ссылки на контент провайдеров / биллинги. В качестве примера можно рассмотреть необходимость принимать траффик от вебмастеров и подставлять их идентификатор в ссылки на рекламу / биллинги. Данная задача не может быть реализована при включенном кэшировании без использования динамических HTTP параметров. Для того, чтобы вывести значение параметра с именем, например, param1, вам необходимо использовать токен %param1% в нужном месте шаблона страницы или ссылки. Тогда для пользователя, который заходит по ссылке, приведенной ниже, токен %param1% заменится на значение 123456. http://your_domain.com/page/?param1=123456 Важно! Использование динамических параметров немного снижает производительность сайта, поэтому не стоит указывать параметры, которые не используются.
  • Паттерн для страницы XXX на сайте - указывает паттерн, который используется для ссылок на страницы просмотра для объектов разных типов (видео, фотоальбом, модель, контент провайдер и др.). Этот паттерн используется в панели администрирования для быстрого перехода на страницу просмотра, а также движком сайта для создания ссылок на страницы просмотра. Паттерн должен содержать токен %DIR%, который будет заменен на значение директории объекта, и / или токен %ID%, который будет заменен на значение идентификатор объекта. Для паттерна фотографий еще существует токен %IMG%, который заменяется на идентификатор фотографии. Важно! При изменении этих паттернов вам необходимо добавить новые правила в корневой htaccess файл, поскольку: (а) ссылки нового вида начнут работать только при появлении нового правила и (б) старое правило должно остаться, т.к. могут содержаться внешние ссылки старого вида. Паттерны второстепенных объектов не являются обязательными, поскольку не всегда существует необходимость в страницах просмотра для них. Если вы указываете какой-либо паттерн, то в шаблоне блока списка для данного типа объектов вы можете использовать переменную {{$item.view_page_url}}, которая будет содержать ссылку с замененными на реальные значения токенами.
  • Синхронизировать статус пользователей - включает синхронизацию статуса пользователя с базой данных и указывает интервал этой синхронизации. При использовании премиум зоны у пользователя может закончиться доступ во время его пребывания на сайте, либо закончиться доступ к некоторому контенту, купленному за токены. Поскольку данная ситуация происходит редко, то нет смысла опрашивать базу данных при каждом запросе, чтобы узнать закончился ли доступ у пользователя или нет. Эта опция позволяет настроить интервал (в минутах), по которому будет происходить обновление статуса пользователя из базы данных. Если вы не используете премиум зону или доступ по токенам - этот параметр стоит выключить.
  • Синхронизировать online статус пользователей - включает синхронизацию состояния пользователя "на сайте" с базой данных и указывает интервал этой синхронизации. После входа в личную зону в браузере пользователя по расписанию раз в 60 секунд срабатывает небольшой скрипт, который посылает пинг на сервер. На сервере этот пинг может записать в базу данных информацию о том, что пользователь в данный момент времени находится на сайте. Если вам необходимо использовать эту информацию где-то на страницах сайта, либо вы хотите получить статистику кто сколько времени активно проводит на вашем сайте - вам необходимо включить этот параметр. Интервал указывает через какой промежуток времени информация "на сайте" будет сохраняться в базу данных.
  • Синхронизировать новые сообщения пользователей - включает синхронизацию сообщений внутренней почты пользователя с базой данных и указывает интервал этой синхронизации. По мере навигации пользователей по сайту нет смысла каждый раз определять, появились ли у них новые сообщения внутренней почты. Вы можете включить эту опцию и указать интервал, через который для каждого пользователя будут проверяться новые сообщения его внутренней почты (например, чтобы показать в шапке сайта, что у него появились новые сообщения).
  • Список стоп-слов - список запрещенных на вашем сайте слов, разделенный запятыми. При создании любого пользовательского контента на сайте (будь то комментарии, записи на стене сообщений или видео / фотоальбомы) запрещенные слова будут заменяться на слово-замену (например, [censored]). Это требуется для того, чтобы ваш сайт не мог быть найден в поисковиках по определенным ключевым словам, исходя из которых он может быть заблокирован. При использовании внутреннего поиска у вас на сайте запрещенные слова будут просто удаляться из поисковых запросов.
  • Автозамена - слово, на которое будет заменяться все найденные запрещенные слова.

Настройки мемберзоны

Настройки мемберзоны используются для конфигурации глобальных аспектов мемберзоны и доступны только начиная с Advanced пакета.

Детальное описание опций:

  • Статус пользователя после премиум - указывает в какой статус переводятся пользователи, когда длительность их премиум доступа истекает, либо транзакция была отменена. Пользователи активного статуса могут входить в мемберзону (если в настройках блока login эта возможность не перекрыта), поэтому в этом случае ваш сайт должен быть готов корректно отображаться для не-премиум пользователей. Если вы выбираете неактивный статус, то после завершения премиум доступа пользователи не смогут входить в мемберзону.
  • Покупка стандартных видео за токены - разрешает использовать токены для покупки доступа к стандартным видео и устанавливает стоимость в токенах по умолчанию. При необходимости для любых конкретных видео вы можете указать отличную от стоимости по умолчанию стоимость.
  • Покупка премиум видео за токены - разрешает использовать токены для покупки доступа к премиум видео и устанавливает стоимость в токенах по умолчанию. При необходимости для любых конкретных видео вы можете указать отличную от стоимости по умолчанию стоимость.
  • Покупка стандартных альбомов за токены - разрешает использовать токены для покупки доступа к стандартным фотоальбомам и устанавливает стоимость в токенах по умолчанию. При необходимости для любых конкретных фотоальбомов вы можете указать отличную от стоимости по умолчанию стоимость.
  • Покупка премиум альбомов за токены - разрешает использовать токены для покупки доступа к премиум фотоальбомам и устанавливает стоимость в токенах по умолчанию. При необходимости для любых конкретных фотоальбомов вы можете указать отличную от стоимости по умолчанию стоимость.
  • Покупка обнуляется после N дней - устанавливает максимальной срок доступа к купленному контенту в днях. При использовании ненулевого значения покупки пользователей обнуляются через указанное количество дней. Если вы изменяете это значение, то изменение повлияет только на новые покупки, которые будут совершены в будущем.
  • Награды за действия - таблица, которая позволяет награждать пользователей токенами за активность на сайте. Токены в дальнейшем могут использоваться пользователями для покупки доступа к премиум контенту. Таблица позволяет задать количество токенов для различных действий на сайте. Некоторые действия поддерживают возможность установить минимальные критерии, по которым действие будет считаться "совершенным", например, минимальная длительность загруженного видео, минимальная длина комментария и т.д.

Кастомизация

Раздел кастомизации предназначен для включения дополнительных полей для определенных объектов. Эти поля могут использоваться как в панели администрирования, так и на сайте по вашему усмотрению. Если вы включите какие-либо из полей для каких-либо объектов - эти поля сами по себе на сайте не появятся. Для того, чтобы использовать их на сайте вам необходимо вручную изменять нужные шаблоны.

Включив какие-либо из дополнительных полей, вы можете также указать их название, которое будет отображаться в панели администрирования (и только там!).

Вот некоторые примеры использования дополнительных полей:

  • Для категорий по умолчанию включены 2 дополнительных поля, которые позволяют указать название и описание для отображения в HTML метаданных страницы (se-оптимизация). Эти значения будут использоваться (если не пустые) для каждой категории на странице списка видео по данной категории.
  • Для контент провайдеров вы можете использовать большое количество полей для создания полноценных обзоров ваших спонсоров и любой другой рекламной информации.
  • Дополнительные поля для обратной связи могут быть включены как обязательные в блоке обратной связи сайта (feedback). В этом случае при отправке обратной связи пользователь должен будет заполнить их.

Форматы

Форматы видео

Форматы видео разбиты на 2 группы и тем самым позволяют задать кардинально разный набор видеофайлов для премиум видео и стандартного видео (стандартное видео также может быть публичным и личным). Basic пакет не поддерживает мультиформатность, он предоставляет возможность настраивать лишь 1 формат видео.

Описание полей форматов видео:

  • Название - название формата для отображения в панели администрирования, либо на сайте, если вы хотите его использовать.
  • Постфикс - уникальный идентификатор формата, должен быть окончанием имени файла с расширением. Постфикс используется в имени видеофайла, перед ним стоит числовой идентификатор видео. Примеры постфиксов: .flv, .mp4, _hq.mp4, premium.wmv и т.д. Соответственно названия видеофайлов для приведенных постфикстов будут такие: 123.flv, 123.mp4, 123_hq.mp4, 123premium.wmv и т.д. Изменение постфикса после создания формата невозможно.
  • Тип видео - выбор группы форматов видео: группа стандартных видео или группа премиум видео. После создания формата выбрать другую группу будет невозможно.
  • Статус - статус формата видео, который определяет жизненный цикл файлов данного формата. Активный обязательный формат будет всегда создаваться автоматически для всех видео, если он не загружен вручную. Активный необязательный формат может быть загружен вручную, но не будет создаваться автоматически. Неактивный формат не будет использоваться при создании видео - этот статус может понадобиться, если вы захотите убрать один из старых форматов, но не хотите потерять существующие видеофайлы этого формата. Галочка условно-необязательный позволяет задавать необязательные форматы, которые будут создаваться при условии, что длительность и размеры исходника видео позволяют создать такой формат.
  • Исходные файлы - позволяет пометить один из форматов в качестве исходных файлов. В будущем, при создании новых форматов, если оригинальные исходные файлы отсутствуют, движок будет брать за основу файлы формата, который помечен этой галочкой. Если такого формата нет, то движок будет использовать формат с наибольшим размером файла.
  • Размер видео - позволяет либо указать фиксированный размер видеофайла, который должен создаваться форматом, либо указать, что видеофайл формата должен иметь такой же размер, как и исходное видео. Если вы задаете фиксированный размер видеофайла, то можно установить либо сохранение пропорций исходного видео (тогда высота или ширина будет плавающей в зависимости от выбранной опции), либо форсирование заданного размера (тогда по краям видео будет выполнен кроп для форсирования пропорций формата).
  • Опции FFmpeg - опции FFmpeg, которые отвечают за качество видео / аудио потоков, кодеки, формат контейнера и т.д. В качестве базы можно использовать такие опции: -vcodec libx264 -threads 0 -r 25 -g 50 -crf 28 -me_method hex -trellis 0 -bf 8 -acodec libfaac -ar 44100 -ab 128k -f mp4
  • Изображение watermark - PNG изображение, которое будет накладываться поверх видео.
  • Позиция watermark - угол положения watermark изображения относительно видео.
  • Кастомизация watermark для контент провайдеров - позволяет включить возможность кастомизации watermark изображений для разных контент провайдеров. Для этого вам нужно выбрать, в каком файловом доп. поле у контент провайдеров может быть загружен watermark. Таким образом при обработке видео KVS возьмет в качестве watermark изображения файл из контент провайдера видео, если он заполнен. Чтобы иметь возможность загружать кастомные watermark изображения для контент провайдеров, вам необходимо включить соответствующее поле в настройках кастомизации.
  • Уровень доступа - позволяет выбрать категорию пользователей сайта, для которых видеофайлы данного формата будут доступны, соотв. для других пользователей файлы будут недоступны. Используется для настройки премиум зоны.
  • Включить возможность скачивания - включает возможность скачивать видеофайлы данного формата или проигрывать их через HTML5 режим (только для MP4 файлов). Если эта опция не включена, то файлы будут доступны только из Flash плеера. При включении этой опции для форматов видео, которые доступны всем посетителям сайта, будет ослаблена защита от хотлинкования и парсинга видео.
  • Выключить защиту от хотлинка - позволяет хотлинковать видеофайлы данного формата любыми возможными способами.
  • Ограничить длительность до - ограничивает длительность видеофайлов формата исходя из указанного кол-ва секунд или процентов. При указании ограничения в процентах позволяет также указать допустимые значения минимум и максимум в секундах.
  • Кол-во частей - используется совместно с ограничением длительности и позволяет сформировать трейлер указанной длительности из нескольких частей видео. С увеличением количества частей сильно увеличивается нагрузка на сервер конвертации.
  • Смещение с начала - позволяет указать отступ от начала видео в секундах или процентах.
  • Смещение с конца - позволяет указать отступ от конца видео в секундах или процентах.
  • Последняя часть - указывает движку, что последняя часть трейлера должна создаваться с конца фрагмента, а не с начала. Когда вы указываете кол-во частей > 1, то движок разбивает видео на несколько равных фрагментов и из начала каждого фрагмента берет кусочек определенной длительности, чтобы в сумме получился трейлер требуемой длительности. Включите эту опцию, чтобы последняя часть трейлера создавалась с конца фрагмента, а не с начала.
  • Кастомизация длительности для контент провайдеров - позволяет включить возможность кастомизации длительности формата для разных контент провайдеров. Для этого вам нужно выбрать, в каком текстовом доп. поле у контент провайдеров может быть задана длительность в секундах. Таким образом при обработке видео KVS возьмет в качестве ограничения длительности число секунд из данных контент провайдера видео, если оно ненулевое. Чтобы иметь возможность указывать кастомные значения длительности для контент провайдеров, вам необходимо включить соответствующее поле в настройках кастомизации.
  • Ограничить скорость до - позволяет задать ограничение скорости отдачи файлов данного формата. Эта опция имеет смысл только когда отдача видео происходит через Nginx.
  • Создавать таймлайновые скриншоты - включает создание таймлайновых скриншотов для видеофайлов этого формата. После включения этой опции для всех видеофайлов этого формата будут запущены фоновые задачи для создания таймлайновых скриншотов. При выключении этой опции существующие таймлайновые скриншоты удаляться не будут. Чтобы удалить уже созданные таймлайновые скриншоты, вы можете воспользоваться опцией контекстного меню на списке форматов.
  • Интервал снятия - интервал в секундах, через который будут сниматься таймлайновые скриншоты.
  • Название директории - название директории, в которой будут храниться таймлайновые скриншоты для каждого видеофайла этого формата. Вы должны указать именно название директории, а не путь к ней. Это название должно быть уникальным среди всех форматов видео и будет использоваться для составления пути к директории хранения таймлайновых скриншотов. Примеры названий: flv, mp4, mp4_premium_timelines и т.д. После того, как вы укажете название директории, изменить его будет невозможно.

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

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

При удалении формата видео будут удалены все видеофайлы данного формата со всех серверов хранения. Удаление файлов будет происходить на фоне. В течение этого времени формат будет находиться в статусе Удаление.

Форматы скриншотов

Форматы скриншотов разбиты на 2 группы: обзорные и таймлайновые. Обзорные скриншоты создаются для каждого видео в целом на основе исходного файла видео. Количество обзорных скриншотов настраивается глобально в разделе настроек контента. Таймлайновые скриншоты привязываются к форматам видео, поэтому их количество настраивается в отдельных форматах видео путем указание интервала снятия таймлайновых скриншотов. Таким образом, у каждого видео обязательно будет хотя бы один обзорный скриншот, а также для каждого из форматов видео может быть свой отдельный набор таймлайновых скриншотов.

Описание полей форматов скриншотов:

  • Название - название формата для отображения в панели администрирования.
  • Группа - выбор группы формата (обзорная или таймлайновая). После создания формата выбрать другую группу будет невозможно.
  • Размер - фиксированный размер скриншота для данного формата. Если вы хотите, чтобы скриншоты данного формата имели такой же размер, как у исходного файла, то вы должны указать ключевое слово source в качестве размера. В этом случае размеры скриншотов могут быть разными в зависимости от размеров исходного видео. Размер является уникальным идентификатором формата в группе, т.е. нельзя создать 2 обзорных формата скриншотов с одинаковым размером. После создания формата изменить размер невозможно.
  • Опции ImageMagick для скриншотов, создаваемых автоматически - опции ImageMagick для обработки скриншотов данного формата, созданных автоматически по видео. Опции должны содержать токены %INPUT_FILE%, %OUTPUT_FILE% и %SIZE%, которые заменятся на нужные пути и размер при выполнении операции. Данные опции ImageMagick будут использоваться только при автоматическом создании скриншотов по видео.
  • Опции ImageMagick для скриншотов, загруженных вручную - опции ImageMagick для обработки скриншотов данного формата, которые загружаются вручную либо при создании видео, либо при работе со скриншотами. Опции должны содержать токены %INPUT_FILE%, %OUTPUT_FILE% и %SIZE%, которые заменятся на нужные пути и размер при выполнении операции. Данные опции ImageMagick будут использоваться только при ручной загрузке скриншотов.
  • Аспект ратио скриншотов - важная опция, которая позволяет указать механизм масштабирования скриншотов, снятых с видео, до размера требуемого данным форматом. Если аспект ратио исходного видео будет сохраняться, то на скриншотах могут появиться черные полосы по краям. Если же аспект ратио скриншотов будет подгоняться к требованию формата - черных полос не будет, однако исходные скриншоты будут обрезаны по краям при необходимости.
  • Создавать ZIP - указывает, создавать ли ZIP архивы со скриншотами этого формата для каждого видео. Если включается для существующего формата, то запускается фоновая задача создания ZIP архивов для всех видео. Если выключается для существующего формата, то аналогичным образом запускается фоновая задача удаления ZIP архивов для всех видео.
  • Изображение watermark - PNG изображение, которое будет накладываться поверх каждого скриншота.
  • Позиция watermark - угол положения watermark изображения относительно скриншота.

Важно! При создании нового формата скриншотов будет запущена одна фоновая задача для создания скриншотов данного формата для всех видео. Эта задача будет выполняться на главном сервере и может занять длительное время, в зависимости от доступных ресурсов сервера и количества скриншотов.

При удалении формата скриншотов будут удалены все скриншоты данного формата у всех видео. Удаление файлов будет происходить на фоне. В течение этого времени формат будет находиться в статусе Удаление. Перед удалением вам необходимо проверить, что в шаблонах сайта не осталось ссылок на скриншоты удаляемого формата. Для этого следует воспользоваться поиском по шаблонам в панели администрирования и искать использования размера формата в шаблонах сайта (например, 240x180).

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

Форматы альбомов

Форматы альбомов разбиты на 2 группы: группа основных изображений и группа просмотра. Файлы форматов группы основных изображений создаются для каждой фотографии альбома. В то время как файлы форматов группы просмотра создаются для главной фотографии каждого альбома в единственном экземпляре. Форматы альбомов доступны только в Ultimate пакете.

Описание полей форматов альбомов:

  • Название - название формата для отображения в панели администрирования.
  • Группа - выбор группы формата (группа основных изображений или группа просмотра). После создания формата выбрать другую группу будет невозможно.
  • Размер - размер фотографии для данного формата. Не является фиксированным размером, поскольку в отличие от скриншотов видео фотографии альбомов поддерживают динамические размеры с различными ограничениями. Размер является уникальным идентификатором формата в группе. После создания формата изменить размер невозможно.
  • Опции ImageMagick - опции ImageMagick для обработки фотографий данного формата. Опции должны содержать токены %INPUT_FILE%, %OUTPUT_FILE% и %SIZE%, которые заменятся на нужные пути и размер при выполнении операции. Данные опции ImageMagick будут использоваться при любых операциях с фотографиями.
  • Аспект ратио изображений - важная опция, которая позволяет указать механизм масштабирования исходных фотографий до размера требуемого данным форматом. Если аспект ратио исходной фотографии будет сохраняться, то на фотографиях либо могут появиться черные полосы по краям (фиксированный размер), либо размер фотографии может быть меньше, чем размер формата (динамический размер). Если же аспект ратио фотографий будет подгоняться к требованию формата - черных полос не будет, однако исходные фотографии будут обрезаны по краям при необходимости.
  • Создавать ZIP - указывает, создавать ли ZIP архивы с изображениями этого формата для каждого фотоальбома. Если включается для существующего формата, то запускается фоновая задача создания ZIP архивов для всех фотоальбомов. Если выключается для существующего формата, то автоматического удаления ZIP архивов происходить не будет (в этом отличие от скриншотов видео). Чтобы удалить уже созданные ZIP архивы, вы можете воспользоваться опцией контекстного меню на списке форматов.
  • Изображение watermark - PNG изображение, которое будет накладываться поверх каждой фотографии.
  • Позиция watermark - угол положения watermark изображения относительно фотографии.
  • Уровень доступа - позволяет выбрать категорию пользователей сайта, для которых фотографии данного формата будут доступны, соотв. для других пользователей фотографии будут недоступны. Ограничение доступа сработает только в тех случаях, когда вы используете защищенные ссылки на фотографии (через скрипт раздачи).
  • Показывать изображение при отсутствии доступа - позволяет указать конкретное изображение, которое будет показано пользователю при запросе через скрипт раздачи фотографии, доступа к которой у него нет. Если это поле оставлено пустым, то скрипт раздачи вернет ошибку (403 Forbidden).

KVS позволяет использовать исходные фотографии на сайте таким же образом, как и фотографии любого формата. Настройка уровня доступа к исходным фотографиям осуществляется в разделе настроек контента.

Важно! При создании нового формата альбомов будет запущена одна фоновая задача для создания фотографий данного формата для всех фотоальбомов. Эта задача будет выполняться на главном сервере и может занять длительное время, в зависимости от доступных ресурсов сервера и количества фотографий.

При удалении формата альбомов будут удалены все фотографии данного формата у всех фотоальбомов. Удаление файлов будет происходить на фоне. В течение этого времени формат будет находиться в статусе Удаление. Перед удалением вам необходимо проверить, что в шаблонах сайта не осталось ссылок на фотографии удаляемого формата. Для этого следует воспользоваться поиском по шаблонам в панели администрирования и искать использования размера формата в шаблонах сайта (например, 120x160).

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

Мультисерверность

Мультисерверность позволяет решить казалось бы неразрешимые вопросы нехватки дискового пространства и ширины канала, которые рано или поздно возникнут у любого быстрорастущего проекта. Кроме вопросов хранения и отдачи контента, мультисерверность позволяет использовать несколько серверов конвертации для ускорения фоновых процессов и снижения нагрузки на основной сервер.

Сервера хранения

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

KVS поддерживает практически любые сервера для хранения контента. Основным требованием к удаленным серверам является то, что сервер должен предоставлять FTP доступ с возможностью записи. В случае необходимости защиты контента от прямого доступа могут также накладываться и другие требования.

Базой хранения контента является указанная директория на файловой системе сервера. KVS хранит контент в древовидной структуре данных: это значит что в корне директории хранения будут создаваться некоторые поддиректории, в них будут создаваться другие поддиректории, в которых будут находиться файлы контента.

Описание полей серверов хранения:

  • Название - название сервера для отображения в панели администрирования.
  • Группа серверов - группа серверов, к которой принадлежит данный сервер. Хранение контента привязывается к группе серверов, а не к конкретному серверу. Любой сервер, который принадлежит группе будет хранить и отдавать весь контент, который привязан к этой группе. Такая структура позволяет осуществлять балансировку отдачи при наличии нескольких серверов в одной группе.
  • URL - HTTP ссылка к директории хранения контента. В большинстве случаев эта директория должна быть закрыта от прямого доступа, чтобы не было возможность скачивать файлы в обход системы защиты.
  • Тип стриминга - позволяет выбрать какой тип стриминга поддерживает данный сервер хранения. Например, если у вас контент отдается через голый Apache, то необходимо выбрать тип стриминга - HTTP 302 редирект, если через Nginx - то необходимо выбрать тип стриминга Nginx (x-accel-redirect). Последняя опция CDN позволяет подключать вообще любые сервера с нестандартной системой защиты. При выборе этой опции вам также потребуется написать PHP скрипт управления CDN, либо запросить его у вашего CDN провайдера.
  • Скрипт управления CDN - полное название PHP скрипта управления для данного CDN сервера, находящегося в директории /admin/cdn. Самой директории /admin/cdn по умолчанию не существует, поэтому ее требуется создать и скопировать туда скрипт. Шаблон скрипта находится по пути /admin/tools/cdnapi.php. Шаблон содержит набор функций именованных особым образом, которые будут вызываться движком KVS при запросе файлов либо для инвалидации контента. Инвалидация является важной частью для CDN, которые кэшируют ваш контент: если не осуществлять инвалидацию, то в случае замены контента сервера CDN будут по-прежнему отдавать старую версию контента. Названия функций в скрипте зависят от названия самого скрипта, чтобы исключить их пересечение между разными скриптами CDN, поэтому вам необходимо переименовать все функции шаблона в соответствии с названием скрипта. Все функции документированы и содержат примеры значений, которые передаются в параметрах из движка KVS.
  • Ключ стриминга - ключ от провайдера CDN для защиты контента. Установленный ключ передается в скрипт управления CDN, где может использоваться в механизме защиты.
  • Использовать нестандартный HTTP параметр стриминга - позволяет указать название HTTP параметра стриминга, которое должно использоваться вместо стандартного названия start для перемотки по видео. Вам нужно использовать это поле, если сервер не поддерживает стандартный параметр стриминга start.
  • Тип подключения - влияет на способ копирования данных между серверами. Важно! Независимо от типа подключения одна и та же директория на файловой системе сервера может использоваться только для одного сервера хранения в KVS.
  • Путь - полный путь к директории хранения контента. Директория, указанная в пути должна иметь права на запись (777) и соответствовать HTTP ссылке к ней, указанной в опции URL. При использовании Nginx директория хранения должна быть объявлена внутренней в конфиге Nginx, чтобы исключить возможность прямого доступа к ней.
  • FTP хост - хост для соединения по FTP.
  • FTP пользователь - пользователь для соединения по FTP.
  • FTP пароль - пароль для соединения по FTP.
  • FTP директория - директория в которой должен храниться контент относительно корня FTP. Если FTP доступ ведет напрямую в директорию хранения, то это поле следует оставить пустым. Важно! Чтобы избежать потенциальных проблем в будущем лучше настраивать FTP пользователя в корень www доступа на сервере, а путь к директории хранения относительно корня www указывать в настройках KVS. Например, если контент должен храниться на сервере в директории http://ip.ad.re.ss/contents/videos, то FTP подключение должно иметь домашней директорией корень http://ip.ad.re.ss, а в качестве FTP директории следует указать contents/videos.
  • URL управляющего скрипта - ссылка на управляющий скрипт remote_control.php, который используется для управления отдачей контента с удаленного сервера, а также для запроса состояния сервера. Управляющий скрипт не требуется для CDN серверов. Данное поле заполняется автоматически, вам лишь необходимо скопировать файл /admin/tools/remote_control.php на сервер хранения и проверить, что он доступен по ссылке из этого поля (скрипт должен находиться в корне www сервера). Если скрипт доступен, то он выведет слово connected, в противном случае вам необходимо разобраться, по какой причине не работает скрипт (некорректно настроен Apache, некорректно настроен Nginx, некорректно настроен PHP и т.д.).
  • Смещение времени - может быть использовано в настройках удаленного сервера хранения для указания разницы его времени относительно главного сервера. Для удаленных серверов хранения KVS требует, чтобы время на них было синхронизировано с главным сервером с точностью до минуты. Если вы не хотите синхронизировать таймзону, вы можете указать смещение времени в настройках сервера хранения.

При создании второго и последующего сервера в группе серверов, к которой уже привязан контент, вы должны предварительно полностью скопировать содержимое директории хранения с любого из существующих в данной группе серверов на новый сервер. Под содержимым директории понимается вся ее дочерняя структура - это дерево подкаталогов и файлов (KVS хранит контент в древовидной структуре). Если вы этого не сделали, либо скопировали не все файлы, либо скопировали не в ту директорию, KVS выдаст ошибку при попытке добавлении сервера.

Важно! После добавления нового сервера в группу серверов, к которой привязан контент, этот сервер будет иметь неактивный статус, а значит он не будет задействован при отдачи контента. Это сделано для того, чтобы вы имели возможность все проверить перед активацией сервера, в частности проверить отдачу контента. Активировать сервер можно через контекстное меню на списке серверов, а также в настройках группы серверов.

Рассмотрим основные ошибки, которые могут возникнуть при попытке добавить сервер хранения:

  • Расширение PHP для работы FTP не найдено - ваша сборка PHP не содержит нужных функций для работы с FTP. Необходимо пересобрать PHP с поддержкой FTP расширения.
  • Невозможно соединиться с host:21 - FTP подключение отклонено сервером. Возможно сработал firewall на сервере хранения.
  • Невозможно осуществить вход используя указанные данные - имя пользователя или пароль для входа по FTP некорректны.
  • Невозможно выполнить операции put / get / chmod / delete, вероятно не хватает привилегий - данная ошибка говорит о том, что KVS не смог выполнить тестирование базовых операций (копирование файла на сервер, установку для него привилегий, копирование файла с сервера и удаление). Попробуйте выполнить данные операции через свой FTP клиент.
  • Автоматическая проверка не может найти некоторые из файлов, выбранные для проверки. Пожалуйста, убедитесь что вы скопировали все файлы на этот сервер. - ошибка говорит о том, что скорее всего вы не скопировали файлы существующего контента на этот сервер, либо в настройках FTP соединения некорректно указана директория, в которой находятся файлы. При попытке добавления сервера хранения к группе серверов, в которой уже есть контент, KVS выбирает до 10 единиц случайного контента и пытается проверить их наличие на данном сервере хранения.
  • [URL управляющего скрипта]: указан неверный скрипт - при попытке обращения к управляющему скрипту он не вернул ожидаемой строки connected. Это может быть вызвано разными причинами: вы не скопировали скрипт в нужное место, на сервере некорректно настроен Apache, на сервере некорректно настроен Nginx, на сервере некорректно настроен PHP.
  • [Смещение времени]: время на удаленном сервере не синхронизировано со временем основного сервера - время на сервере хранения должно совпадать со временем основного сервера с точностью до минуты. Если на серверах используются разные временные зоны, то необходимо указать часовое смещение в поле Смещение времени.
  • [Скрипт управления CDN]: файл /admin/cdn/mycdn.php не существует - вы пытаетесь добавить CDN сервер, но не скопировали скрипт управления в директорию /admin/cdn.
  • [Скрипт управления CDN]: файл /admin/cdn/mycdn.php не содержит нужных функций - вы пытаетесь добавить CDN сервер, но ваш скрипт управления не содержит функций с требуемыми именами. Скорее всего, вы не учли, что названия всех функций скрипта должны иметь имя PHP файла в качестве префикса, например для скрипта mycdn.php имена функции должны иметь вид: mycdn_test, mycdn_get_video и т.д.
  • [Скрипт управления CDN]: ошибка проверки CDN: <детали ошибки> - функция _test скрипта управления вернула ошибку.

При необходимости защиты контента от хотлинка или несанкционированного доступа сервера хранения должны реализовывать эту защиту каким-либо образом:

  • Сервера на базе Nginx позволяют закрыть доступ к контенту по прямым ссылкам. Вместо прямых ссылок используется скрипт раздачи, который в итоге указывает Nginx какой файл нужно отдать пользователю. Для локального сервера хранения таким скриптом является главный скрипт get_file.php или get_image.php. Для удаленных серверов в роли такого скрипта выступает скрипт управления remote_control.php, который вы должны скопировать на сервер хранения. Независимо от того, является ли сервер хранения локальным или удаленным, он должен запрещать доступ к файлам по прямым ссылкам. Это делается специальной конструкцией в конфигурации Nginx: location ^~ /contents/videos/ {
        mp4; # включение MP4 стриминга для видео
        root /usr/home/ftp0/domains/domain.com/html; # указание полного серверного пути относительно директории /contents/videos/
        internal; # запрет доступа к этой директории по прямым ссылкам
    }
    После объявления такого правила прямые ссылки вида http://domain.com/contents/videos/0/1/1.mp4 должны перестать работать и станут возвращать 404 ошибку. Доступ к контенту будет возможен только через скрипт раздачи, который реализует различные уровни защиты. Для фотоальбомов выглядит похожим образом: location ^~ /contents/albums/sources/ { # закрытие прямого доступа к исходным изображениям
        root /usr/home/ftp0/domains/domain.com/html; # указание полного серверного пути относительно директории /contents/albums/sources/
        internal; # запрет доступа к этой директории по прямым ссылкам
    }
    location ^~ /contents/albums/main/1024x1024/ { # закрытие прямого доступа к изображениям формата 1024x1024
        root /usr/home/ftp0/domains/domain.com/html; # указание полного серверного пути относительно директории /contents/albums/main/1024x1024/
        internal; # запрет доступа к этой директории по прямым ссылкам
    }
  • CDN сервера реализуют защиту посредством генерации временного хэша в скрипте управления CDN. Однако специфика работы CDN требует наличие origin-сервера, к которому обращается CDN для кэширования вашего контента. При настройке в KVS вы задаете origin-сервер в качестве директории хранения, а сам CDN в качестве URL-а. Получается такая схема (упрощенно): KVS копирует файлы на origin-сервер -> пользователь запрашивает файлы с CDN -> CDN запрашивает файлы с origin-сервера и кэширует их, после чего обращение к origin-серверу не производится. Получается, что если в качестве origin-сервера выступает ваш сервер - то весь контент должен быть доступен по прямым ссылкам, чтобы CDN мог закэшировать его. Для избежания несанкционированного доступа к контенту на origin-сервере, в качестве origin-сервера следует использовать какой-либо сервер провайдера CDN с возможность FTP подключения.
  • При использовании стандартного 302 редиректа контент остается доступным по прямым ссылкам. Как правило в таком случае защитой от хотлинка может служить защита по рефереру, но она не позволяет защититься от граббинга базы.

Группы серверов хранения

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

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

Описание полей группы серверов хранения:

  • Название - название группы для отображения в панели администрирования.
  • Тип контента - позволяет создать группу для хранения видео или фотоальбомов. По историческим причинам KVS не может хранить видео и фотоальбомы на одной группе серверов. Поэтому даже если физически контент будет храниться на одном и том же сервере, необходимо создавать 2 группы серверов (одну для видео, вторую для фотоальбомов)

Описание столбцов таблицы балансировки:

  • Сервер - название сервера хранения, опции которого настраивает строка таблицы.
  • Статус - статус сервера хранения. Контент отдается только с активных серверов.
  • Вес для балансировки - указывает вес данного сервера при балансировке. Чем выше вес сервера по отношению к другим серверам, тем выше вероятность отдачи контента с этого сервера.
  • Привязать страны - позволяет привязать определенные сервера к определенным странам и отдавать контент с этих серверов только для пользователей указанных стран. Для одного сервера поле должно остаться пустым, что будет означать, что этот сервер используется для "всех остальных стран".

Проверка отдачи контента

KVS предоставляет автоматический механизм проверки отдачи контента с серверов хранения. Этот механизм можно запустить вручную для каждого сервера в отдельности, чтобы получить полную информацию по каждому аспекту отдачи контента. Кроме того, этот механизм регулярно проверяет все сервера хранения, чтобы в случае возникновения проблем вынести ошибку на страницу старта.

В панели администрирования проверка отдачи для любого сервера может быть запущена из контекстного меню этого сервера. Для видео-серверов проверяется отдача каждого формата видео. Для фото-серверов проверяется отдача каждого формата альбомов, а также ZIP файлов этого формата, если их создание включено. Детали проверок:

  • Прямые ссылки на видеофайлы не должны работать. Если для какого либо формата видео его файл доступен по прямой ссылке, вы увидите ошибку. Эта ошибка, однако, не является критической; она не сказывается на работоспособности сайта и не показывается на странице старта.
  • Ссылки на видеофайлы через скрипт раздачи должны работать. Если для какого либо формата видео его файл не доступен через скрипт раздачи, вы увидите ошибку. Исключение составляют форматы видео, доступ к которым закрыт для незарегистрированных пользователей. В этом случае проверка выдаст предупреждение, т.к. только зарегистрированные пользователи либо администраторы могут проверить ссылку на файл такого формата. Чтобы проверить, вы можете кликнуть на отображаемой в предупреждении ссылке и убедиться, что файл отдается.
  • Стриминг видеофайлов FLV или MP4 формата должен работать. Если для какого-либо формата видео не работает стриминг, вы увидите ошибку.
  • Прямые ссылки на фотографии должны работать для тех форматов, доступ к которым не регулируется (т.е. фотографии доступны всем посетителям). Если для какого либо формата альбомов с публичным доступом его фотография недоступна по прямой ссылке, вы увидите ошибку.
  • Прямые ссылки на фотографии не должны работать для тех форматов, доступ к которым закрыт от незарегистрированных пользователей. Если для какого либо формата альбомов с закрытым доступом его фотография доступна по прямой ссылке, вы увидите ошибку. Эта ошибка, однако, не является критической; она не сказывается на работоспособности сайта и не показывается на странице старта.
  • Ссылки на фотографии через скрипт раздачи должны работать. Если для какого либо формата альбомов его фотография не доступна через скрипт раздачи, вы увидите ошибку. Исключение составляют форматы альбомов, доступ к которым закрыт для незарегистрированных пользователей. В этом случае проверка выдаст предупреждение, т.к. только зарегистрированные пользователи либо администраторы могут проверить ссылку на фотографию такого формата. Чтобы проверить, вы можете кликнуть на отображаемой в предупреждении ссылке и убедиться, что фотография отдается.
  • Ссылки на ZIP файлы фотоальбомов проверяются по такой же логике, как и ссылки на фотографии.

В случае возникновения ошибки по какой-либо проверке, в деталях проверки вы можете посмотреть HTTP заголовки запросов и ответов. Как правило ошибки случаются из-за неправильной настройки сервера хранения. Рассмотрим наиболее типичные причины ошибок:

  • Проверка Прямая ссылка не работает? - ошибка говорит о том, что файлы доступны по прямым ссылкам. Если сервер хранения использует HTTP 302 редирект в качестве типа стриминга, то эта ошибка естественна и от нее не избавиться. Напомним, этот тип стриминга подразумевает доступность всех файлов по прямым ссылкам. Если сервер хранения использует Nginx, то скорее всего в конфигурации Nginx у вас не установлена директива internal для директории хранения (см. раздел о настройках сервера хранения).
  • Проверка Прямая ссылка работает? - ошибка говорит о том, что файлы не доступны по прямым ссылкам. Если сервер хранения использует Nginx, то скорее всего в конфигурации Nginx у вас установлена директива internal для директории хранения и ее нужно убрать. Если сервер хранения использует CDN, то необходимо выключить защиту на нем.
  • Проверка Защищенная ссылка работает? - ошибка говорит о том, что файлы не доступны через скрипт раздачи. Наиболее вероятные причины: файла контента физически не существует в директории хранения, либо на уровне Apache включена опция MultiViews, которая мешает работе скриптов раздачи.
  • Проверка Стриминг работает? - ошибка говорит о том, что стриминг видеофайлов не срабатывает. Если сервер хранения использует Nginx, то скорее всего в конфигурации не включен FLV / MP4 модуль стриминга для директории хранения. Если сервер хранения использует CDN, то возможно ваш CDN требует нестандартного параметра стриминга. Вам следует уточнить у провайдера CDN и в настройках сервера хранения в KVS прописать название параметра.

Сервера конвертации

Сервера конвертации предназначены для распределения нагрузки, которая возникает при операциях с контентом. Basic и Advanced пакеты поддерживают только локальный сервер конвертации.

Описание полей серверов конвертации:

  • Название - название сервера для отображения в панели администрирования.
  • Статус - статус сервера. Только активные сервера конвертации используются для работы.
  • Макс. задач - устанавливает максимальное количество задач, которое может быть передано на сервер конвертации одновременно. Это, однако, не устанавливает параллельного выполнения задач на сервере конвертации - все загруженные задачи будут выполняться последовательно.
  • Приоритет ресурсоемких операций - позволяет выбрать одно из нескольких возможных значений приоритета ресурсоемких операций, которые выполняются на данном сервере (в реальном времени, высокий, средний, низкий, очень низкий).
  • Оптимизировать копирование контента - заставит сервер конвертации напрямую копировать обработанный контент на сервера хранения, что позволит сэкономить трафик на главном сервере и ускорить процессы обработки контента. Включение данной опции может привести к ошибке, если на вашем сервере конвертации находится старая версия скрипта remote_cron.php, либо не установлено расширение PHP для работы с FTP протоколом.
  • Тип подключения - влияет на способ копирования данных между серверами. Важно! Независимо от типа подключения одна и та же директория на файловой системе сервера может использоваться только для одного сервера конвертации в KVS.
  • Путь - полный путь к рабочей директории сервера. Директория, указанная в пути должна иметь права на запись (777).
  • FTP хост - хост для соединения по FTP.
  • FTP пользователь - пользователь для соединения по FTP.
  • FTP пароль - пароль для соединения по FTP.
  • FTP директория - рабочая директория сервера относительно корня FTP. Если FTP доступ ведет напрямую в требуемую директорию, то это поле следует оставить пустым.

Перед созданием удаленного сервера конвертации вам необходимо скопировать в его рабочую директорию скрипт /admin/tools/remote_cron.php и установить для него выполнение по cron-у раз в минуту. При первоначальном запуске скрипт попытается самостоятельно определить пути ко всем необходимым библиотекам и создаст рядом с собой файл config.properties, в котором выведет настройки всех путей. Вам необходимо убедиться в правильности определения библиотек и исправить при необходимости:

# ffmpeg is required
ffmpeg = /usr/local/bin/ffmpeg

# imagemagick (convert binary) is required
imagemagick = /usr/local/bin/convert

# yamdi is required for FLV videos support
yamdi = /usr/local/bin/yamdi

# qt-faststart is required for MP4 videos support
qt-faststart = /usr/local/bin/qt-faststart

# time offset in comparison to main server (in hours)
timeoffset = 0

  • ffmpeg - путь к библиотеке FFmpeg, обязательный. Библиотека FFmpeg используется для основных задач конвертации видео.
  • imagemagick - путь к библиотеке imagemagick convert, обязательный.
  • yamdi - путь к библиотеке Yamdi, обязательный только в том случае, если вы планируете хранить видеофайлы в FLV формате. Библиотека Yamdi предназначена для добавления метаинформация в файлы FLV формата, чтобы плеер мог осуществлять перемотку по ним.
  • qt-faststart - путь к библиотеке qt-faststart, обязательный только в том случае, если вы планируете хранить видеофайлы в MP4 формате. Библиотека qt-faststart предназначена для пост-обработки файлов MP4 формата, чтобы плеер мог осуществлять перемотку по ним.
  • timeoffset - положительное или отрицательное часовое смещение во времени между основным сервером и сервером конвертации.

Рассмотрим основные ошибки, которые могут возникнуть при попытке добавить сервер конвертации:

  • Расширение PHP для работы FTP не найдено - ваша сборка PHP не содержит нужных функций для работы с FTP. Необходимо пересобрать PHP с поддержкой FTP расширения. Если у вас включена опция Оптимизировать копирование контента, то FTP расширение должно быть установлено также и на сервере конвертации.
  • Невозможно соединиться с host:21 - FTP подключение отклонено сервером. Возможно сработал firewall на сервере конвертации.
  • Невозможно осуществить вход используя указанные данные - имя пользователя или пароль для входа по FTP некорректны.
  • Невозможно выполнить операции put / get / chmod / delete, вероятно не хватает привилегий - данная ошибка говорит о том, что KVS не смог выполнить тестирование базовых операций (копирование файла на сервер, установку для него привилегий, копирование файла с сервера и удаление). Попробуйте выполнить данные операции через свой FTP клиент.
  • Скрипт конвертации не настроен (или не работает) на этом сервере - в рабочей директории сервера нет данных о срабатывании скрипта конвертации, скорее всего он не был поставлен на cron.

Локализация

Локализация контента позволяет предоставлять данные вашего сайта на разных языках. При создании новых языков база данных расширяется для возможности дублирования данных на этих языках, а в разделе администрирования появится возможность переводить объекты на новые языки. Локализация поддерживается только в Ultimate пакете.

Описание полей языка:

  • Название - название языка для отображения в панели администрирования.
  • ISO код - 2-символьный ISO код языка на латинице. Этот код будет использоваться для переключения сайта в языковой режим.
  • Применяется для - выбор области применения локализации. Данная опция влияет на поведение панели администрирования при работе с переводами. Если вы хотите переводить только названия объектов, выберите соответствующую опцию.

Для настройки сайта под мультиязычность существует несколько разных концепций, которые описаны в основной документации. В случае подключения нескольких языков в пределах одного домена вам необходимо перечислить их ISO коды в файле /admin/include/setup.php:

$config['locales']=array('de','fr','es','it'); // перечислите все поддерживаемые коды языков, порядок не имеет значения

В этом случае для перевода сайта в локализованную версию необходимо на любую страницу передать параметр kt_lang=%code%, значение которого запомнится в куках пользователя и в дальнейшем для этого пользователя сайт будет переводиться в локализованную версию автоматически.

При использовании языковых сателлитов в файле /admin/include/setup.php должен прописываться ISO код текущей локали, чтобы сателлит постоянно работал в рамках этой локали:

$config['locale']='de'; // укажите один из поддерживаемых языковых кодов, который назначается для данного сателлита

Для использования языковых ключей в шаблонах сайта вам необходимо создать файл /langs/default.php с определением всех ключей и их значений для локали по умолчанию. Затем скопировать содержимое этого файла в языковые файлы с именами /langs/de.php, /langs/fr.php и т.д. для всех поддерживаемых локалей и отдать их переводчикам. Сами файлы должны иметь такой формат:

<?php
    $lang['key1']="Text 1";
    $lang['section1']['key1']="Section 1 Text 1";
    $lang['section1']['key2']="Section 1 Text 2";
    $lang['section2']['subsection1']['key1']="Section 2 Subsection 1 Text 1";
    ...
?>

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

$lang['site_title']="Site name - best videos and community site";
$lang['posted_by']="Posted by";
$lang['duration']="Duration";
...

$lang['main_menu']['home']="Home";
$lang['main_menu']['videos']="Videos";
...

Далее в шаблонах сайта можно использовать такие ключи для вывода тех или иных текстовок:

{{$lang.site_title}}
{{$lang.posted_by}}
{{$lang.duration}}
{{$lang.main_menu.home}}
{{$lang.main_menu.videos}}

В случае, если внутрь текстовки требуется вставить какие-либо динамические данные, ни в коем случае нельзя разбивать текстовку на несколько и выводить на сайте. Вместо этого в саму текстовку нужно вставлять так называемые плэйсхолдеры, которые при выводе заменять на реальные значения. Это вызвано тем, что порядок слов в разных языках может быть разным, и переводчику понадобится перестроить всю текстовку целиком. Например:

$lang['titles']['videos_by_category']="Videos for category %1%";
$lang['confirmations']['delete_messages']="Are you sure to delete %1% messages from %2% user?";

{{$lang.titles.videos_by_category|replace:"%1%":$category_info.title}}
{{$lang.confirmations.delete_messages|replace:"%1%":$selected_count|replace:"%2%":$username}}

Во время работы сайта в режиме конкретной локали движок будет сначала подключать языковой файл по умолчанию, а затем языковой файл для данной локали (если он существует). Таким образом в случае отсутствия каких-либо ключей в языковом файле локали на сайте будут использоваться текстовки из файла по умолчанию.