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

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

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

sudo su -

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

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

apt update
apt install git libtiff-dev libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev python3-tk uwsgi uwsgi-plugin-python3 redis-server build-essential wget pwgen libmariadb-dev nginx python-is-python3 python3-pip python3-pip-whl python3-setuptools-whl python3-venv python3.11-venv

Далее необходимо скачать установочный deb-пакет:

dpkg -i smarty-lite*.deb

Для дальнейшей работы потребуется установить Smarty Lite в виртуальное окружение и установить необходимые библиотеки для работы:

smarty_manage venv-install
smarty_manage requirements

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

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

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

apt install mariadb-server

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

export DBPASSWORD=`pwgen -s 16 1`
echo "CREATE DATABASE smarty CHARACTER SET = utf8;" | mysql -u root
echo "SET default_storage_engine=InnoDB;" | mysql -u root
echo "CREATE USER 'smarty'@'%' IDENTIFIED BY '$DBPASSWORD';" | mysql -u root
echo "GRANT ALL PRIVILEGES ON smarty.* TO 'smarty'@'%';" | 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 1`
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 -p /var/cache/nginx/smarty-lite
mkdir -p /var/log/nginx/microimpuls/smarty-lite

Конфигурируем хранение кеша nginx в tmpfs:

echo tmpfs /var/cache/nginx/smarty-lite tmpfs defaults,size=1200M 0 0 >> /etc/fstab
systemctl daemon-reload
mount -a

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

echo "net.core.somaxconn=64000" >> /etc/sysctl.conf
systemctl daemon-reload
sysctl -p

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

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

При каждом рестарте uWSGI не забудьте убедиться, что старые процессы uWSGI убиты (можно посмотреть с помощью ps aux | grep uwsgi и обратить внимание на процессы с более ранним временем старта и убить их с помощью kill -9 при необходимости).

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

cat /var/log/uwsgi/app/smarty-lite.log | grep "HW key"

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

9eb4a0c2b360c93e32cf2471780cda494705f0a9d026c69fe033d8c8

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

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

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

После добавления конфигурации лицензии необходимо проверить, что она валидна. Для этого нужно перезапустить uWSGI и проверить логи на отсутствие ошибок лицензии и на отсутствие Traceback логов из-за отсутствия дополнительных python библиотек.

/etc/init.d/uwsgi restart

Не забудьте убедиться, что старые процессы uWSGI убиты.

Проверяем логи:

tail -n 1000 /var/log/uwsgi/app/*.log | grep "*** Starting" -A 100

Лог последнего запуска не должен содержать ошибок «Key Incorrect» и «Traceback».

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

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

smarty_manage migrate

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

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

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

Не забудьте убедиться, что старые процессы uWSGI убиты.

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

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

smarty_manage setup_initial_data

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

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

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

*/1 * * * * root smarty_manage cache_channel_list
0 5,9,13 * * * root smarty_manage epg_import
0 3 * * * root smarty_manage clean_old_messages --days_count 3

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

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

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

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

export ADMINPASSWORD=`pwgen -s 16 1`
smarty_manage create_user --reset_password=False --username=admin --password=`echo $ADMINPASSWORD` --is_admin=True --client_id=1 --is_superuser=True
echo $ADMINPASSWORD

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

Для корректного отображения картинок/стилей в Django-админке необходимо поправить в каталоге
/etc/nginx/sites-enabled/smarty* путь к пакету django для текущей версии python.
Для этого необходимо обновить пути для следующих location:

location ^~ /admin/media/css/ {
    alias /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/css/;
}
location ^~ /admin/media/img/ {
    alias /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/img/;
}
location ^~ /admin/media/js/ {
    alias /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/js/;
}
location ^~ /media/static/admin/css/ {
    alias /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/css/;
}
location ^~ /media/static/admin/img/ {
    alias /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/img/;
}
location ^~ /media/static/admin/js/ {
    alias /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/js/;
}

Для установленного python версии 3.11.2 (проверить версию python можно командой python --version) в alias следует вместо 2.7 указать новую версию — 3.11. Для этого нужно прописать:

sudo sed -i -e 's/python2.7/python3.11/g' /etc/nginx/sites-available/smarty*

Перезапускаем nginx для применения изменений:

systemctl restart nginx

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

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

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

После установки портала необходимо не забыть заменить в nginx конфигурации портала location srv1 на mw1 и затем перезагрузить конфигурацию nginx:

sudo sed -i -e 's/svr1/mw1/g' /etc/nginx/sites-available/portal
/etc/init.d/nginx reload