*

epgrec UNAインストール手順(Ubuntu・Debian編)

  最終更新日:2017/01/22

How to install epgrec UNA on Ubuntu, Debian

 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”にアクセスします。以下の様な内容が表示されれば成功です。

phpinfo

phpinfo

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アドレス/”にアクセスします。下の様な画面が表示されれば成功です。ディレクトリやファイルのパーミッションの確認で問題がなければ先に進めます。もしエラーがある場合、表示されている内容を確認して下さい。

epgrec UNA 設定開始

epgrec UNA 設定開始

 変更すべき設定項目を以下にまとめました。チューナー設定は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ファイルを削除して下さい。

 設定手順のページの抜粋を下記に掲載します。

epgrec UNA 設定(データベース)

epgrec UNA 設定(データベース)

epgrec UNA 設定(デジタルチューナー)

epgrec UNA 設定(デジタルチューナー)

epgrec UNA 設定(録画ファイル名と番組表表示)

epgrec UNA 設定(録画ファイル名と番組表表示)

 初期設定が完了すると最後に「このリンクをクリックすると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を使用したトランスコード機能の追加まで行いましょう。本ブログで以下の記事をまとめました。ぜひ試してみてください。

外出先から録画予約する方法

 実現するのはかなり面倒なのですが、比較的安全に外部から接続する方法として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コマンドを定期実行