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

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

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

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

sudo su -

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

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

apt update
apt install python3 python3-pip
apt install git python3-dev 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

Создаём симлинки, чтобы по умолчанию у нас использовался python3 и pip3

ln -f -s /usr/bin/python3 /usr/bin/python
ln -f -s /usr/bin/pip3 /usr/bin/pip

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

dpkg -i smarty-lite*.deb
wget http://dl.micro.im/packets/release/python3-jsonrpctcp/jsonrpctcp-0.2.0.tar.gz
pip install jsonrpctcp-0.2.0.tar.gz
wget http://dl.micro.im/packets/release/ujson/bullseye/ujson-2.0.4.dev0.tar.gz
pip install ujson-2.0.4.dev0.tar.gz

Будьте внимательны — необходимо использовать установочный пакет 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):

pip install mysql-connector
pip install mysql-connector-python
pip install mysqlclient

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

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

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

Smarty Lite поддерживает различные СУБД, в базовом варианте рекомендуется использовать MySQL или MariaDB, для Debian Buster устанавливаем 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 /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

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

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

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

ln -s /etc/microimpuls/smarty-lite/smarty-lite.py /usr/share/microimpuls/smarty-lite/settings/smarty-lite.py

Далее для получения лицензионного ключа вам необходимо использовать 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 1`
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.