1. Домой
  2. Документы
  3. Smarty Lite
  4. Инструкция по установке
  5. Установка Smarty Lite на Debian 10

Установка Smarty Lite на Debian 10

Ниже приведена инструкция по установке Smarty Lite на сервер с ОС Debian Buster. Информацию о настройке тех или иных функций или сервисов платформы Smarty Middleware, которую вы не найдёте здесь, вам следует искать на странице помощи полной версии Smarty: ссылка.

Для работы потребуется SSH доступ к серверу с правами root. Установка будет производится в консольном режиме через команды терминала. Если для получения привилегий root требуется выполнить команду sudo, то перед началом установки необходимо выполнить команду:

sudo su

Установка необходимых пакетов и библиотек

Устанавливаем зависимости с помощью apt:

apt update
apt install git python-dev libtiff-dev libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev python-tk uwsgi uwsgi-plugin-python redis-server build-essential wget pwgen libmariadb-dev nginx

Далее устанавливаем утилиту pip, она потребуется для установки используемых python-библиотек:

wget https://bootstrap.pypa.io/get-pip.py && python get-pip.py && rm get-pip.py 

Далее необходимо скачать установочные deb-пакеты smarty-lite и python2.7-jsonrpctcp и установить их:

dpkg -i smarty-lite*.deb
dpkg -i python2.7-jsonrpctcp_*.deb

Будьте внимательны — необходимо использовать установочный пакет Smarty Lite именно для версии Debian Buster, он располагается в директории buster. В противном случае при выполнении дальнейших команд может возникнуть ошибка undefined symbol: PyFPE_jbuf.

При возникновении ошибки

dpkg: warning: 'ldconfig' not found in PATH or not executable
dpkg: warning: 'start-stop-daemon' not found in PATH or not executable

выполните следующую команду:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

После этого попробуйте установить пакеты еще раз.

После установки основных пакетов необходимо выполнить установку python-библиотек, используемых в Smarty. Для этого сначала нужно выполнить (только для Debian Buster):

cp /usr/share/microimpuls/smarty-lite/requirements.txt ./temp.txt && cat ./temp.txt | grep -vE '^[Mm]y[Ss][Qq][Ll]-python==.*' > /usr/share/microimpuls/smarty-lite/requirements.txt && rm ./temp.txt 
pip install mysql-connector
pip install mysql-connector-python
pip install mysqlclient

Затем установить python-библиотеки:

pip install -r /usr/share/microimpuls/smarty-lite/requirements.txt 

Установка СУБД для работы Smarty Lite

Smarty Lite поддерживает различные СУБД, в базовом варианте рекомендуется использовать MySQL или MariaDB, для Debian Buster устанавливаем MariaDB:

apt install mariadb-server

Создаём пользователя для подключения Smarty Lite в БД и указываем пароль в настройках Smarty Lite:

export DBPASSWORD=`pwgen -s 16`
echo "CREATE DATABASE smarty CHARACTER SET = utf8;" | mysql -u root
echo "SET default_storage_engine=InnoDB;" | mysql -u root
echo "CREATE USER 'smarty'@'localhost' IDENTIFIED BY '$DBPASSWORD';" | mysql -u root
echo "GRANT ALL PRIVILEGES ON smarty.* TO 'smarty'@'localhost';" | mysql -u root
echo "FLUSH PRIVILEGES;" | mysql -u root
sed -i -e 's/PUT DB PASSWORD HERE/'"$DBPASSWORD"'/g' /etc/microimpuls/smarty-lite/smarty-lite.py

Последняя команда заменяет строку «PUT DB PASSWORD HERE» на сгенерированный автоматически пароль в файле /etc/microimpuls/smarty-lite/smarty-lite.py — файл настроек Smarty Lite.

В файле настроек Smarty Lite по умолчанию указаны настройки подключения к локально установленной СУБД MySQL (или совместимой с ней MariaDB), однако при необходимости можно установить СУБД на другую машину.

Подготовка конфигурации Web-сервера nginx и сервера приложений uWSGI

Прописываем секретный ключ для работы внутренних механизмов защиты Smarty Lite:

export SECRETKEY=`pwgen -s 32`
sed -i -e 's/PUT RANDOM SECRET KEY HERE/'"$SECRETKEY"'/g' /etc/microimpuls/smarty-lite/smarty-lite.py

Активируем конфигурацию Smarty Lite для nginx и uwsgi:

