1. Домой
  2. Документы
  3. Smarty (English version)
  4. Installation instructions
  5. Installing Smarty on Debian 11

Installing Smarty on Debian 11

This article describes two options for installing Smarty: on a single server and on multiple servers.

Installing Smarty and components on a single Debian 11 server

SSH access to the server with root privileges will be required. Installation will be performed in console mode via terminal commands. If the sudo command is required to obtain root privileges (the server administrator is responsible for installing sudo), you must run the command before starting the installation:

sudo su -

Installing the necessary packages

You need to install the dependencies via 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-common nginx nginx-extras python3-pip python-is-python3

Next, you need to download the Smarty and Portal installation deb packages (available in your personal account), jsonrpctcp and ujson and install them:

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

Note: The Smarty installation package for the Debian Bullseye version must be used, it is located in the bullseye directory. Otherwise, the error undefined symbol: PyFPE_jbuf may occur during further commands .

After installing the main packages, you need to install the Python libraries used in Smarty. To do this, you need to execute:

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

To regulate the number of open files in /etc/security/limits.conf, you must specify at the end of the file:

*    soft nofile   200000
*    hard nofile   200000

Configuring Redis

In case Smarty and Redis are installed on the same server, add the following parameters to the /etc/redis/redis.conf file:

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

Due to the fact that settings for the number of open files are not always accepted, this must be enforced in /etc/default/redis-server by changing the ULIMIT parameter to 200000, and in /lib/systemd/system/redis-server.service by changing the LimitNOFILE value to 200000.

Restart Redis:

sudo systemctl daemon-reload
sudo service redis-server restart

Configuring DBMS for Smarty operation

Note: the following commands must be written under root permissions.

Smarty supports various DBMSs, in the base case it is recommended to use MySQL or MariaDB, for Debian Bullseye install MariaDB:

sudo apt install mariadb-server

Create a user to connect Smarty to the database and specify a password in the Smarty settings:

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

The last command replaces the line «PUT DB PASSWORD HERE» with the automatically generated password in the Smarty configuration file /etc/microimpuls/smarty/smarty.py.

Because the settings for the number of open files are not always accepted, this must be forced in /lib/systemd/system/mariadb.service by changing the LimitNOFILE value to 200000.

Preparing the uWSGI Application Server Configuration

A secret key must be installed for Smarty’s internal security mechanisms to work:

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

Now you need to activate the Smarty configuration for uWSGI:

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

You should also change the open socket limit for optimal uWSGI performance:

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

Then set up the correct directory permissions for logs and files in Smarty:

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

Preparing the Nginx Web server configuration

You need to activate Smarty configuration for Nginx:

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

Next, you need to create a directory for Nginx cache and logs:

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

Set the correct directory permissions for logging and uploading files to Smarty:

chown -R www-data:www-data /usr/share/nginx/html/microimpuls

Then configure Nginx cache storage in tmpfs:

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

Installing a license key

At this stage you need to specify the license key.

To get a license key, you need to use HW key — the fingerprint of the machine where Smarty is installed. To get it, you need to change settings.prod to settings.smarty in /etc/microimpuls/smarty/uwsgi/smarty.uwsgi. After that, restart uWSGI:

sudo service uwsgi restart

You should wait about a minute for uWSGI to load and only then finalize:

sudo service uwsgi stop

Every time you restart uWSGI, remember to make sure that old uWSGI processes are killed (you can check with ps aux | grep uwsgi and look for processes with earlier start times, kill them with sudo killall -9 uwsgi if necessary), and then in /var/log/uwsgi/app/smarty.log find the HW key value or use the command:

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

The resulting HW key will have the following form (example):

9eb4a0c2b360c93e32cf2471780cda494705f0a9d026c69fe033d8c8

This value should be inserted into the corresponding field in the license generation window in the operator’s personal account (the «Generate a new license key» button).

After that, copy the resulting key with all license parameters by clicking the button under the «Copy» column.

The key and parameters must be written in the configuration file /etc/microimpuls/smarty/smarty.py.

License generation is initiated by clicking the «Generate a new license key» button in the corresponding product in your personal account.

The license and all parameters are copied using the «Copy» button in the line with the license key.

After adding the license configuration, you need to check that it is valid. To do this, restart uWSGI and check the logs for license errors and for Traceback logs due to missing additional Python libraries.

sudo service uwsgi restart

Don’t forget to make sure that old uWSGI processes are killed.

Checking the logs:

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

The log of the last run must not contain «Key Incorrect» and «Traceback» errors.

Installing the database schema

It requires you to perform a Smarty database schema installation using the built-in data migration mechanism:

sudo smarty_manage migrate --settings=settings.smarty

Launching services

Command to restart Nginx and uWSGI with current settings:

sudo service nginx restart
sudo service uwsgi restart

Don’t forget to make sure that old uWSGI processes are killed.

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

Для быстрого старта использования 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-common nginx nginx-extras

Далее необходимо скачать установочные 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

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

chown -R www-data:www-data /usr/share/nginx/html/microimpuls

В конце следует настроить хранение кеша 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.

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