Smarty

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

Установка Smarty на Debian 11

Содержание показать

В данной статье описаны два варианта установки Smarty: на один сервер и на несколько серверов.

Установка Smarty и компонентов на единственном сервере c Debian 11

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

sudo su -

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

Нужно установить зависимости через APT:

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

Далее необходимо скачать установочные deb-пакеты Smarty и Portal (можно получить в личном кабинете), jsonrpctcp и ujson и установить их:

dpkg -i smarty-*.deb
wget http://dl.micro.im/packets/release/python3-jsonrpctcp/jsonrpctcp-0.2.1.tar.gz
pip install jsonrpctcp-0.2.1.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
dpkg -i mw-engine_*.deb
dpkg -i mw-template-*.deb

Внимание! Необходимо использовать установочный пакет Smarty именно для версии Debian Bullseye, он располагается в директории bullseye. В противном случае при выполнении дальнейших команд может возникнуть ошибка undefined symbol: PyFPE_jbuf.

После установки основных пакетов необходимо провести установку Python-библиотек, используемых в Smarty. Для этого нужно выполнить:

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

Для регулирования количества открытых файлов в /etc/security/limits.conf требуется указать в конце файла:

*    soft nofile   200000
*    hard nofile   200000

Настройка Redis

В случае, если установка Smarty и Redis происходит на одном сервере, следует добавить следующие параметры в файл /etc/redis/redis.conf:

stop-writes-on-bgsave-error no
save ""

Из-за того, что не всегда принимаются настройки количества открытых файлов (см. Установка необходимых пакетов), это необходимо принудительно прописать в файле /etc/default/redis-server, изменив параметр ULIMIT на 200000, и в файле /lib/systemd/system/redis-server.service, изменив значение LimitNOFILE на 200000.

Перезагрузить Redis:

sudo systemctl daemon-reload
sudo service redis-server restart

Настройка СУБД для работы Smarty

Внимание! Следующие команды необходимо прописывать под root-правами.

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

sudo apt install mariadb-server

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

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/smarty.py

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

Из-за того, что не всегда принимаются настройки количества открытых файлов (см. Установка необходимых пакетов), это необходимо принудительно прописать в файле /lib/systemd/system/mariadb.service, изменив значение LimitNOFILE на 200000.

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

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

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

Теперь нужно активировать конфигурацию Smarty для uWSGI:

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

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

sudo su -c 'echo "net.core.somaxconn=64000" >> /etc/sysctl.conf'
sysctl -p

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

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

Подготовка конфигурации Web-сервера Nginx

Необходимо активировать конфигурацию Smarty для Nginx:

sudo ln -s /etc/nginx/sites-available/smarty /etc/nginx/sites-enabled/smarty

Далее нужно создать директорию для кеша и логов Nginx:

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

Затем настроить хранение кеша Nginx в tmpfs:

sudo su -c 'echo tmpfs /var/cache/nginx/smarty tmpfs defaults,size=1200M 0 0 >> /etc/fstab'
sudo mount -a

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

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

Для получения лицензионного ключа необходимо использовать HW key — отпечаток машины, на котором установлена Smarty. Чтобы его получить, потребуется в /etc/microimpuls/smarty/uwsgi/smarty.uwsgi поменять settings.prod на settings.smarty. После этого следует перезагрузка uWSGI:

sudo service uwsgi restart

Необходимо подождать около минуты для загрузки uWSGI и только после этого завершить работу:

sudo service uwsgi stop

При каждом рестарте uWSGI не забудьте убедиться, что старые процессы uWSGI убиты (можно проверить при помощи ps aux | grep uwsgi и обратить внимание на процессы с более ранним временем старта, убить их с помощью sudo killall -9 uwsgi при необходимости), а затем в файле /var/log/uwsgi/app/smarty.log найти значение HW key или воспользоваться командой:

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

Полученный HW key будет иметь следующий вид (пример):

9eb4a0c2b360c93e32cf2471780cda494705f0a9d026c69fe033d8c8

Это значение необходимо вставить в соответствующее поле в окне генерации лицензии в личном кабинете оператора (кнопка «Сгенерировать новый лицензионный ключ»).

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

