LoginSignup
2

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-12-18

今回はストリーミングサーバーの勉強がしたく,また,ちょうど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のバグ潰しをしたり,内部構造がどうなってるかを見ていきたいと思う.
(追記:就活つれぇ.)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2