サーバを更新したので、Ubuntu19.10を新規インストールしたうえでepgrecを再インストールしました。
Ubuntu18.04までのインストール方法だとMySQLのDBに接続出来ずに「MySQLに接続できません。」エラーが出ましたので、原因調査して対策済みです。
計画ではUbuntu19.10へのepgrecインストールは30分程度で終わる見込みだったのですが、MySQLが5.7から8.0に変更になったことでepgrec導入時にstep3.phpでDB接続エラーが発生しました。
結局、apacheやepgrecのエラーログではエラー箇所を特定出来なかったため、普段使うことのないPHPのデバッグ方法を調べてDB接続回りのエラー原因究明・対策をしていたら、3時間もかかっていました。
構築条件
- Ubuntu19.10
- Apache2.4.x
- MySQL8.x
- PHP7.3
- epgrecUNA版+ pt3
必要なハードウェア
OSがwindowsではなくLinuxなので、純粋に必要なハードウェア代金のみ。PT3は生産中止なので、Amazonではプレミアがついてしまっています。PX-W3PE4もrecpt1が利用可能なので、要望があれば購入して導入の備忘録を書きます。
- サーバ本体
- pt3 もしくは PX-W3PE4
- カードリーダ
- 低消費電力HDD(運用して気づきましたが、1TB以上が無難です。低容量だとすぐにHDDがあふれてしまうので。)
- H.264エンコードもするなら、4コア以上のCPUを推奨(Ryzen2600の場合、30分物を5分でエンコードできます)
BSも見れると番組の幅が広がります。セルフで工事する分には最安6000円でBSを映せるはずです。BS/CSの環境整備については衛星放送(BS/CS) 録画/視聴のまとめを参照。
Ubuntuのインストール
特記事項は特にありません。sambaとsshdをインストールしておくと、使い慣れたwindows機やmacから作業できるので楽かもしれません。
必要パッケージのインストール
comskip.batchを動かすためにepgrecを必要なソフトウェアの他に、wineとruby、ffmpegをインストールしています。
sudo apt update ;sudo apt upgrade sudo apt install apache2 php-fpm php-cli mysql-server mysql-client php-mysql mercurial php-xml php-mbstring libapache2-mod-php sudo apt install pcscd libpcsclite1 libpcsclite-dev libccid pcsc-tools git build-essential autoconf unzip pkg-config samba sudo apt install php7.3-mysql libmysqlclient-dev libmysqlclient21 sudo apt install wine ffmpeg ruby sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32 sudo timedatectl set-timezone Asia/Tokyo sed -i 's/www-data//g' /etc/at.deny cp /etc/php/7.3/fpm/php.ini /etc/php/7.3/fpm/php.ini.bak sed -i 's/disable_functions/;disable_functions/g' /etc/php/7.3/fpm/php.ini sed -i 's/;date.timezone =/date.timezone = "Asia\/Tokyo"/g' /etc/php/7.3/fpm/php.ini diff /etc/php/7.3/fpm/php.ini /etc/php/7.3/fpm/php.ini.bak cp /etc/php/7.3/cli/php.ini /etc/php/7.3/cli/php.ini.bak sed -i 's/disable_functions/;disable_functions/g' /etc/php/7.3/cli/php.ini sed -i 's/;date.timezone =/date.timezone = "Asia\/Tokyo"/g' /etc/php/7.3/cli/php.ini diff /etc/php/7.3/cli/php.ini /etc/php/7.3/cli/php.ini.bak sudo su - mkdir ~/pt3 cd ~/pt3 # >>が大文字なので半角にしてください。 echo "blacklist earth_pt3" >> /etc/modprobe.d/blacklist.conf git clone https://github.com/m-tsudo/pt3.git cd pt3/ make clean make sudo make install reboot
MySQLのインストールと設定
MySQL8.xでは、以下の設定をしないとキーワード予約時にエラーが発生するので、設定後にmysq1を再起動させてください。
/etc/mysql/mysql.conf.d/mysqld.cnfの中の[mysqld]の下に下記の設定を付け加えます。
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld] sql-mode = ''
sudo service mysql restart
DBを作成します。ポイントは「with mysql_native_password」を指定することです。
mysql -uroot -p create database epgrec; CREATE USER 'epgrec'@'localhost' IDENTIFIED with mysql_native_password BY 'yourpassword'; GRANT ALL ON epgrec.* TO 'epgrec'@'localhost'; flush privileges;
aptによる自動更新を無効にする
aptによる自動更新対象からカーネルを除外するか、自動更新を無効にします。どちらかを実施しないと、カーネル更新時にはpt3ドライバを追加インストールする必要があるので、当方は手動で対応するようにしています。
cp /etc/apt/apt.conf.d/20auto-upgrades /tmp/
sed -i ‘s/\”1\”/\”0\”/g’ /etc/apt/apt.conf.d/20auto-upgrades
diff /etc/apt/apt.conf.d/20auto-upgrades /tmp/20auto-upgrades
epgrecの下準備
recpt1の用意
新本家の最新版にrecpt1 httpサーバ機能追加パッチを適用します。パッチは『適当な何かの別館』さんより事前にダウンロードさせて頂き、sambaなりscpなりで、Linuxサーバ上の/tmpに格納しておいてください。
cd /tmp wget http://hg.honeyplanet.jp/pt1/archive/tip.tar.bz2 tar -jxvf tip.tar.bz2 tar -zxvf recpt1-http-rev4.tar.gz patch -p2 -d pt1-c8688d7d6382/recpt1/ recpt1-http-rev4/recpt1-http.diff cd /tmp/pt1-c8688d7d6382/recpt1/ wget http://hg.honeyplanet.jp/pt1/archive/tip.tar.bz2 cd /tmp/pt1-c8688d7d6382/recpt1 # PT2/3混在環境の場合にはpt1_dev.hの/dev/pt1video**を # 必要個数、pt3video**のようにPT3用に書き換えます。 # PT1/PT2のみの場合には、pt1_dev.hの書き換えの必要はありません。 # pt3のみの環境の場合には、sedで一括置換でOKです。 sed -i 's/pt1video/pt3video/g' pt1_dev.h ./autogen.sh ./configure --enable-b25; make ; sudo make install recpt1 -version # 下記のように出力されればOK。 # recpt1 1.2.0 # recorder command for PT1/2 digital tuner. # 序に録画テストも行っておく cd /tmp recpt1 --b25 --strip 27 20 test.ts
UNA版の必要ソフトウェアのダウンロード
作者さんが公開してくださっているので、適当な何かの別館のこのページから次の3ファイルをダウンロードし、サーバの/tmpにコピー(Linuxホストからはscp、windowsからならwinscpを利用)して下さい。
ブラウザから設定を行う
http://ipアドレス/epgrec
にアクセスして画面の指示通りに設定を進めてください。
設定画面は非常に解り易く作られているので、説明を見ながらでも十分に設定可能です。
録画ファイル名の形式やその他の設定値について
個人的なメモです。『%YEAR%%MONTH%%DAY%_%HOUR%%MIN%_%TYPE%%CH%_%TITLE%』で運用してみます。
あと、ページに表示する番組表の長さは、24時間にしました。
番組表更新のgetepgをcronに登録する
sudo cp /var/www/html/epgrec/cron.d/shepherd /etc/cron.d/ sudo vi /etc/cron.d/shepherd # getepgの実行時間は適宜変更します。 # デフォルトだと、2時間おきに○時29分になったら番組表の更新処理がされるみたいです。 # 作者さんのデフォルトの指定がベストチョイスだったのでそのままにしました。 # あと、/var/www/htmlのところのパスは、epgrecインストール先のパスとあっていることを確認してください。 29 */2 * * * www-data /var/www/epgrec/shepherd.php
参考にしたページ
下記のページを参考にさせていただきました。