epgrec UNAインストール手順(Ubuntu・Debian編)
最終更新日:2017/01/22
Ubuntu・Debianにepgrec UNAをインストールする手順を説明します。
本記事は『録画サーバ構築の前準備(Ubuntu・Debian編)、Chinachu・epgrec UNAに対応』の内容を実行済みであることを前提にしています。前記事の内容を実行していない場合、先にそちらをご参照下さい。
本記事で取り扱うTVチューナーボードはPT3 Rev.Aです。
なお、本記事はUbuntuを基準にして作成しているため、rootで実行するコマンドではsudoを使用しています。sudo実行箇所は、Debianではrootになって先頭のsudoを省略して入力してください。Debianでsudoコマンドをインストールしたい場合、前準備の記事にsudoのインストール方法をまとめているので、そちらをご参照下さい。
スポンサーリンク
目次
パッケージインストール
epgrec UNAは、PHPが動作するWebサーバが必要になります。本記事ではApacheよりも処理性能が高いnginxを使用します。
nginx、at、MySQL、php-fpm等、必要なパッケージをインストールします。
Ubuntu 15.10以前, Debianの場合) # sudo apt-get -y install at nginx php5-fpm php5-cli mysql-server php5-mysql Ubuntu 16.04以降の場合) # sudo apt-get -y install at nginx php7.0-fpm php7.0-cli mysql-server php7.0-mysql php7.0-xml MySQLはインストール時にrootのパスワードを設定する必要があります。
設定
at
epgrec UNAは録画予約にatコマンドを使用します。本記事ではepgrec UNAを実行するユーザーとして”www-data”を使用しますが、デフォルト設定でatコマンドを実行できなくなっているため、その設定を解除します。
# sudo sed -i".org" 's/www-data//g' /etc/at.deny
MySQL
MySQLの文字コード設定を変更して、サービスを再起動します。OS毎に微妙に内容が異なります。
Debianの場合) # vi /etc/mysql/my.cnf [mysqld] character-set-server = utf8 ← この行追加 # /etc/init.d/mysql restart Ubuntu 14.04の場合) # vi /etc/mysql/my.cnf [mysqld] character-set-server = utf8 ← この行追加 # sudo service mysql restart Ubuntu 15.04以降の場合) # sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf [mysqld] character-set-server = utf8 ← この行追加 # sudo service mysql restart
続いて、epgrec UNA用のデータベースを作成します。
$ mysql -u root -p Enter password: ← MySQLのrootユーザーのパスワードを入力 文字コードの設定に問題がないか確認します。 set_filesystemとsets_dir以外が全てutf8ならば問題ありません。 mysql> show variables like "char%"; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.01 sec) データベースを作成します。 下記の'パスワード'は半角英数で適当なものを入力して下さい。 mysql> create database epgrec; mysql> grant all on epgrec.* to epgrec@localhost identified by 'パスワード'; mysql> quit
php-fpm設定
nginxから実行するPHPの設定を変更します。
Ubuntu 15.10以前, Debianの場合) # sudo sed -i".org" 's/^disable_functions/;disable_functions/g' /etc/php5/fpm/php.ini # find /etc/php5 -name "php.ini" | xargs sudo sed -i".org" 's/^;date.timezone =/date.timezone = "Asia\/Tokyo"/g' Ubuntu 16.04以降の場合) # sudo sed -i".org" 's/^disable_functions/;disable_functions/g' /etc/php/7.0/fpm/php.ini # find /etc/php/7.0/ -name "php.ini" | xargs sudo sed -i".org" 's/^;date.timezone =/date.timezone = "Asia\/Tokyo"/g' サービスを再起動します。 Ubuntu 15.10以前の場合) # sudo service php5-fpm restart Ubuntu 16.04以降の場合) # sudo service php7.0-fpm restart Debianの場合) # /etc/init.d/php5-fpm restart
nginx設定
nginxを起動し、nginx上でPHPが動作することを確認します。
# sudo vi /etc/nginx/sites-available/default server { ↓下記追記 location ~ [^/]\.php { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_pass unix:/var/run/php5-fpm.sock; } ↑ここまで ※ 注意:Ubuntu 16.04以降のバージョンでは、 "fastcgi_pass"の箇所を以下に変更して下さい fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; サービスを再起動します。 Ubuntuの場合) # sudo service nginx restart Debianの場合) # /etc/init.d/nginx restart テスト用のPHPスクリプトを作成します。 # sudo vi /var/www/html/phpinfo.php 下記の内容をコピペして保存します。 <?php phpinfo(); ?>
ブラウザから”http://録画サーバのIPアドレス/phpinfo.php”にアクセスします。以下の様な内容が表示されれば成功です。
epgrec UNA
epgdumpのインストール
適当な何かの別館からepgdumpのソースコードをダウンロードします。これはブラウザからしかダウンロードできないので、ダウンロード後は録画サーバに転送します。”~/src”の下に置いたものとして手順を説明します。
$ cd ~/src $ tar xvzf epgdumpUNA141013.tar.gz $ cd epgdump $ make # sudo make install
epgrec UNAのインストール
適当な何かの別館からepgrec UNAをダウンロードします。2016年5月26日時点の最新バージョンは”epgrecUNA 人柱版 (2015/11/14)”です。こちらに、”epgrecUNA 151114版用 fix1”と”epgrecUNA 151114版用 fix2”の2つのパッチを当てる必要があります(パッチはepgrecディレクトリに上書き解凍すればOKです)。
ダウンロードにはパスワードが必要です。パスワードのヒントは同じページ内に書かれています。しかし、最近はヒントが分かりにくくなっていて、少し考えないと分からなくなっています。外国人対策らしいですが、導入の敷居を高くするだけなので何とかしてほしいところです。
パスワードについては私から回答はできません。こちらのページのコメントを良く読んで考えて下さい。「全角」がヒントです。私から言えるのはこれだけです。
epgdumpと同じく、ダウンロードしたファイルは”~/src”の下に置いたものとして手順を説明します。
$ cd ~/src $ tar xvzf epgrecUNA_150720.tar.gz ← ここのファイル名はバージョンにより異なります # sudo mkdir -p /var/www/ # sudo mv epgrec/ /var/www/ $ cd /var/www/epgrec/ # sudo chown -R www-data:www-data ../ # sudo chmod 777 templates_c video thumbs settings cache # sudo vi config.php 変更前) 75行目 define( 'TUNER_UNIT1', 0 ); 変更後) define( 'TUNER_UNIT1', 2 ); ← PT3を2枚挿しの場合は4
config.php は上記の他に地上デジタルチャンネルマップの設定の必要があります(9行目以降)。デフォルトで有効になっているのは首都圏のものです。参考例として大阪地区、名古屋地区のものもコメントの状態で記述されています。適宜変更しましょう。マスプロの地上デジタル放送 チャンネル一覧表が参考になります。
続いて、nginxの設定を変更し、nginxを再起動します。
$ cd /etc/nginx/ # sudo rm sites-enabled/default # sudo vi sites-available/epgrec 下記の内容をコピペして保存します。 server { listen 80 default_server; server_name localhost; root /var/www/epgrec; charset utf-8; index index.php index.html; location ~ [^/]\.php { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_pass unix:/var/run/php5-fpm.sock; } } ※ 注意:Ubuntu 16.04以降のバージョンでは、 "fastcgi_pass"の箇所を以下に変更して下さい fastcgi_pass unix:/run/php/php7.0-fpm.sock; $ cd sites-enabled/ # sudo ln -s ../sites-available/epgrec Ubuntuの場合) # sudo service nginx restart Debianの場合) # /etc/init.d/nginx restart
ブラウザから”http://録画サーバのIPアドレス/”にアクセスします。下の様な画面が表示されれば成功です。ディレクトリやファイルのパーミッションの確認で問題がなければ先に進めます。もしエラーがある場合、表示されている内容を確認して下さい。
変更すべき設定項目を以下にまとめました。チューナー設定はPT3が1枚の時のものになります。
設定項目 | デフォルト設定 | 変更後 |
---|---|---|
MySQL接続ユーザー名 | yourname | epgrec |
MySQL接続パスワード | yourpass | データベース作成時に設定したパスワード |
使用データベース名 | yourdbname | epgrec |
地デジチューナーの台数 | 1 | 2 |
BSチューナーの台数 | 0 | 2 |
CS録画の有無 | 行わない | 行う |
録画ファイル名の形式 | %TYPE%%CH%_%ST%_%ET% | %YEAR%%MONTH%%DAY% _%HOUR%%MIN%_%TYPE%%CH%_%TITLE% |
もしepgrec UNAの設定を最初からやり直したい場合、settings/config.xmlファイルを削除して下さい。
設定手順のページの抜粋を下記に掲載します。
初期設定が完了すると最後に「このリンクをクリックするとEPGの初回受信を開始します。」と言うリンクが表示されます。クリックするとリンクの内容通りEPG更新が始まるので、しばらく待ってから録画サーバのIPアドレスに再アクセスして下さい。番組表が表示されれば基本設定は完了です。
なお、「EPGの初回受信を行います。9分程度後にepgrecのトップページを開いてください。」のリンクから再アクセスするとlocalhostに接続してしまうので注意。
最後に定期的にEPG更新するようにcronの設定を行います。初期設定の最後にファイルをコピーすれば簡単に設定できるように書かれていますが、現状うまく動作しないので下記の手順で設定します。
# sudo vi /etc/crontab 下記を追記する。 29 */2 * * * www-data /var/www/epgrec/shepherd.php
これで2時間毎の29分にEPG更新が行われます。偶数時の29分頃に下記を実行して動作確認します。
$ ps ax | grep recpt recpt1のプロセスが表示されれば成功。
録画用ディレクトリの変更方法
本記事通りに作業すると録画用ディレクトリは”/var/www/epgrec/video”になっています。例えば”/home/share”ディレクトリに変更したい場合、以下の様に実行します。
# cd /var/www/epgrec # sudo mv video _video # sudo ln -s /home/share video 録画済みの場合、元のディレクトリからTSファイルの移動を忘れずに! /home/shareディレクトリがフルアクセスになっていない場合、以下の実行も必要。 # sudo chmod 777 /home/share
トランスコード機能の追加
ここまで行ったらFFmpegを使用したトランスコード機能の追加まで行いましょう。本ブログで以下の記事をまとめました。ぜひ試してみてください。
- LinuxでFFmpegをほぼ全自動でビルド(CentOS、Ubuntu等に対応)
- epgrec UNAのサムネイルとトランスコード機能(ライブ視聴、FFmpegによる録画終了後MPEG4エンコード)を有効にする方法
外出先から録画予約する方法
実現するのはかなり面倒なのですが、比較的安全に外部から接続する方法としてSoftEther VPNを使った方法を紹介します。
録画サーバを外部から接続する方法としてまとめましたが、実際には外部から家のLANにアクセスする方法なので、LANに接続する機器全てにアクセス可能になります。
うまく動かない場合
2016年12月11日追記)最近、初期設定画面から先に進まない、番組表が表示されない、EPGデータ取得がうまく行かない等のコメントが複数寄せられています。以前は予備のPT3を使用して原因調査も出来たのですが、現状その予備も使用しているため、最新のディストリビューションでどうなのかを実際に確かめることが出来ない状況です。
と言うことで、困っている方のためにこの節を追加しました。この節の内容を試して、記事に問題があることが判明したら、コメント欄にて教えて頂けると助かります。
原因として考えられるのは、nginxやphp-fpmの設定の不備です。以下のログに何らかのエラーや不自然な動作が記録されていないか確認してみて下さい(念のためMySQLのログも)。
- /var/log/ngin/ディレクトリ以下のログ
- /var/log/php*-fpm.log
- /var/log/mysql.log
- /var/log/mysql.lerr
エディタで確認するのも良いですが、まずはtailコマンドで最終ログ付近のみを重点的に確認するほうが良いです。また、ログが記録されているはずの時刻に記録がない場合もあるので、エラーがないから問題ないとは言い切れません。
番組表が表示されない場合、まず番組検索を試してみて下さい。番組検索でも何も表示されない場合、データベースに何も登録されていない可能性が高いです。
EPG更新は以下のコマンドを実行すれば手動更新も可能です。
$ sudo -u www-data /var/www/epgrec/shepherd.php
ここまで適切に設定されていれば、このコマンドがcronで偶数時間の29分に実行されているはずです。以下の様なログが記録されているか、/var/log/syslogファイルで確認しましょう。
例) Dec 11 08:29:01 nas CRON[28944]: (www-data) CMD (/var/www/epgrec/shepherd.php)
MySQLのデータベースの中身を確認する場合は以下を試してみて下さい。
$ mysql -u epgrec -p Enter password: ← 初期設定画面で登録したepgrecユーザーのパスワードを入力 mysql> use epgrec; mysql> show tables; ※ epgrec用のテーブル一覧を表示、以下の内容であれば問題なし +-------------------------+ | Tables_in_epgrec | +-------------------------+ | Recorder_categoryTbl | | Recorder_channelTbl | | Recorder_keywordTbl | | Recorder_logTbl | | Recorder_programTbl | | Recorder_reserveTbl | | Recorder_transcodeTbl | | Recorder_transexpandTbl | +-------------------------+ 8 rows in set (0.00 sec) mysql> select * from Recorder_logTbl; ※ EPG更新動作などのログを確認
ここまでで原因究明出来ているか分かりませんが、調査を続ける場合、epgrec UNAが全体としてどのように動作しているか考えると闇雲に調査をするはめにはならないと思います。
- nginxはWebサーバ、ブラウザとの送受信を担当
- nginxはphp-fpmを経由してPHPを実行
- PHPからMySQLにアクセス
- MySQLのデータベースにEPG、番組、録画情報等を格納
- EPG更新はcronによりPHPコマンドを定期実行