Содержание статьи
Меломаны знают, что составлять 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
Этот скрипт выполняет минимальную настройку безопасности сервера БД — чтобы тебя никто не хакнул. Хакнуть все равно хакнут, но так ты не позволишь сделать это первому попавшемуся школьнику. Что отвечать на вопросы скрипта, показано на следующих скринах.
![Безопасная настройка MySQL Безопасная настройка MySQL](https://static.xakep.ru/images/fecef58c99f4652b399e3f64703e1a5b/25274/1.png)
![Безопасная настройка MySQL. Продолжение Безопасная настройка MySQL. Продолжение](https://static.xakep.ru/images/fecef58c99f4652b399e3f64703e1a5b/25275/2.png)
Затем нужно создать базу данных для 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 *
![Сервер готов к установке Sonerezh Сервер готов к установке Sonerezh](https://static.xakep.ru/images/fecef58c99f4652b399e3f64703e1a5b/25276/3.png)
![Репозиторий клонирован Репозиторий клонирован](https://static.xakep.ru/images/fecef58c99f4652b399e3f64703e1a5b/25277/4.png)
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»