Ключ и параметры необходимо прописать в файл конфигурации /etc/microimpuls/smarty/smarty.py.

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

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

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

sudo service uwsgi restart

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

Проверка логов:

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

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

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

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

sudo smarty_manage migrate --settings=settings.smarty

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

Команда для перезапуска Nginx и uWSGI с актуальными настройками:

sudo service nginx restart
sudo service uwsgi restart

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

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

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

sudo smarty_manage setup_initial_data --settings=settings.smarty

В дальнейшем можно их отредактировать, добавив свои данные.

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

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

*/1 * * * * root python /usr/share/nginx/html/microimpuls/smarty/manage.py cache_channel_list --settings=settings.smarty
0 9,18 * * * root python /usr/share/nginx/html/microimpuls/smarty/manage.py epg_import --settings=settings.smarty
0 3 * * * root python /usr/share/nginx/html/microimpuls/smarty/manage.py clean_old_messages --days_count 3 --settings=settings.smarty

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

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

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

Данная команда выведет первый сгенерированный пароль на 16 символов:

echo pwgen -s 16

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

sudo smarty_manage createsuperuser --settings=settings.smarty

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

  • Логин
  • Пароль
  • Подтверждения пароля

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

Для корректного отображения картинок/стилей в 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.9.6 (проверить версию Python можно командой python -V) в alias следует вместо 2.7 указать новую версию — 3.9. Для этого нужно прописать:

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

Перезапустить Nginx для применения изменений:

sudo systemctl restart nginx

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

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

Настройка Smarty Portal

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

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

sudo sed -i -e 's/svr1/mw1/g' /etc/nginx/sites-available/portal
sudo service nginx restart

После всех указанных действий в файле /etc/microimpuls/portal/client.js в поле api_key нужно ввести ключ, который можно получить в админ. панели Smarty: Общие настройки -> Общие настройки Client -> TVMW API key:

Либо воспользоваться следующей командой (заменить TVMWAPIkey на свой API ключ):

sudo sed -i -e 's/PUT API KEY HERE/'TVMWAPIkey'/g' /etc/microimpuls/portal/client.js

В конфигурации Nginx по умолчанию задан специальный location /api, который направляет запросы к API в uWSGI-сокет Smarty Lite, поэтому стандартное значение параметра api_url можно не менять.

Подробнее об опциях подключения портала к Smarty и других настройках можно узнать в разделе Опции портала.

После этого нужно открыть портал в браузере для проверки правильности настройки, введя IP-адрес сервера (порт 80 по умолчанию). Если все сделано верно, то появится экран авторизации:

Можно использовать логин/пароль демо-аккаунта 123/123.

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

Установка Smarty и компонентов на несколько серверов с Debian 11

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

sudo su -

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

Если ваша абонентская база довольно большая и вы не уверены, что один сервер выдержит большое количество запросов от абонентов, то советуем разделить всё на четыре сервера: сервер с Redis, сервер с MariaDB, сервер со Smarty и сервер с Portal, однако можно сочетать несколько серверов в один (например, MariaDB + Redis, Smarty + Redis).

Команды, которые нужно прописать на разные сервера:

Redis:

sudo apt update
sudo apt install redis

MariaDB:

sudo apt update
sudo apt install pwgen mariadb-server

Smarty:

sudo apt update
sudo apt install git libtiff-dev libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev python-tk uwsgi uwsgi-plugin-python3 libmariadb-dev python3-pip  python-is-python3 python-tk
wget http://dl.micro.im/packets/release/python3-jsonrpctcp/jsonrpctcp-0.2.1.tar.gz
pip install jsonrpctcp-0.2.1.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 

Далее необходимо скачать установочные deb-пакеты Smarty (можно получить в личном кабинете) и установить на сервер:

dpkg -i smarty-*.deb

Portal:

sudo apt update
sudo apt install wget pwgen nginx

Далее необходимо скачать установочные deb-пакеты Portal (можно получить в личном кабинете) и установить на сервер:

dpkg -i mw-engine_*.deb
dpkg -i mw-template-*.deb

Также на каждом сервере стоит изменить количество открытых файлов в /etc/security/limits.conf. Для этого в конце файла прописать следующее:

