今回はストリーミングサーバーの勉強がしたく,また,ちょうどAWSが無料利用枠期間内だったので,勉強の第一段階としてオープンソースであるCherryMusicをEC2上で常駐化させてみようという試みをしたい.これはあくまでメモ程度として見てもらえるとありがたい.
実行環境
- Ubuntu Server 16.04 LTS (AWS EC2, Instance types:t2.micro)
- python 3.6.3
CherryMusicとは
CherryPyとjPlayerをベースとした音楽ストリーミングサーバー.
複数のユーザーがWebブラウザを使用してHTTP / HTTPS経由でログインしたり、音楽データベースをブラウズしたり、検索したり、プレイリストを管理する事ができる.
CherryMusicを動かすまで
前準備
EC2 Management
セキュリティグループで指定するポートへの接続を受け入れるようにしておく必要がある.
使うインスタンスのセキュリティグループのインバウンドルールにルールを追加しておく事.
なお,自分の設定ではポート8080を用いるため,以下のような設定にしている.
また,後々使うのでグローバルIPを確認しておく事.
仮想サーバー内での前準備
CherryMusicはpython2系では2.6以上,3系では3.2以上で動く.
要件を満たさないpythonを用いている場合は各自で用意してほしい.
Pyenv等でバージョン管理をしておくと楽.
セットアップ
CherryMusicと依存関係パッケージの用意
各自,任意のディレクトリで以下のコマンドを実行.
CherryMusicをダウンロードできる.
git clone -b master https://github.com/devsnd/cherrymusic.git
次に依存関係パッケージをインストールする.コーデック周りがほとんど.
以下のコマンドでインストール.
sudo apt install lame vorbis-tools flac faad mpg123 opus-tools ffmpeg imagemagick
サーバーの設定
最後にサーバーの細かい設定を行う.
ありがたいことにブラウザで初期設定を行うページが用意されている.cherrymusicがダウンロードされたディレクトリで以下のコマンドを実行.
python cherrymusic --setup --port 8080
控えておいたグローバルIPを使って,ポート8080へブラウザでアクセス.
以下のようなページが表示される.
基本的にはmedia base directoryを音楽ファイルを入れているディレクトリにしておいて,あとはデフォルトの設定でok.
なお,system capabilitiesの部分は先ほど入れた依存パッケージが入っているかが表示されている.
failedの表示があった場合は入れ忘れているか,失敗している可能性があるので再インストールを試みてほしい.
ひとまず,セットアップはこれで終了.
以後はcherrymusicを入れたディレクトリで以下のコマンドを実行する.
上記で設定した内容に基づいて,サーバーが立ち上がる.
python cherrymusic
サーバーの常駐化
CherryMusicを手動でフォアグラウンド・バックグラウンド実行かを管理するのはめんどくさい.
また,アプリが落ちてしまった時はリスタートするようにしておきたい.
そのため,supervisorを使って管理を自動化した.
supervisorとは
supervisorとは軽量なプロセスの管理,監視ツール.
supervisorのインストール
sudo apt install supervisor
もしくは,
pip install supervisor
設定
インストールしたらWebアプリの起動情報を書き込む.
/etc/supervisor/conf.d/へconfファイルを作成する.
筆者は以下のように設定した.
commandの部分は各自のPCの設定に基づいて書き換えてほしい.
[program:cherrymusicServer]
; directory=/home/ubuntu/files/music
command=/home/ubuntu/.pyenv/shims/python /home/ubuntu/server/cherrymusic/cherrymusic
numprocs=1
autostart=true
autorestart=true
user=ubuntu
redirect_stderr=true
stdout_logfile=/var/log/supervisor/cherrymusic.log
サーバー起動
supervisorから以下のコマンドでcherrymusicを起動する.
sudo supervisorctl start cherrymusicServer
なお,プロセス名は設定ファイルの[program:OOOO]のOOOOの部分で変わるので適宜変えてほしい.
あとは前と同じようにグローバルIPの指定ポートへブラウザにアクセスすれば,幸せになれる.
ちょっと使って見たが,CherryMusic自体にバグがありそう.
今後は少しCherryMusicのバグ潰しをしたり,内部構造がどうなってるかを見ていきたいと思う.
(追記:就活つれぇ.)