CentOS 5.4にfoltiaを導入する
前々回と前回を経て、やっとfoltiaをインストールするためのメモ。いろいろミスったポイントもそのまま残しておく。
目次
- foltiaのダウンロード
- WEB関連、DB関連ソフトのインストール
- 各種設定ファイルの編集
- データベースの作成
- 完成?
- 最後に
foltiaのダウンロード
Subversionでfoltiaをダウンロード。ここではtmpというフォルダを作って、そこに資材をダウンロードしている。後でperlとphpのフォルダを/home/foltia/配下にコピーしておく。
[foltia@foltiadev tmp]$ svn co http://svn.dcc-jpl.com/foltia/trunk foltia A foltia/doc A foltia/doc/CHANGES.txt A foltia/doc/index.html 〜(以下、中略)〜 A foltia/install/mktable.sqlite.txt A foltia/install/mktable.txt リビジョン 100 をチェックアウトしました。 [foltia@foltiadev tmp]$ cp -r foltia/install/php/* /home/folta/php/ [foltia@foltiadev tmp]$ cp -r foltia/install/perl/* /home/foltia/perl/
ついでにtool配下にシンボリックリンクを作成しておく。MP4Boxはリンクをはっておかないと動かない。recpt1は不要かもしれないが、念のため。
[foltia@foltiadev tmp]$ cd /home/foltia/perl/tool/ [foltia@foltiadev tool]$ ln -s /usr/local/bin/recpt1 recpt1 [foltia@foltiadev tool]$ ln -s /usr/local/bin/MP4Box MP4Box
WEB関連、DB関連ソフトのインストール
[foltia@foltiadev ~]$ su - パスワード: [root@foltiadev ~]# yum install httpd php php-pear php-mbstring php-pdo 〜(ログは省略)〜 [root@foltiadev ~]# yum --enablerepo=dag install perl-DBD-SQLite perl-CPAN sqlitemanager perl-DBI 〜(ログは省略)〜 [root@foltiadev ~]# pecl install pdo 〜(ログは省略)〜
続けて、CPANのインストール、設定を行う。
[foltia@foltiadev ~]$ perl -MCPAN -e shell /home/foltia/.cpan/CPAN/MyConfig.pm initialized. 〜(ログは省略)〜 cpan> install LWP cpan> install Time::HiRes cpan> install Schedule::At cpan> install Jcode cpan> q
各種設定ファイルの編集
編集する必要のあるファイルはhttp.conf、foltia.conf、foltia_conf1.pl、foltia_config2.phpの4つ。
httpd.conf
[root@foltiadev ~]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org [root@foltiadev ~]# vi /etc/httpd/conf/httpd.conf
修正ポイントは2つ。
# AddDefaultCharset UTF-8
AddDefaultCharset off
foltia.conf
foltia.confは新規作成になる。
[root@foltiadev ~]# vi /etc/httpd/conf.d/foltia.conf
最後に、httpdを起動。また、電源オン時にデフォルトで起動するように設定しておく。
[root@foltiadev ~]# service httpd restart httpd を停止中: [ OK ] httpd を起動中: [ OK ] [root@foltiadev ~]# chkconfig httpd on [root@foltiasrv ~]# exit logout
データベースの作成
SQLiteでデータベースを作成する。放送局の設定は各自の環境に合わせて設定が必要なので、mktable.txtを編集する。編集に必要なのは地デジの物理チャンネルと、ONTV JAPANのチャンネルコードが必要になるので、下記のサイトを参考に作成した。
マスプロ 地デジ・地上デジタル放送向けチャンネル一覧表
http://www.maspro.co.jp/digi_broad/channel.html
ONTV JAPAN 操作ガイド・チャンネルコード 一覧
http://www.ontvjapan.com/help/ch_code.php
ちなみに、自分の環境(大阪)はこんな感じになる。
INSERT INTO foltia_station VALUES (1, 'NHK総合', 1, 'NHK', '', NULL, NULL, NULL, '0501.ontvjapan.com',24,0); INSERT INTO foltia_station VALUES (3, 'NHK教育', 3, 'ETV', '', NULL, NULL, NULL, '0502.ontvjapan.com',13,0); INSERT INTO foltia_station VALUES (472, 'ytv', 0, NULL, NULL, NULL, NULL, NULL, '0507.ontvjapan.com',14,0); INSERT INTO foltia_station VALUES (390, 'サンテレビジョン', 0, '', '', NULL, NULL, NULL,'0509.ontvjapan.com',26,0); INSERT INTO foltia_station VALUES (398, 'テレビ大阪', 0, '', '', NULL, NULL, NULL,'0513.ontvjapan.com',18,0); INSERT INTO foltia_station VALUES (399, 'ABCテレビ', 0, '', '', NULL, NULL, NULL,'0505.ontvjapan.com',15,0); INSERT INTO foltia_station VALUES (402, '関西テレビ', 0, '', '', NULL, NULL, NULL,'0506.ontvjapan.com',17,0); INSERT INTO foltia_station VALUES (406, 'MBS毎日放送', 0, '', '', NULL, NULL, NULL,'0504.ontvjapan.com',16,0);
以上の編集をしたmktable.txtをmktable_osaka.txtとして、SQLiteでデータベースを作成する。初期状態では下記のようなエラーが出力されるが、気にしなくてOK。
[foltia@foltiadev ~]$ sqlite3 /home/foltia/foltia.sqlite < mktable.sqlite_osaka.txt SQL error: no such table: foltia_program SQL error: no such table: foltia_subtitle SQL error: no such table: foltia_tvrecord SQL error: no such table: foltia_epg SQL error: no such table: foltia_m2pfiles SQL error: no such table: foltia_mp4files SQL error: no such table: foltia_station SQL error: no such table: foltia_envpolicy
作成されているか確認したい場合は直接SQLで表示してみるといい。
[foltia@foltiadev ~]$ sqlite3 foltia.sqlite SQLite version 3.3.6 Enter ".help" for instructions sqlite> select * from foltia_station; 0|[全局]|0|||||||| 1|NHK総合|1|NHK|||||0501.ontvjapan.com|24|0 3|NHK教育|3|ETV|||||0502.ontvjapan.com|13|0 101|NHK-BS1|0|BS7|||101||3001.ontvjapan.com|101|1 102|NHK-BS2|0|BS11|||102||3002.ontvjapan.com|102|1 103|NHK-BShi|0||||103||3003.ontvjapan.com|103|1 161|BS-TBS|0||||161||3006.ontvjapan.com|161|1 191|WOWOW|0|BS5|||191||3009.ontvjapan.com|191|1 〜(以下、省略)〜 sqlite> .q
最後に、しょぼいカレンダーから取得した情報を作成したデータベースに反映させる。
[foltia@foltiadev ~]$ perl/getxml2db.pl long
取得完了後、データベースに登録されているか確認してみるとよい。SQLコマンドで
で、番組情報が出力されればOK。
最後に、情報を定期的に取得するように、cronに設定する。
[foltia@foltiasrv ~]$ crontab -e
7 * * * * /home/foltia/perl/schedulecheck.pl >/dev/null 2>&1
1 0 * * * /home/foltia/perl/cron_foltia_dayly.sh >/dev/null 2>&1
完成?
以上で完成・・・と言いたいところだが、実は2点問題がある。
folcastが動作しない
foltiaの重要な機能であるPodcastへの登録がうまくいかなかった。SQLでエラーをはいていた。
SELECT foltia_program.tid,foltia_program.title, foltia_subtitle.countno , foltia_subtitle.subtitle , foltia_subtitle.startdatetime, foltia_subtitle.pspfilename,foltia_subtitle.lengthmin,foltia_subtitle.enddatetime FROM foltia_subtitle , foltia_program WHERE \"pspfilename\" LIKE 'M%%' AND foltia_program.tid = foltia_subtitle.tid ORDER BY \"enddatetime\" DESC Offset 0 limit ?
これの最後「offset 0 limit ?」 を「limit ? offset 0」に順序を変更することでSQLコマンドは通るようになり、folcastが動作した。