2. Установка и настройка сервера Smarty¶
Инсталляционные пакеты ПО распространяются через FTP, доступ к которому предоставляется на время действия договора.
2.2. Установка на ОС Linux Debian¶
Все модули Smarty поставляются в виде установочных deb-пакетов и устанавливаются утилитой dpkg. Обязательным модулем является smarty-base .
Для работы необходим web-сервер nginx , uwsgi и python 2.7 , а также несколько других пакетов.
2.2.1. Установка зависимостей¶Установка через apt-get :
Установка утилиты pip :
2.2.2. Установка Smarty и модулей¶Установка через dpkg :
После установки пакетов Smarty необходимо установить python-библиотеки через pip :
После установки пакета smarty-base создается конфигурационный файл для nginx в /etc/nginx/sites-available/smarty . По умолчанию настроен на домен smarty.example.com и слушает порт 80 и 8180 . Необходимо перенастроить данный домен на необходимый.
Файлы Smarty размещаются в /usr/share/nginx/html/microimpuls/smarty .
2.2.3. Установка схемы базы данных¶Первичная установка схемы базы данных осуществляется командой:
- <settings filename> - имя файла настроек Smarty, в котором должны быть установлены параметры подключения к БД (см. Описание основных параметров ).
Создание пользователя с правами служебного администратора осуществляется командой:
- <settings filename> - имя файла настроек Smarty, в котором должны быть установлены параметры подключения к БД (см. Описание основных параметров ).
Для создания системных объектов Smarty в базе данных, а также примера настроек выполните команду:
- <settings filename> - имя файла настроек Smarty, в котором должны быть установлены параметры подключения к БД (см. Описание основных параметров ).
Можно пропустить создание образца настроек оператора, добавив флаг --no-sample-data
2.2.6. Клонирование Client со всеми настройками оператора¶В случае необходимости создания нового объекта Client и копирования всех данных можно использовать команду клонирования:
- <source client id> - ID объекта Client, который нужно склонировать в новый Client.
- <settings filename> - имя файла настроек Smarty, в котором должны быть установлены параметры подключения к БД (см. Описание основных параметров ).
Можно перенести также все телеканалы, фильмы, радиостанции, камеры и сервисы, используя соответствующие опции --clone-channels --clone-video --clone-radio --clone-cameras --clone-apps
2.2.7. Создание пользователя или восстановление пароля¶В Smarty возможно создание или восстановление пользователя через команду create_user :
- –username - имя пользователя, обязательный.
- –password - пароль, обязательный.
- –is_admin - True или False , если True , то создаваемому пользователю будет доступна служебная часть сайта, по умолчанию False .
- –client_id - ID клиента, к которому будет привязан создаваемы пользователь.
- –is_superuser - True или False , если True , то будет создаен суперпользователь, по умолчанию False .
- –monitoring_user - True или False , если True , то пользователь будет являться оператором мониторинга устройств, по умолчанию False .
- –reset_password - если True , то в случае, если указанный username уже используется, то вместо создания нового будет изменён пароль у старого пользователя; по умолчанию False .
В Smarty возможно создание оператора (Client) через команду create_client :
- –name - название оператора, обязательный.
- –api_key - TVMW API Key, обязательный.
- –domain_prefix - префикс домена оператора, обязательный.
- –email - email оператора, обязательный.
2.3. Установка на ОС Linux CentOS¶
Поддержка CentOS является экспериментальной - корректная работа всех функций Smarty не гарантируется. Скрипт установки для fabric и примеры конфигурации на CentOS можно найти здесь: https://github.com/microimpuls/smarty-centos
2.4. Конфигурация Smarty¶
2.4.1. Файл настроек Smarty¶После первичной установки базовый файл конфигурации Smarty находится по адресу /etc/microimpuls/smarty/base.py (симлинк на /usr/share/nginx/html/microimpuls/smarty/settings/base.py ).
Основной файл конфигурации, используемый для production-режима работы - /etc/microimpuls/smarty/prod.py . На этот файл (или на другой используемый конфиг) должен указывать симлинк в /usr/share/nginx/html/microimpuls/smarty/settings/<setings name>.py . Именно в нем следует производить настройку Smarty, т.к. базовый файл конфигурации может быть перезаписан после установки обновлений.
Конфигурация производится путем присваивания значений переменным на Python.
2.4.1.1. Обслуживание нескольких инстансов Smarty на одном сервере¶Для удобства конфигурации и размещения на одном сервере нескольких инстансов Smarty рекомендуется вместо использования файла настроек prod.py создать собственный файл с кратким символическим именем, совпадающим с названием сервиса, например myiptv.py .
Данное имя затем также рекомендуется использование как суффикс или префикс в именах файлов конфигурации nginx, uwsgi, именах папок для логов, pid-файлов и др.
2.4.2. Описание параметров конфигурации Smarty¶ 2.4.3. Добавление лицензионного ключа сервера Smarty¶Каждый инстанс Smarty привязывается к аппаратной и программной конфигурации сервера лицензионным ключом, который может быть ограничен по времени действия и максимальному числу настроенных Client ID (см. Мультипровайдер ).
Лицензионный ключ настраивается в файле конфигурации в следующих переменных:
Для получения ключа необходимо обратиться к своему менеджеру по договору.
2.4.4. Настройка кеширования¶Для кеширования используется сервер Redis - является обязательным компонентом системы. Требуется версия Redis >= 2.6.
По умолчанию конфигурация подразумевает локальную установку сервера Redis на тот же сервер Smarty, однако при необходимости их можно разделить. Для изменения параметров подключения к Redis необходимо в конфигурации Smarty прописать массив CACHES следующим образом:
В файле конфигурации Redis /etc/redis/redis.conf необходимо прописать:
Для вступления изменений в силу требуется перезагрузить Redis и uwsgi.
Также поддерживается работа в кластерном режиме с группой серверов Redis, пример настройки:
2.4.5. Настройка модуля геолокации¶Поддерживается несколько локаторов на основе IP-адреса абонента, работающие с разными источниками гео-данных. В служебной панели администрирования для настраиваемого Client ID необходимо установить используемый локатор, наиболее подходящий для оператора и его региона оказания услуг.
Если до изменения локатора база данных стран и городов уже была заполнена, то рекомендуется очистить её.
Все локаторы требуют создания/обновления своей базы данных. База данных может быть в виде SQL-таблиц или бинарных данных (либо и то, и то).
2.4.5.1. Локатор django-geoip (ipgeobase) - DEPRECATED¶Команда для обновления базы:
Создание стран и городов на основе данных django-geoip (работает только если в системе нет ни одной страны и города):
2.4.5.2. Локатор ip2location¶Эта команда скачивает бинарную базу данных для определения местоположения и CSV-базу для создания справочника городов и стран.
Создание стран и городов на основе данных ip2location (работает только если в системе нет ни одной страны и города):
После выбора локатора и синхронизации данных механизм геолокации готов к использованию. Доступность тех или иных сервисов Middleware (телеканалы, фильмы, стриминг-сервисы, опции и т.д.) определяется тарифными пакетами (см. Возможности тарификации ), в настройках которых можно указать те страны и города, в которых они действуют.
2.4.6. Настройка модуля мониторинга видеопотоков¶ 2.4.7. Настройка модуля статистики и отчетов¶ 2.4.8. Настройка модуля сбора статистики по абонентам¶ 2.4.9. Настройка модуля мониторинга устройств¶ 2.4.10. Настройка модуля отправки SMS¶SMS отправляются системой при использовании виджетов, интегрированных с сайтом, например, во время регистрации абонента. Настройки задаются переменными в файле конфигурации Smarty.
SMS_BACKED str Используемый СМС-шлюз для отправки сообщений. Модуль, реализующий взаимодействие со шлюзом, должен располагаться в директории Smarty в папке sms/backends/ . SMS_ATTEMPTS int Количество максимальных попыток отправки сообщения, после которого оно считается отправленным неуспешно.
2.4.10.1. Шлюз smsc.ru¶Значение для SMS_BACKEND = 'sms.backends.smscru.SMSCBackend'
SMSC_LOGIN str Имя пользователя в сервисе smsc.ru SMSC_PASSWORD str Пароль в сервисе smsc.ru SMSC_SENDER str Имя отправителя, которое будет отображаться в SMS, отправленных через сервис smsc.ru
2.4.10.2. Шлюз mobipace.com¶Значение для SMS_BACKEND = 'sms.backends.mobipace.MobipaceBackend'
MOBIPACE_LOGIN str Имя пользователя в сервисе mobipace. MOBIPACE_PASSWORD str Пароль в сервисе mobipace. MOBIPACE_SENDER str Имя отправителя, которое будет отображаться в SMS, отправленных через сервис mobipace.com
2.4.10.3. Шлюз pulseem.co.il¶Значение для SMS_BACKEND = 'sms.backends.pulseem.PulseemBackend'
PULSEEM_APIKEY str Ключ API Pulseem PULSEEM_SENDER_NAME str Имя отправителя, которое будет отображаться в SMS, отправленных через сервис pulseem.co.il
2.4.10.3. Шлюз sms-assistent.by¶Значение для SMS_BACKEND = 'sms.backends.sms-assistent.SmsAssistentBackend'
SMS_ASSIST_USERNAME str Имя пользователя в админке sms-assistent.by SMS_ASSIST_PASSWORD str Пароль от админки sms-assistent.by SMS_ASSIST_SENDER_NAME str Имя отправителя, которое будет отображаться в SMS, отправленных через сервис sms-assistent
2.4.11. Подключение системы мониторинга ошибок Sentry¶Для подключения Sentry необходимо в файле конфигурации Smarty добавить в INSTALLED_APPS модуль raven.contrib.django.raven_compat и прописать параметры подключения:
Строку подключения можно получить из настроек проекта в Sentry.
2.4.12. Настройка nginx и uwsgi¶Образец файла конфигурации для nginx находится в файле /etc/nginx/sites-available/smarty .
Конфигурация для uwsgi находится в файлах /etc/uwsgi/apps-available/smarty и /etc/microimpuls/smarty/uwsgi/smarty.uwsgi , на него (или на другой используемый конфиг) должен указывать симлинк в /usr/share/nginx/html/microimpuls/smarty/<uwsgi settings name>.uwsgi .
2.4.13. Настройка мультиязычности контента в Smarty¶Smarty позволяет сохранять в базе данных контент с названиями локализуемых полей на разных языках - например, названия телеканалов, фильмов, категорий, жанров, EPG и др. Чтобы активировать этот механизм, необходимо добавить в файл конфигурации параметр SMARTY_ADDITIONAL_LANGUAGES с перечнем необходимых языков (не более 5 дополнительных к основному языков), а также указать основной язык. Названия языков должны совпадать с названием локализации в абонентском приложении, по умолчанию используются двухбуквенные названия.
SMARTY_DEFAULT_LANGUAGE str Название основного языка. По умолчанию ru . SMARTY_ADDITIONAL_LANGUAGES list Список дополнительных языков, задается в квадратных скобках с указанием значений через запятую, например: [ 'en', 'fr', 'de', 'es', 'pt' ] По умолчанию пустой.
После настройки параметров мультиязычности и перезагрузки uwsgi в панели администратора Smarty в полях формы локализуемых полей появится возможность указать название на дополнительных языках.
Для того, чтобы сервер Smarty в ответе на запрос API вернул значение на нужном языке, необходимо дополнительно передавать параметр lang . Подробнее в документации TVMiddleware API.
2.5. Системные команды Smarty и настройка crontab¶
Внимание! Некоторые команды планировщика являются обязательными для функционирования сервиса.
2.5.1. Кеширование списка телеканалов для абонентских устройств¶Рекомендуется запускать эту команду каждую минуту. При пустом кеше списка телеканалов абоненту будет выдаваться сообщение, что список телеканалов пуст.
2.5.2. Импорт EpgChannel¶Данная команда поможет загрузить все каналы или обновить иконки из определенного источника. Для запуска обязательно необходимо указать epg_source_id или --epg_source_name .
Если команда вызывается для загрузки иконок или загрузки всех каналов из EpgChannelSource, то к загруженным иконкам по возможности будут созданы более маленькие копии следующих размеров: 500x500 , 120x91 и 40x40 .
Для источника обязательно должен существовать EpgChannelSource с указанием маски URL источника каналов. Для источников, у которых нет общего списка необходимо указывать epg_channel_id или channel_id .
Аргументы для запуска:
--epg_source_id Идентификатор EpgSource, для которого необходимо произвести импортирование каналов. --epg_source_name Имя EpgSource, для которого необходимо произвести импортирование каналов. --epg_channel_id Идентификатор EpgChannel, для которого необходимо произвести импортирование. --channel_id Идентификатор Channel, для которого необходимо произвести импортирование. --reimport_icons Если указан этот аргумент, то для всех импортированных каналов будет произведено обновление иконок. --force_import Загрузка всех каналов из источника. Если указан данный аргумент то все аргументы кроме epg_source_id и epg_source_name будут проигнорированы. --force_parser_handling Принудительно разрешает использовать передачу управления парсеру (равносильно TVMW_EPG_IMPORT_ALLOW_PARSER_HANDLING=True ) --force_disable_parser_handling Принудительно запрещает использовать передачу управления парсеру (равносильно TVMW_EPG_IMPORT_ALLOW_PARSER_HANDLING=False ) --fix_duplicates Удаляет дубликаты телеканалов с одним и тем же внешним идентификатором в рамках одного источника EPG. --verbose Включает подробный вывод информации о загружаемых из источника иконках.
Использование опций –force_parser_handling и –force_disable_parser_handling приоритетнее параметра TVMW_EPG_IMPORT_ALLOW_PARSER_HANDLING.
Пример команды для повторного импортирования иконок для одного канала:
2.5.3. Импорт EPG¶Рекомендуется запускать импорт несколько раз в день для поддержания актуальности телепрограммы (см. Настройка EPG и телеканалов ). Если не произвести импорт EPG, то программа телепередач на устройстве абонента будет пустой.
Для того чтобы произвести импорт EPG для одного определенного источника необходимо передать параметр --epg_source_id или --epg_source_name .
В данную команду можно также передать параметр --epg_channel_id для импорта EPG только для определенного EpgChannel.
Также с помощью параметра --actual_days можно указать количество дней, когда загруженные EPG считаются актуальными, то есть все EPG, старше чем указанное количество дней, будут удалены.
Опция --force_reimport предназначена для принудительного импорта EPG с игнорированием даты последнего обновления.
С помощью опции --client_id можно ограничить создание объектов телепередачи только конкретным Client (опция актуальная для Smarty с несколькими Client).
Также эта команда позволяет генерировать на основе загруженного EPG контент и подборки, для этого необходимо передать параметр --create_content . Если необходимо только сгенерировать контент и подборки, то помимо предыдущего параметра нужно передать параметр --ignore_epg_import . Для данной опции работает фильтрация по EpgChannel и по источнику, однако генерироваться контент будет __для всех встречаемых EPG__ , а не только загруженных.
2.5.4. Импорт EPG-премьер¶Рекомендуется запускать 1-2 раза в день для поддержки актуальности списка премьер (см. Настройка EPG и телеканалов ). Если не произвести импорт, то список премьер на устройстве абонента будет пустой.
В данную команду можно также передать параметр --epg_channel_id для импорта премьер только для определенного EpgChannel.
2.5.5. Команда списания/продления аккаунтов с помощью встроенного биллинга согласно рассчетным периодам¶Команда осуществляет деактивацию аккаунтов, для которых подошел к концу расчетный период, а также производит списание средств и продление действующих аккаунтов. Рекомендуется запускать каждую ночь (см. Описание встроенного биллинга ).
2.5.6. Опрос анализаторов TS-потоков MicroTS (модуль мониторинга видеопотоков)¶ 2.5.7. Рассылка информационных сообщений на экраны устройств и email о приближении срока деактивации/необходимости оплаты¶При указании параметра --send_sms сообщения также будут рассылаться с помощью sms в случае, если у абонента указан номер телефона.