2
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のバグ潰しをしたり,内部構造がどうなってるかを見ていきたいと思う.
(追記:就活つれぇ.)

2
2
0

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
  3. You can use dark theme
What you can do with signing up
2
2