Edited at

AWSのEC2で音楽ストリーミングサーバーを動かし,常駐化するお話

More than 1 year has passed since last update.

今回はストリーミングサーバーの勉強がしたく,また,ちょうどAWSが無料利用枠期間内だったので,勉強の第一段階としてオープンソースであるCherryMusicをEC2上で常駐化させてみようという試みをしたい.これはあくまでメモ程度として見てもらえるとありがたい.


実行環境


  • Ubuntu Server 16.04 LTS (AWS EC2, Instance types:t2.micro)

  • python 3.6.3


CherryMusicとは

CherryPyjPlayerをベースとした音楽ストリーミングサーバー.

複数のユーザーがWebブラウザを使用してHTTP / HTTPS経由でログインしたり、音楽データベースをブラウズしたり、検索したり、プレイリストを管理する事ができる.


CherryMusicを動かすまで


前準備


EC2 Management

セキュリティグループで指定するポートへの接続を受け入れるようにしておく必要がある.

使うインスタンスのセキュリティグループのインバウンドルールにルールを追加しておく事.

なお,自分の設定ではポート8080を用いるため,以下のような設定にしている.

inbound rules.png

また,後々使うのでグローバル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の表示があった場合は入れ忘れているか,失敗している可能性があるので再インストールを試みてほしい.

setup1.png

setup2.png

ひとまず,セットアップはこれで終了.

以後は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のバグ潰しをしたり,内部構造がどうなってるかを見ていきたいと思う.

(追記:就活つれぇ.)