*    soft nofile   200000
*    hard nofile   200000

Настройка Redis

После установки на выделенный сервер необходимо настроить Redis.

Во-первых, нужно добавить параметры в файл /etc/redis/redis.conf:

stop-writes-on-bgsave-error no
save ""

Во-вторых, изменить параметр bind со значения 127.0.0.1 на 0.0.0.0.

Внимание! Firewal должен быть настроен так, чтобы была возможность зайти только с сервера со Smarty.

Из-за того, что не всегда принимаются настройки количества открытых файлов (см. Установка необходимых пакетов), это необходимо принудительно прописать в файле /etc/default/redis-server, изменив параметр ULIMIT на 200000, и в файле /lib/systemd/system/redis-server.service, изменив значение LimitNOFILE на 200000.

Перезагрузка Redis:

sudo systemctl daemon-reload
sudo service redis-server restart

Настройка СУБД для работы Smarty

Внимание! Следующие команды необходимо прописывать под root-правами.

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

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'@'<IP>' IDENTIFIED BY '$DBPASSWORD';" | mysql -u root
echo "GRANT ALL PRIVILEGES ON smarty.* TO 'smarty'@'<IP>';" | mysql -u root
echo "FLUSH PRIVILEGES;" | mysql -u root
echo “$DBPASSWORD”
sed -i -e 's/PUT DB PASSWORD HERE/'"$DBPASSWORD"'/g' /etc/microimpuls/smarty/smarty.py

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

Так как MariaDB установлен на выделенный сервер, следует поменять IP-адрес, с которого можно будет подключиться к СУБД. Для этого в файле /etc/mysql/mariadb.conf.d/50-server.cnf нужно указать:

bind-address       =    0.0.0.0

Внимание! Firewal должен быть настроен так, чтобы была возможность зайти только с сервера со Smarty.

Из-за того, что не всегда принимаются настройки количества открытых файлов (см. Установка необходимых пакетов), это необходимо принудительно прописать в файле /lib/systemd/system/mariadb.service, изменив значение LimitNOFILE на 200000.

Настройка Smarty

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

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

Если redis-server стоит на удаленном сервере, то в smarty.py необходимо указать:

CACHES = {
default»: {
«BACKEND»: «core.cache.backends.RedisCache»,
«LOCATION»: «redis:///ip-redis-server:6379/1»,
«OPTIONS»: {
‘PICKLE_VERSION’: 5
}
},
«protected»: {
«BACKEND»: «core.cache.backends.RedisCache»,
«LOCATION»: «redis://ip-redis-server:6379/2»,
«OPTIONS»: {
‘PICKLE_VERSION’: 5
}
},
}

Также, если MariaDB стоит на выделенном сервере, то необходимо в пункте HOST прописать IP СУБД и пароль, который был сгенерирован. Если используется нестандартный порт, имя пользователя и/или название базы данных, то их тоже необходимо исправить.

Затем следует активировать конфигурацию Smarty для uWSGI:

sudo ln -s /etc/uwsgi/apps-available/smarty.ini /etc/uwsgi/apps-enabled/smarty.ini

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

sudo su -c 'echo "net.core.somaxconn=64000" >> /etc/sysctl.conf'
sysctl -p

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

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

Подготовка конфигурации Web-сервера Nginx

Необходимо активировать конфигурацию Smarty для Nginx:

sudo ln -s /etc/nginx/sites-available/smarty /etc/nginx/sites-enabled/smarty

Далее нужно создать директорию для кеша и логов Nginx:

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

В конце следует настроить хранение кеша Nginx в tmpfs:

sudo su -c 'echo tmpfs /var/cache/nginx/smarty tmpfs defaults,size=1200M 0 0 >> /etc/fstab'
sudo mount -a

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

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

Для получения лицензионного ключа вам необходимо использовать HW key — отпечаток машины, на котором установлена Smarty. Чтобы его получить, потребуется в /etc/microimpuls/smarty/uwsgi/smarty.uwsgi поменять settings.prod на settings.smarty. После этого следует перезагрузка uWSGI:

sudo service uwsgi restart

