Sunday, January 12, 2014

CentOS 6.4にPlaggerをインストール (2014年版)

Plaggerをインストールします。(2014年版)
環境は、Windows8 + Vagrantに立てたCentOS 6.4です。
RSSを取得して、csvにするところまでやります。

参考URL


Windows8にVagrantをインストールしてCentOSを入れる
http://d.hatena.ne.jp/fitflavor/20131020/1382250424

CentOS6.3にperlbrew,Perl 5.16, cpanmを一気にインストールする方法
http://dqn.sakusakutto.jp/2012/08/centos63_perlbrew_perl_cpanm.html


yumライブラリをインストール


# yum -y install openssl-devel expat-devel db4-devel libxml2-devel perl gcc make git


Perlのインストール


perlbrewを利用して、使用するPerlのバージョンを上げます。
※ CentOSにデフォルトでインストールされているPerlだと、コアモジュール不足でダメだそうです。 https://github.com/miyagawa/cpanminus/issues/303

# curl -Lk  http://xrl.us/perlbrewinstall | bash
# echo "source ~/perl5/perlbrew/etc/bashrc" >> ~/.bashrc
# source ~/.bashrc
# source ~/perl5/perlbrew/etc/bashrc
# perlbrew available
# perlbrew install perl-5.16.3

switchします。
# perlbrew switch  perl-5.16.3

cpanmをインストール。
# perlbrew install-cpanm

Perlのバージョンを確認。
# perl -v
This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux

Plaggerのインストール


cpanモジュールをインストール。
# cpanm local::lib
# cpanm Module::Install
# cpanm Test::Base
# cpanm YAML
# cpanm Text::CSV_PP
# cpanm XML::Simple
# cpanm XMLRPC::Lite
# LANG=C cpanm Crypt::SSLeay
# LANG=C cpanm --force Net::MovableType
# cpanm Module::Install::TestBase

Plaggerをインストール。
# cd /usr/local/share
# git clone https://github.com/miyagawa/plagger.git
# cd plagger/
# cpanm --installdeps .

シェバンを変更。
# vim plagger
#!/usr/bin/perl
->
#!/usr/bin/env perl

Plaggerのバージョンを確認。
# ./plagger -v
Plagger version 0.7.17



Plaggerの動作チェック


http://d.hatena.ne.jp/otomojamjam/rss フィードからtitileを抜き出して、/tmp/plagger-test/rss.csv に落とし込みます。

Plaggerが使うディレクトリを作成。
# mkdir -p /tmp/plagger-test/

設定ファイルを書きます。
# vim /tmp/plagger-test/config.yaml
global:
  assets_path: /tmp/plagger-test/assets
  timezone: Asia/Tokyo
  cache:
    base: /tmp/plagger-test
  log:
    level: debug

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://d.hatena.ne.jp/otomojamjam/rss

  - module: Filter::Rule
    rule:
      module: Deduped

  - module: Publish::CSV
    config:
      dir: /tmp/plagger-test
      encoding: utf-8
      filename: rss.csv
      mode: append
      column:
       - title

Plaggerを実行させます。
# /usr/local/share/plagger/plagger -c /tmp/plagger-test/config.yaml

rssを取得できているでしょうか?
# cat /tmp/plagger-test/rss.csv
"紅白「あまちゃん 第157話」"
"PITINN4デイズ〜紅白リハ"
"お腹いっぱいかもだけど年末年始いろいろ出ま〜〜す"
"紅白あまちゃんスペシャルビッグバンド出演決定 メンバー詳細です"
"Quartets in Bangkok"

※ Dedupedオプションを使用しているので、一度読み込んだフィードは再度読み込みません。
再読み込みしたい場合は、/tmp/plagger-test/Deduped.dbファイルを削除しましょう。


Plaggerをcronで定期実行



環境変数のPATHを表示します。
# env | grep PATH
MANPATH=/root/perl5/perlbrew/perls/perl-5.16.3/man:
PATH=/root/perl5/perlbrew/bin:/root/perl5/perlbrew/perls/perl-5.16.3/bin:/sbin:/bin:/usr/sbin:/usr/bin
PERLBREW_MANPATH=/root/perl5/perlbrew/perls/perl-5.16.3/man
PERLBREW_PATH=/root/perl5/perlbrew/bin:/root/perl5/perlbrew/perls/perl-5.16.3/bin

PATH=の行をcrontabに記述します。
さらに、cron実行結果を/var/log/messagesに出力するようにしました。
# crontab -e
PATH=/root/perl5/perlbrew/bin:/root/perl5/perlbrew/perls/perl-5.16.3/bin:/sbin:/bin:/usr/sbin:/usr/bin
* * * * * /usr/local/share/plagger/plagger -c /tmp/plagger-test/config.yaml 2>&1 | logger -t plagger-test

実行できているでしょうか?
# tail -f /var/log/messages



まとめ


Perlの実行環境を整えて、Plaggerを定期実行できるようにしました。

Perl・Plaggerの構築方法は、数年前と変わらないです。
perlbrew・cpanmのおかげですね。