ln -s /etc/nginx/sites-available/smarty-lite /etc/nginx/sites-enabled/smarty-lite
ln -s /etc/uwsgi/apps-available/smarty-lite.ini /etc/uwsgi/apps-enabled/smarty-lite.ini

Создаем директорию для кеша и логов nginx:

mkdir /var/cache/nginx
mkdir -p /var/log/nginx/microimpuls/smarty-lite

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

echo "net.core.somaxconn=4096" >> /etc/sysctl.conf
sysctl -p

Установим правильные права на директории для логов и загрузки файлов в Smarty:

chown -R www-data:www-data /var/log/microimpuls
chown -R www-data:www-data /usr/share/microimpuls

Установка лицензионного ключа

Дальше необходимо прописать лицензионный ключ.

Для получения лицензионного ключа вам необходимо использовать HW key — отпечаток машины, на котором установлена Smarty Lite. Для его получения необходимо запустить uwsgi:

/etc/init.d/uwsgi restart

А затем в файле /var/log/uwsgi/app/smarty-lite.log найти значение HW key, или воспользоваться командой:

cat /var/log/uwsgi/app/smarty-lite.log | grep "Exception: Key incorrect, HW key"

Например, полученный HW key будет иметь следующий вид:

9eb4a0c2b360c93e32cf2471780cda494705f0a9d026c69fe033d8c8

Это значение необходимо вставить в соответствующее поле в окне генерации лицензии в личном кабинете оператора, после чего скопировать получившийся ключ со всеми параметрами лицензии, которые необходимо прописать в файл конфигурации /etc/microimpuls/smarty-lite/smarty-lite.py.

Генерация лицензии вызывается по кнопке «Сгенерировать новый лицензионный ключ» в соответствующем продукте в ЛК.

Установка схемы БД

Выполним установку схемы базы данных Smarty Lite с помощью встроенного механизма миграций данных:

python /usr/share/microimpuls/smarty-lite/manage.py migrate --settings=settings.smarty-lite

Запуск сервисов

Перезапустим nginx и uwsgi с актуальными настройками:

/etc/init.d/nginx restart
/etc/init.d/uwsgi restart

Установка системных настроек и примера конфигурации

Для быстрого старта использования Smarty Lite мы подготовили команду, которая установит системные настройки и создаст примеры данных — наборы телеканалов, EPG, тарифы, стриминг-сервисы и другие объекты, необходимые для работы сервиса IPTV & OTT. Для этого выполните:

python /usr/share/microimpuls/smarty-lite/manage.py setup_initial_data --settings=settings.smarty-lite

Затем вы сможете отредактировать их и добавить свои данные.

Настройка регулярных команд в crontab

Для корректной работы Smarty Lite и актуализации данных абонентов требуется настроить в crontab выполнение команд по расписанию, для этого в конце файла /etc/crontab добавьте следующие строки:

*/1 * * * * root python /usr/share/microimpuls/smarty-lite/manage.py cache_channel_list --settings=settings.smarty-lite
0 5,9,13 * * * root python /usr/share/microimpuls/smarty-lite/manage.py epg_import --settings=settings.smarty-lite
0 3 * * * root python /usr/share/microimpuls/smarty-lite/manage.py clean_old_messages --days_count 3 --settings=settings.smarty-lite

Первая команда обновляет кеш телеканалов. Вторая команда импортирует EPG (телегид) каждые сутки 3 раза — в 5:00, 9:00 и 13:00 по времени сервера. Третья команда очищает старые недоставленные до абонентов текстовые сообщения и команды (с датой создания старше трех дней).

Создание пользователя и начало работы

Управление сервисом IPTV & OTT в Smarty Lite осуществляется через Web-панель управления.

Далее создадим пользователя с правами суперадминистратора для доступа в панель управления:

export ADMINPASSWORD=`pwgen -s 16`
python /usr/share/microimpuls/smarty-lite/manage.py create_user --settings=settings.smarty-lite --reset_password=False --username=admin --password=`echo $ADMINPASSWORD` --is_admin=True --client_id=1 --is_superuser=True
echo $ADMINPASSWORD

Последняя команда выведет сгенерированный пароль — сохраните его.

Затем открываем в браузере панель управления Smarty Lite http://X.X.X.X:8180 и авторизуемся созданным пользователем (в нашем примере это admin и пароль, сгенерированный выше):

Экран авторизации в Smarty Lite

Далее необходимо установить и настроить абонентский портал, соединив его с API Smarty Lite. Через портал абонент получает доступ к сервисам IPTV & OTT.