Необходимо подождать около минуты для загрузки uWSGI и только после этого завершить работу:

sudo service uwsgi stop

При каждом рестарте uWSGI не забудьте убедиться, что старые процессы uWSGI убиты (можно проверить при помощи ps aux | grep uwsgi и обратить внимание на процессы с более ранним временем старта, убить их с помощью sudo killall -9 uwsgi при необходимости), а затем в файле /var/log/uwsgi/app/smarty.log найти значение HW key или воспользоваться командой:

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

Полученный HW key будет иметь следующий вид (пример):

9eb4a0c2b360c93e32cf2471780cda494705f0a9d026c69fe033d8c8

Это значение необходимо вставить в соответствующее поле в окне генерации лицензии в личном кабинете оператора (кнопка «Сгенерировать новый лицензионный ключ»)

После этого скопировать получившийся ключ со всеми параметрами лицензии (нажав кнопку под столбцом «Копировать»)

Ключ и параметры необходимо прописать в файл конфигурации /etc/microimpuls/smarty/smarty.py.

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

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

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

sudo service uwsgi restart

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

Проверка логов:

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

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

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

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

sudo smarty_manage migrate --settings=settings.smarty

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

Команда для перезапуска Nginx и uWSGI с актуальными настройками:

sudo service nginx restart
sudo service uwsgi restart

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

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

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

sudo smarty_manage setup_initial_data --settings=settings.smarty

В дальнейшем можно их отредактировать, добавив свои данные.

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

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

*/1 * * * * root python /usr/share/nginx/html/microimpuls/smarty/manage.py cache_channel_list --settings=settings.smarty
0 9,18 * * * root python /usr/share/nginx/html/microimpuls/smarty/manage.py epg_import --settings=settings.smarty
0 3 * * * root python /usr/share/nginx/html/microimpuls/smarty/manage.py clean_old_messages --days_count 3 --settings=settings.smarty

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

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

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

Данная команда выведет первый сгенерированный пароль на 16 символов:

echo pwgen -s 16

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

sudo smarty_manage createsuperuser --settings=settings.smarty

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

  • Логин
  • Пароль
  • Подтверждения пароля

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

Для корректного отображения картинок/стилей в 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.9.6 (проверить версию Python можно командой python —version) в alias следует вместо 2.7 указать новую версию — 3.9. Для этого надо прописать:

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

Перезапустить Nginx для применения изменений:

sudo systemctl restart nginx

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

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

Настройка Smarty Portal

На сервере Smarty необходимо отредактировать файл smarty.ini, который расположен по адресу /etc/uwsgi/app-enabled. Затем следует закомментировать строку с параметром socket и указать:

socket = 0.0.0.0:4000

Можно указать любой свободный порт на сервере Smarty.

Затем требуется установить портальную часть на сервер Portal, как это описано в разделе «Установка необходимых пакетов». После этого необходимо указать:

sudo sed -i -e 's/svr1/mw1/g' /etc/nginx/sites-available/portal
sudo service nginx restart

Из сервера Smarty нужно перенести файл upstream.conf в папку /etc/nginx/conf.d на сервер с Portal. В данном файле указать IP-адрес до сервера со Smarty.

После всех указанных действий в файле /etc/microimpuls/portal/client.js в поле api_key нужно ввести ключ, который можно получить в админ. панели Smarty: Общие настройки -> Общие настройки Client -> TVMW API key:

Либо воспользоваться следующей командой (заменить TVMWAPIkey на свой API ключ):

sudo sed -i -e 's/PUT API KEY HERE/'TVMWAPIkey'/g' /etc/microimpuls/portal/client.js

В конфигурации Nginx по умолчанию задан специальный location /api, который направляет запросы к API в uWSGI-сокет Smarty Lite, поэтому стандартное значение параметра api_url можно не менять.

Подробнее об опциях подключения портала к Smarty и других настройках можно узнать в разделе Опции портала.

После этого нужно открыть портал в браузере для проверки правильности настройки, введя IP-адрес сервера (порт 80 по умолчанию). Если все сделано верно, то появится экран авторизации:

Можно использовать логин/пароль демо-аккаунта 123/123.

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