epgrec UNAインストール手順(CentOS 7編)
最終更新日:2016/12/14
CentOS 7にepgrec UNAをインストールする手順を説明します。
本記事は『録画サーバ構築の前準備(CentOS 7編)、Chinachu・epgrec UNAに対応』の内容を実行済みであることを前提にしています。前記事の内容を実行していない場合、先にそちらをご参照下さい。
本記事で取り扱うTVチューナーボードはPT3 Rev.Aです。
なお、実行ユーザーを区別するため、シェルのコマンド表記は以下の様にしています。
[user@centos]$ 一般ユーザーとして実行 [root@centos]# rootとして実行
スポンサーリンク
目次
パッケージ
EPELレポジトリ設定
epgrec UNAは、PHPが動作するWebサーバが必要になります。本記事ではApacheよりも処理性能が高いnginxをインストールします。しかし、CentOS 7ではデフォルトでnginxをインストールすることができません。
そこで、nginxをインストールするため、エンタープライズLinux用の拡張パッケージであるEPELレポジトリを使えるように設定します。ちなみに、EPELはExtra Packages for Enterprise Linuxの略です。
[user@centos]$ su - [root@centos]# yum -y install epel-release [root@centos]# vi /etc/yum.repos.d/epel.repo 変更前) 6行目 enabled=1 変更後) 一時利用に変更する enabled=0
パッケージインストール
nginx、at、MariaDB、php-fpm等、必要なパッケージをインストールします。なお、epgrec UNAで使用するデーターベースは本来MySQLですが、CentOS 7の標準データベースがMariaDBに変わったため、こちらを使用します。MariaDBはMySQL互換のデータベースなので特に問題ありません。
[root@centos]# yum -y --enablerepo=epel install nginx [root@centos]# yum -y install at mariadb-server php-cli php-fpm php-mbstring php-mysql php-process
設定
MaridDB
MariaDBの起動後、初期設定を行います。ほぼ全てEnterキーを押下するだけで良いですが、rootのパスワードは設定を行う必要があります。
[root@centos]# systemctl enable mariadb [root@centos]# systemctl start mariadb [root@centos]# mysql_secure_installation Set root password? [Y/n] ← Enter New password: ← rootのパスワード入力 Re-enter new password: ← 再度入力 上記以外は全てEnterキー押下。
MariaDBの文字コード設定を追加して、サービスを再起動します。
[root@centos]# vi /etc/my.cnf.d/server.cnf ・文字コード設定、12行目付近、以下を追記します。 [mysqld] character-set-server=utf8 [root@centos]# systemctl restart mariadb
続いて、epgrec UNA用のデータベースを作成します。
[root@centos]# mysql -u root -p Enter password: ← 先ほど設定したMariaDBのrootユーザーのパスワードを入力 データベース作成の前に文字コードの設定に問題がないか確認します。 set_filesystemとsets_dir以外が全てutf8ならば問題ありません。 MariaDB [(none)]> 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) 下記の'パスワード'は半角英数で適当なものを入力して下さい。 MariaDB [(none)]> create database epgrec; MariaDB [(none)]> grant all on epgrec.* to epgrec@localhost identified by 'パスワード'; MariaDB [(none)]> quit;
php-fpm設定
nginxからphpを実行できるように設定します。
[root@centos]# vi /etc/php-fpm.d/www.conf nginxからの接続をIPソケットから応答の速いUnixソケットに変更します。 ついでに実行ユーザーも変更。 変更前) 12行、40行目付近 listen = 127.0.0.1:9000 user = apache group = apache 変更後) listen = /var/run/php-fpm/php-fpm.sock user = nginx group = nginx [root@centos]# sed -i 's/;date.timezone =/date.timezone = Asia\/Tokyo/g' /etc/php.ini [root@centos]# vi /lib/systemd/system/php-fpm.service 変更前) 11行目 PrivateTmp=true 変更後) PrivateTmp=false [root@centos]# systemctl enable php-fpm [root@centos]# systemctl daemon-reload [root@centos]# systemctl start php-fpm
nginx設定
nginxを起動し、nginx上でPHPが動作することを確認します。
[root@centos]# vi /etc/nginx/nginx.conf server { (中略) 最後に下記を挿入 location ~ [^/]\.php { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; } ↑ここまで } [root@centos]# systemctl enable nginx [root@centos]# systemctl start nginx [root@centos]# vi /usr/share/nginx/html/phpinfo.php 下記の内容をコピペして保存。 <?php phpinfo(); ?>
ブラウザから”http://録画サーバのIPアドレス/phpinfo.php”にアクセスします。以下の様な内容が表示されれば成功です。
at
atコマンドを実行するにはシェルスクリプトを実行できるユーザーでなければなりません。本記事ではepgrec UNAを実行するユーザーとしてnginxを使用します。ユーザーnginxはシェルスクリプトを実行できないので実行可能にします(セキュリティ的には問題がありますが…)。
[root@centos]# vi /etc/at.deny 本ファイルはatコマンドの実行不可ユーザーリストです。 デフォルトでは空っぽのはずなので、その場合は特に何もしなくて良いです。 もし"nginx"が含まれていれば削除します。 [root@centos]# usermod -s /bin/bash nginx 設定を反映させるため録画サーバを再起動します。 [root@centos]# reboot
epgrec UNA
epgdumpのインストール
適当な何かの別館からepgdumpのソースコードをダウンロードします。これはブラウザからしかダウンロードできないので、ダウンロード後は録画サーバに転送します。”~/src”の下に置いたものとして手順を説明します。
[user@centos]$ cd ~/src [user@centos]$ tar xvzf epgdumpUNA141013.tar.gz [user@centos]$ cd epgdump [user@centos]$ make [user@centos]$ su [root@centos]# make install [root@centos]# exit
epgrec UNAのインストール
適当な何かの別館からepgrec UNAをダウンロードします。本記事投稿時点の最新バージョンは”epgrecUNA 人柱版 (2015/07/20)”です。
ダウンロードにはパスワードが必要です。パスワードのヒントは同じページ内に書かれています。しかし、最近はヒントが分かりにくくなっていて、少し考えないと分からなくなっています。外国人対策らしいですが、導入の敷居を高くするだけなので何とかしてほしいところです。
パスワードについては私から回答はできません。こちらのページのコメントを良く読んで考えて下さい。「全角」がヒントです。私から言えるのはこれだけです。
epgdumpと同じく、ダウンロードしたファイルは”~/src”の下に置いたものとして手順を説明します。
[user@centos]$ cd ~/src [user@centos]$ tar xvzf epgrecUNA_150720.tar.gz [user@centos]$ su [root@centos]# mkdir -p /var/www/ [root@centos]# mv epgrec/ /var/www/ [root@centos]# cd /var/www/epgrec/ [root@centos]# chown -R nginx:nginx ../ [root@centos]# chmod 777 templates_c video thumbs settings cache [root@centos]# vi config.php 変更前) 75、202、203行目 define( 'TUNER_UNIT1', 0 ); define( 'HTTPD_USER', 'www-data' ); define( 'HTTPD_GROUP', 'www-data' ); 変更後) define( 'TUNER_UNIT1', 2 ); ← PT3を2枚挿しの場合は4 define( 'HTTPD_USER', 'nginx' ); define( 'HTTPD_GROUP', 'nginx' );
config.php は上記の他に地上デジタルチャンネルマップの設定の必要があります(9行目以降)。デフォルトで有効になっているのは首都圏のものです。参考例として大阪地区、名古屋地区のものもコメントの状態で記述されています。適宜変更しましょう。マスプロの地上デジタル放送 チャンネル一覧表が参考になります。
続いて、nginxの設定を変更し、nginxを再起動します。
[root@centos]# vi /etc/nginx/nginx.conf 変更前) server { (中略) root /usr/share/nginx/html; 変更後) server { (中略) root /var/www/epgrec; charset utf-8; index index.php index.html; [root@centos]# systemctl restart nginx
ブラウザから”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の設定を行います。初期設定の最後にファイルをコピーすれば簡単に設定できるように書かれていますが、CentOS 7では出来ないので下記の手順で設定します。
[root@centos]# vi /etc/crontab 下記を追記する。 29 */2 * * * nginx /var/www/epgrec/shepherd.php
これで2時間毎の29分にEPG更新が行われます。偶数時の29分頃に下記を実行して動作確認します。
[user@centos]$ ps ax | grep recpt recpt1のプロセスが表示されれば成功。
録画用ディレクトリの変更方法
本記事通りに作業すると録画用ディレクトリは”/var/www/epgrec/video”になっています。例えば”/recorder”ディレクトリに変更したい場合、以下の様に実行します。
[user@centos]$ su [root@centos]# cd /var/www/epgrec [root@centos]# mv video _video [root@centos]# ln -s /recorder video 録画済みの場合、元のディレクトリからTSファイルの移動を忘れずに! /recorderディレクトリがフルアクセスになっていない場合、以下の実行も必要。 [root@centos]# chmod 777 /recorder
トランスコード機能の追加
ここまで行ったらFFmpegを使用したトランスコード機能の追加まで行いましょう。本ブログで以下の記事をまとめました。ぜひ試してみてください。
- LinuxでFFmpegをほぼ全自動でビルド(CentOS、Ubuntu等に対応)
- epgrec UNAのサムネイルとトランスコード機能(ライブ視聴、FFmpegによる録画終了後MPEG4エンコード)を有効にする方法
外出先から録画予約する方法
実現するのはかなり面倒なのですが、比較的安全に外部から接続する方法としてSoftEther VPNを使った方法を紹介します。
録画サーバを外部から接続する方法としてまとめましたが、実際には外部から家のLANにアクセスする方法なので、LANに接続する機器全てにアクセス可能になります。
うまく動かない場合
2016年12月11日追記)最近、初期設定画面から先に進まない、番組表が表示されない、EPGデータ取得がうまく行かない等のコメントが複数寄せられています。以前は予備のPT3を使用して原因調査も出来たのですが、現状その予備も使用しているため、最新のディストリビューションでどうなのかを実際に確かめることが出来ない状況です。
と言うことで、困っている方のためにこの節を追加しました。この節の内容を試して、記事に問題があることが判明したら、コメント欄にて教えて頂けると助かります。
原因として考えられるのは、nginxやphp-fpmの設定の不備です。以下のディレクトリ以下のログに何らかのエラーや不自然な動作が記録されていないか確認してみて下さい(念のためMariaDBのログも)。
- /var/log/ngin/
- /var/log/php-fpm/
- /var/log/mariadb/
エディタで確認するのも良いですが、まずはtailコマンドで最終ログ付近のみを重点的に確認するほうが良いです。また、ログが記録されているはずの時刻に記録がない場合もあるので、エラーがないから問題ないとは言い切れません。
番組表が表示されない場合、まず番組検索を試してみて下さい。番組検索でも何も表示されない場合、データベースに何も登録されていない可能性が高いです。
EPG更新は以下のコマンドを実行すれば手動更新も可能です。
[user@centos]$ su - [root@centos]# sudo -u nginx /var/www/epgrec/shepherd.php
ここまで適切に設定されていれば、このコマンドがcronで偶数時間の29分に実行されているはずです。以下の様なログが記録されているか、/var/log/syslogファイルで確認しましょう。
例) Dec 11 08:29:01 --- CROND[14583]: (nginx) CMD ( /var/www/epgrec/shepherd.php)
MariaDBのデータベースの中身を確認する場合は以下を試してみて下さい。
[user@centos]$ mysql -u epgrec -p Enter password: ← 初期設定画面で登録したepgrecユーザーのパスワードを入力 MariaDB> use epgrec; MariaDB> 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) MariaDB> select * from Recorder_logTbl; ※ EPG更新動作などのログを確認
ここまでで原因究明出来ているか分かりませんが、調査を続ける場合、epgrec UNAが全体としてどのように動作しているか考えると闇雲に調査をするはめにはならないと思います。
- nginxはWebサーバ、ブラウザとの送受信を担当
- nginxはphp-fpmを経由してPHPを実行
- PHPからMariaDBにアクセス
- MariaDBのデータベースにEPG、番組、録画情報等を格納
- EPG更新はcronによりPHPコマンドを定期実行