Содержание статьи
Меломаны знают, что составлять MP3-коллекцию — довольно трудоемкое занятие: нужно найти сайт с музыкой, скачать композиции (как правило, загружается только одна композиция за один раз), попытаться воспроизвести, обнаружить, что есть проблемы с отображением ID3-тегов или с форматом, преобразовать эти файлы, чтобы их можно было воспроизводить в любимом проигрывателе… В общем, нужно потратить много времени. Стриминг‑сервисы решают эти проблемы: нашел нужные композиции, добавил их в плейлист — и наслаждаешься воспроизведением. Собственно, незачем обо всем этом рассказывать — все и так всё понимают. Лучше покажу, как создать собственный стриминг‑сервис.
Используем готовое
Очевидно, мы не будем писать собственный сервис с нуля. Вместо этого предлагаю установить бесплатное приложение Sonerezh, позволяющее организовать полноценный многопользовательский стриминг‑сервис. Приложение написано на PHP, а поэтому его исходный код полностью открыт. Настройка сервиса будет продемонстрирована на базе Ubuntu 21.10 — последней версии убунты на данный момент.
Как обычно, устанавливаем суповой набор — Apache, MySQL, PHP:
sudo apt install apache2
sudo a2enmod rewrite
sudo apt install mysql-server
Вторая команда включает mod_rewrite
— чтобы ты потом не ломал голову, почему перезапись URL не работает. А вот с установкой PHP будет сложнее, чем обычно. Дело в том, что в состав Ubuntu 21.10 входит PHP 8.0, но Sonerezh на этой версии работать отказался, поэтому установим сразу проверенную версию — 7.2. Пусть она и не самая новая, зато все гарантированно будет работать.
Вводим команды:
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php –y
Скорее всего, ты с ними знаком. А если нет, то они добавляют репозиторий ppa:
, содержащий различные версии PHP. Далее устанавливаем PHP и необходимые расширения:
sudo apt-get install php7.2 php7.2-mysql php7.2-intl php7.2-cli php7.2-gd php7.2-mbstring php-pear php7.2-curl php7.2-mysqlnd php7.2-mcrypt git ffmpeg
Версию PHP нужно указывать обязательно, иначе установится 8-я версия из дефолтного репозитория Ubuntu. Пакеты git
и ffmpeg
, хотя и не имеют отношения к PHP, пригодятся для нормальной работы и обновления Sonerezh.
Теперь будем все это настраивать. Первым делом нужно создать пользователя БД. Процедура стандартная. Сначала вводим команду
sudo mysql_secure_installation
Этот скрипт выполняет минимальную настройку безопасности сервера БД — чтобы тебя никто не хакнул. Хакнуть все равно хакнут, но так ты не позволишь сделать это первому попавшемуся школьнику. Что отвечать на вопросы скрипта, показано на следующих скринах.
Затем нужно создать базу данных для Sonerezh и пользователя для этой БД:
mysql –u root –p
После того как увидишь приглашение mysql>
, введи следующие команды:
create database sonerezh;create user sonerezh@localhost identified by 'Secret2022';grant all on sonerezh.* to sonerezh@localhost;alter user sonerezh@localhost identified with mysql_native_password by 'Secret2022';flush privileges;exit
Несколько замечаний. Во‑первых, если ты думаешь, что зря все это читаешь, поскольку в сети где‑то лежит мануал по настройке Sonerezh, то нет, не зря: в нем есть ошибка, связанная с использованием старой версии MySQL (до версии 5.7). В новой версии приведенные в том руководстве операторы работать не будут. Во‑вторых, здесь я задал одинаковое имя для базы данных и пользователя — это необязательно. Ты можешь указать различные имена, как тебе будет угодно. Пароль для нового пользователя (Secret2022
_), разумеется, нужно указать другой. В‑третьих, оператор alter
нужен, если у тебя MySQL 8.0 (в Ubuntu 21.10 как раз эта версия), иначе ты не сможешь подключиться к БД через PHP, следовательно, и Sonerezh не сможет это сделать. Этого тоже, кстати, в официальном мануале нет.
С MySQL все. Теперь перейдем к Apache и PHP. Открой файл /
. Найди в нем директиву memory_limit и измени ее таким образом:
memory_limit = 256M;
С помощью этого действия мы выделяем память, доступную PHP-скриптам, выполняемым модулем Apache. 256 Мбайт пока будет достаточно, в будущем, возможно, это значение придется увеличить. Все зависит от нагрузки на твой стриминг‑сервис и размера его медиатеки.
Создай в каталоге /
файл info.
со следующим контентом:
<?phpphpinfo();?>
Перезапусти «Апач»:
sudo systemctl restart apache2
Открой браузер и введи URL http://
. Если ты увидишь то же самое, что показано на скриншоте ниже, значит, ты все сделал правильно. Особое внимание удели версии PHP — она должна быть 7.2. На всякий случай убедись, что значение директивы memory_limit
(оно приводится в выводе скрипта info.
) применилось.
Установка Sonerezh и импорт музыки
Теперь наш сервер полностью готов для установки самого стриминг‑приложения. Введи следующие команды:
cd /var/www/html
sudo rm *wget https://github.com/Sonerezh/sonerezh/releases/download/v1.2.6/sonerezh-1.2.6.zip
unzip sonerezh-1.2.6.zip
Также нам понадобится папка music
для хранения музыки. Создадим ее в папке sonerezh
, но в реальном проекте лучше выделить для хранения медиатеки папку за пределами DocumentRoot
:
sudo mkrdir /var/www/html/sonerezh/music
Не забываем изменить права доступа:
cd /var/www
sudo chown –R www-data:www-data *
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»