投げ銭

★当サイトへの投げ銭(PayPal)★

LINK


(無償、寄付歓迎) logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)

★LibreOfficeの導入事例★
詳細について

人気の投稿(1ヶ月間)

Ad

Ad

投げ銭

★当サイトへの投げ銭(PayPal)★

2018年11月22日木曜日

【Linux CentOS 7】Dockerコンテナにメール分類ソフトPOPFile(日本語分かち書きでmecabを利用)を導入した【Docker-ce 18.06.1.ce】

以下では、特権Dockerコンテナを用いてインストール作業を行っている。

しかし、通常のCentOS 7でも同じ手順でインストールの作業はできると思う。
一部、Dockerコンテナにまつわる作業が混ざっています。

(警告)
ここで作成しているDockerコンテナは、信頼のおけるローカルネットワークのみで動作するホストで運用するものとして構築している。
ホスト上のいずれかのネットワークインターフェイスがインターネットに直接接している場合、このコンテナの運用はセキュリティの観点から非常に危険なので動作させてはいけない。
(インターネットに直に接している場合、Dockerのデフォルトではiptablesを書き換えて外部からのアクセスを許してしまうことになってしまうため厳禁である。)



■必要なファイルのダウンロード

http://taku910.github.io/mecab/#download から次の3つのファイルを、Dockerホストにダウンロードしておいた。

1、MeCab 本体(mecab-0.996.tar.gz)
2、MeCab 用の辞書IPA 辞書(mecab-ipadic-2.7.0-20070801.tar.gz)
3、perl バインディング(mecab-perl-0.996.tar.gz)



■設定するコンテナの起動

以下で使用するDockerコンテナは、
【Linux CentOS 7】(ベースコンテナの作成)SSH接続可能なDockerコンテナでの日本用ロケールの有効化と検証(man,dateの日本語表示)」で作成したイメージから生成したものである。

これは日本のロケールを利用できるようにしたものである。
またSSH接続も利用できるように構成している。

このイメージからコンテナを起動した。
(SSH接続のためホスト側222番ポートをコンテナの22番へ通している。)
(インターネットに直に接している場合、Dockerのデフォルトではiptablesを書き換えて外部からのアクセスを許してしまうことになってしまうため厳禁である。)
# docker run --privileged -d -p 222:22 --name centos7-popfile image-centos7-ja /sbin/init



■perlとperlモジュールのインストール

次のページを参考に行った。
ただし、perlモジュールのインストール手順が少し異なった。
【Linux CentOS 6.5 64bit minimal】 POPFileインストール手順 (依存PerlモジュールをYUMで導入し、POPFileの起動と初期設定を完了させる)


○perlのインストール

[root@2d82556b4724 ~]# yum install perl
Total download size: 11 M
Installed size: 36 M
Installed:
  perl.x86_64 4:5.16.3-292.el7
Dependency Installed:
  perl-Carp.noarch 0:1.26-244.el7
  perl-Encode.x86_64 0:2.51-7.el7
  perl-Exporter.noarch 0:5.68-3.el7
  perl-File-Path.noarch 0:2.09-2.el7
  perl-File-Temp.noarch 0:0.23.01-3.el7
  perl-Filter.x86_64 0:1.49-3.el7
  perl-Getopt-Long.noarch 0:2.40-3.el7
  perl-HTTP-Tiny.noarch 0:0.033-3.el7
  perl-PathTools.x86_64 0:3.40-5.el7
  perl-Pod-Escapes.noarch 1:1.04-292.el7
  perl-Pod-Perldoc.noarch 0:3.20-4.el7
  perl-Pod-Simple.noarch 1:3.28-4.el7
  perl-Pod-Usage.noarch 0:1.63-3.el7
  perl-Scalar-List-Utils.x86_64 0:1.27-248.el7
  perl-Socket.x86_64 0:2.010-4.el7
  perl-Storable.x86_64 0:2.45-3.el7
  perl-Text-ParseWords.noarch 0:3.29-4.el7
  perl-Time-HiRes.x86_64 4:1.9725-3.el7
  perl-Time-Local.noarch 0:1.2300-2.el7
  perl-constant.noarch 0:1.27-2.el7
  perl-libs.x86_64 4:5.16.3-292.el7
  perl-macros.x86_64 4:5.16.3-292.el7
  perl-parent.noarch 1:0.225-244.el7                 
  perl-podlators.noarch 0:2.5.1-3.el7
  perl-threads.x86_64 0:1.87-4.el7
  perl-threads-shared.x86_64 0:1.43-6.el7
Complete!

○popfileが必要とするperlモジュールのインストール

次の三つについては、既にインストールされていたことがわかった。

[root@2d82556b4724 ~]# perl -M-MIME::Base64 -e 'print $MIME::Base64::VERSION'
3.13
[root@2d82556b4724 ~]# perl -M-MIME::QuotedPrint -e 'print $MIME::QuotedPrinERSION'
3.13
[root@2d82556b4724 ~]# perl -M-Encode -e 'print $Encode::VERSION'
2.51

したがって、popfileを利用するためにインストールすべきモジュールは次の通りである。

(1) DBI
(2) DBD::SQLite
(3) HTML::Tagset
(4) Date::Parse (all platforms except Windows)
(5) HTML::Template
(6) IO::Socket::Socks (if you want to use a SOCKS proxy)
(7) Net::SSLeay (if you want to use SSL)
(8) IO::Socket::SSL (if you want to use SSL)
(9) SOAP::Lite (if you want to use XMLRPC)
(10)  Digest::base
(11)  Digest::MD5

○一つ一つyumを使ってインストールを行った。

(1) DBI
[root@2d82556b4724 ~]# yum install perl-DBI
Total download size: 1.3 M
Installed size: 3.2 M
Installed:
  perl-DBI.x86_64 0:1.627-4.el7
Dependency Installed:
  perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7
  perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7
  perl-Data-Dumper.x86_64 0:2.145-3.el7
  perl-IO-Compress.noarch 0:2.061-2.el7
  perl-Net-Daemon.noarch 0:0.48-5.el7
  perl-PlRPC.noarch 0:0.2020-14.el7                                         
Complete!

(2) DBD::SQLite
[root@2d82556b4724 ~]# yum install perl-DBD-SQLite
Total download size: 1.3 M
Installed size: 5.4 M
Installed:
  perl-DBD-SQLite.x86_64 0:1.39-3.el7                                       
Complete!

(3) HTML::Tagset

[root@2d82556b4724 ~]# yum install perl-HTML-Tagset
Total download size: 18 k
Installed size: 19 k
Installed:
  perl-HTML-Tagset.noarch 0:3.20-15.el7

Complete!

(4) Date::Parse (all platforms except Windows)

[root@2d82556b4724 ~]# yum install perl-DateTime-Format-DateParse
Total download size: 2.5 M
Installed size: 14 M
Installed:
  perl-DateTime-Format-DateParse.noarch 0:0.05-5.el7                         
Dependency Installed:
  perl-Class-Load.noarch 0:0.20-3.el7
  perl-Class-Singleton.noarch 0:1.4-14.el7
  perl-Data-OptList.noarch 0:0.107-9.el7
  perl-DateTime.x86_64 2:1.04-6.el7
  perl-DateTime-Locale.noarch 0:0.45-6.el7
  perl-DateTime-TimeZone.noarch 0:1.70-1.el7
  perl-List-MoreUtils.x86_64 0:0.33-9.el7
  perl-Module-Implementation.noarch 0:0.06-6.el7
  perl-Module-Runtime.noarch 0:0.013-4.el7
  perl-Package-DeprecationManager.noarch 0:0.13-7.el7
  perl-Package-Stash.noarch 0:0.34-2.el7
  perl-Package-Stash-XS.x86_64 0:0.26-3.el7
  perl-Params-Util.x86_64 0:1.07-6.el7
  perl-Params-Validate.x86_64 0:1.08-4.el7
  perl-Sub-Install.noarch 0:0.926-6.el7
  perl-TimeDate.noarch 1:2.30-2.el7
  perl-Try-Tiny.noarch 0:0.12-2.el7

Complete!

(5) HTML::Template

epelリポジトリが必要なので導入しておく。

[root@2d82556b4724 ~]# yum install epel-release
Installed:
  epel-release.noarch 0:7-11                                                 
Complete!
[root@2d82556b4724 ~]# yum install perl-HTML-Template
================================================================================
 Package                   Arch          Version              Repository   Size
================================================================================
Installing:
 perl-HTML-Template        noarch        2.95-1.el7           epel         76 k
Installing for dependencies:
 perl-Digest               noarch        1.17-245.el7         base         23 k
 perl-Digest-MD5           x86_64        2.52-3.el7           base         30 k
Transaction Summary
================================================================================
Install  1 Package (+2 Dependent packages)
Total download size: 129 k
Installed size: 274 k
Complete!

(6) IO::Socket::Socks (if you want to use a SOCKS proxy)
Socksを用いない場合は不要なのでパスした。

(7) Net::SSLeay (if you want to use SSL)

[root@2d82556b4724 ~]# yum install perl-Net-SSLeay
Total download size: 285 k
Installed size: 991 k
Installed:
  perl-Net-SSLeay.x86_64 0:1.55-6.el7

Complete!

(8) IO::Socket::SSL (if you want to use SSL)

[root@2d82556b4724 ~]# yum install perl-IO-Socket-SSL
Total download size: 1.1 M
Installed size: 2.3 M
Installed:
  perl-IO-Socket-SSL.noarch 0:1.94-7.el7                                     
Dependency Installed:
  make.x86_64 1:3.82-23.el7             openssl.x86_64 1:1.0.2k-12.el7     
  perl-IO-Socket-IP.noarch 0:0.21-5.el7 perl-Mozilla-CA.noarch 0:20130114-5.el7
  perl-Net-LibIDN.x86_64 0:0.12-15.el7
Complete!

(9) SOAP::Lite (if you want to use XMLRPC)

これもepelリポジトリが必要である。

[root@2d82556b4724 ~]# yum install perl-SOAP-Lite
================================================================================
 Package                     Arch       Version                  Repository
                                                                           Size
================================================================================
Installing:
 perl-SOAP-Lite              noarch     1.10-1.el7               epel     293 k
Installing for dependencies:
 mailcap                     noarch     2.1.41-2.el7             base      31 k
 perl-Business-ISBN          noarch     2.06-2.el7               base      25 k
 perl-Business-ISBN-Data     noarch     20120719.001-2.el7       base      24 k
 perl-Class-Inspector        noarch     1.28-2.el7               base      31 k
 perl-Convert-BinHex         noarch     1.119-20.el7             epel      44 k
 perl-Email-Date-Format      noarch     1.002-15.el7             epel      17 k
 perl-Encode-Locale          noarch     1.03-5.el7               base      16 k
 perl-File-Listing           noarch     6.04-7.el7               base      13 k
 perl-HTML-Parser            x86_64     3.71-4.el7               base     115 k
 perl-HTTP-Cookies           noarch     6.01-5.el7               base      26 k
 perl-HTTP-Daemon            noarch     6.01-7.el7               base      21 k
 perl-HTTP-Date              noarch     6.02-8.el7               base      14 k
 perl-HTTP-Message           noarch     6.06-6.el7               base      82 k
 perl-HTTP-Negotiate         noarch     6.01-5.el7               base      17 k
 perl-IO-HTML                noarch     1.00-2.el7               base      23 k
 perl-IO-SessionData         noarch     1.03-1.el7               epel     8.5 k
 perl-LWP-MediaTypes         noarch     6.02-2.el7               base      24 k
 perl-MIME-Lite              noarch     3.030-1.el7              epel      96 k
 perl-MIME-Types             noarch     1.38-2.el7               epel      38 k
 perl-MIME-tools             noarch     5.505-1.el7              epel     256 k
 perl-MailTools              noarch     2.12-2.el7               base     108 k
 perl-Net-HTTP               noarch     6.06-2.el7               base      29 k
 perl-Net-SMTP-SSL           noarch     1.01-13.el7              base     9.1 k
 perl-URI                    noarch     1.60-9.el7               base     106 k
 perl-WWW-RobotRules         noarch     6.02-5.el7               base      18 k
 perl-XML-Parser             x86_64     2.41-10.el7              base     223 k
 perl-libwww-perl            noarch     6.05-2.el7               base     205 k
Transaction Summary
================================================================================
Install  1 Package (+27 Dependent packages)
Total download size: 1.9 M
Installed size: 4.2 M
Is this ok [y/d/N]:y
Complete!

(10)  Digest::base
[root@2d82556b4724 ~]# yum install perl-Digest
インストール済みとなった。
Package perl-Digest-1.17-245.el7.noarch already installed and latest version
Nothing to do

(11)  Digest::MD5
[root@2d82556b4724 ~]# yum install perl-Digest-MD5
Package perl-Digest-MD5-2.52-3.el7.x86_64 already installed and latest version
Nothing to do


■その他必要なツールをインストールした

[root@2d82556b4724 ~]# yum install gcc gcc-c++
Total download size: 40 M
Installed size: 84 M
Dependency Installed:
  cpp.x86_64 0:4.8.5-28.el7_5.1
  glibc-devel.x86_64 0:2.17-222.el7
  glibc-headers.x86_64 0:2.17-222.el7
  kernel-headers.x86_64 0:3.10.0-862.14.4.el7
  libgomp.x86_64 0:4.8.5-28.el7_5.1
  libmpc.x86_64 0:1.0.1-3.el7
  libstdc++-devel.x86_64 0:4.8.5-28.el7_5.1
  mpfr.x86_64 0:3.1.1-4.el7

Complete!

[root@2d82556b4724 ~]# yum install wget
Installed:
  wget.x86_64 0:1.14-15.el7_4.1
Complete!


■mecabのインストール

○mecabに関する3つのファイルのコピー

冒頭に挙げたページからmecabに関する3つのファイルをダウンロードしDockerホスト側に、保存しておいた。
それをコンテナにコピーした。

docker cp ではワイルドカードは使えなかった。
2d82556b4724は、コンテナIDである。
/root/software/popfile/mecab/ は予めコンテナに作成した。

ホストからコンテナへのコピー作業
# docker cp /mecab-0.996.tar.gz 2d82556b4724:/root/software/popfile/mecab/
# docker cp /mecab-ipadic-2.7.0-20070801.tar.gz 2d82556b4724:/root/software/popfile/mecab/
# docker cp /mecab-perl-0.996.tar.gz 2d82556b4724:/root/software/popfile/mecab/

コピーされたファイルの確認
[root@2d82556b4724 mecab]# ls
mecab-0.996.tar.gz  mecab-ipadic-2.7.0-20070801.tar.gz


○mecab本体のインストール

[root@2d82556b4724 mecab-0.996]# tar -zxvf mecab-0.996.tar.gz
[root@2d82556b4724 mecab-0.996]# cd mecab-0.996
[root@2d82556b4724 mecab-0.996]# ./configure
[root@2d82556b4724 mecab-0.996]# make
[root@2d82556b4724 mecab-0.996]# make install


○mecab辞書のインストール

[root@2d82556b4724 mecab-0.996]# cd ..
[root@2d82556b4724 mecab]# tar -zxvf mecab-ipadic-2.7.0-20070801.tar.gz
[root@2d82556b4724 mecab]# cd mecab-ipadic-2.7.0-20070801
[root@2d82556b4724 mecab-ipadic-2.7.0-20070801]#  ./configure --with-charset=utf8
[root@2d82556b4724 mecab-ipadic-2.7.0-20070801]# make
done!
echo To enable dictionary, rewrite /usr/local/etc/mecabrc as \"dicrc = /usr/local/lib/mecab/dic/ipadic\"
To enable dictionary, rewrite /usr/local/etc/mecabrc as "dicrc = /usr/local/lib/mecab/dic/ipadic"
[root@2d82556b4724 mecab-ipadic-2.7.0-20070801]# make install


○mecabの動作テスト

[root@2d82556b4724 mecab-ipadic-2.7.0-20070801]# mecab

日本語の文を適当に入力してエンターを押すと自動的に次のように解析された。
テスト中です
テスト  名詞,サ変接続,*,*,*,*,テスト,テスト,テスト
中      名詞,接尾,副詞可能,*,*,*,中,チュウ,チュー
です    助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
EOS
^C
CTRL+cで抜ける。


○mecab-perl-bindのインストール

[root@2d82556b4724 mecab-ipadic-2.7.0-20070801]# cd ..
[root@2d82556b4724 mecab]# tar -zxvf mecab-perl-0.996.tar.gz
[root@2d82556b4724 mecab]# cd mecab-perl-0.996
[root@2d82556b4724 mecab-perl-0.996]# yum install perl-ExtUtils-MakeMaker
[root@2d82556b4724 mecab-perl-0.996]# perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for MeCab
[root@2d82556b4724 mecab-perl-0.996]# make
[root@2d82556b4724 mecab-perl-0.996]# make install
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /usr/local/lib64/perl5/auto/MeCab/MeCab.so
Installing /usr/local/lib64/perl5/auto/MeCab/MeCab.bs
Installing /usr/local/lib64/perl5/MeCab.pm
Appending installation info to /usr/lib64/perl5/perllocal.pod


■popfile本体の導入

○準備

[root@2d82556b4724 mecab-perl-0.996]# cd ..
[root@2d82556b4724 mecab]# cd ..
[root@2d82556b4724 popfile]# mkdir popfile-1.1.3
[root@2d82556b4724 popfile]# cd popfile-1.1.3

[root@2d82556b4724 popfile-1.1.3]# yum install unzip
Total download size: 170 k
Installed size: 365 k
Installed:
  unzip.x86_64 0:6.0-19.el7                                                   
Complete!

○popfileをダウンロードし展開した。

[root@2d82556b4724 popfile-1.1.3]# wget http://getpopfile.org/downloads/popfile-1.1.3.zip
popfile-1.1.3.zip’ saved [523431/523431]
[root@2d82556b4724 popfile-1.1.3]# unzip popfile-1.1.3.zip
[root@2d82556b4724 popfile-1.1.3]# ls
Classifier  bayes.pl     license   popfile-1.1.3.zip  v1.1.3.change
POPFile     black.gif    otto.gif  popfile.pck        v1.1.3.change.nihongo
Proxy       favicon.ico  otto.png  popfile.pl
Services    insert.pl    pipe.pl   skins
UI          languages    pix.gif   stopwords


○popfileの設定

popfileを一度起動して設定ファイルを生成させた。

[root@2d82556b4724 popfile-1.1.3]# perl ./popfile.pl
POPFile Engine loading
    Loading...
         {core: config history logger mq}
         {classifier: bayes wordmangle}
         {interface: html xmlrpc}
         {proxy: nntp pop3 smtp}
         {services: imap}
POPFile Engine v1.1.3 starting
    Initializing...
         {core: config history logger mq}
         {classifier: bayes wordmangle}
         {interface: html xmlrpc}
         {proxy: nntp pop3 smtp}
         {services: imap}
    Starting...   
         {core: config history logger mq}
         {classifier: bayes wordmangle}
         {interface: html}
         {proxy: pop3}
         {services:}
POPFile Engine v1.1.3 running

^C ←ctrl+cを入力して一旦終了させた。


POPFile Engine v1.1.3 stopping
    Stopping...
         {classifier: bayes wordmangle}
         {core: config history logger mq}
         {interface: html}
         {proxy: pop3}
         {services:}
POPFile Engine v1.1.3 terminated

設定ファイルの確認
[root@2d82556b4724 popfile-1.1.3]# ls
Classifier  favicon.ico  pipe.pl            popfile1542758400.log
POPFile     insert.pl    pix.gif            skins
Proxy       languages    popfile-1.1.3.zip  stopwords
Services    license      popfile.cfg        v1.1.3.change
UI          messages     popfile.db         v1.1.3.change.nihongo
bayes.pl    otto.gif     popfile.pck
black.gif   otto.png     popfile.pl


必要最低限の設定を行った。
[root@2d82556b4724 popfile-1.1.3]# vi popfile.cfg
bayes_nihongo_parser MeCab ←大文字小文字に注意。さもなければ動作せず文字化けする。
html_language Nihongo ←日本語メールの処理、GUIの日本語化
html_local 0 ←127.0.0.1以外のインターフェイスへのアクセスでもGUIにアクセス許可(ただし、予めIPフィルタの設定を必ず適切に行っておくこと)
html_port 8081 ←GUIアクセスのためのTCPポートの設定

以上で、popfileの設定は完了した。



■popfileの起動(コンテナのイメージ化を伴う)

popfileを起動してhttp接続するためには、コンテナに8081ポートを通す必要がある。
そのため、一旦コンテナを終了し、ポートの設定を加えて起動する。

○コンテナの終了
[root@2d82556b4724 popfile-1.1.3]# poweroff


以下は、Dockerホストでの作業である。


○コンテナをコミットして、イメージ化を行った。

2d82556b4724はコンテナIDである。
[root@localhost ~]# docker commit 2d82556b4724 image-centos7-popfile-20181122


○イメージを使用して、コンテナを生成し動作させた。
8081ポートを開いた。
(インターネットに直に接している場合、Dockerのデフォルトではiptablesを書き換えて外部からのアクセスを許してしまうことになってしまうため厳禁である。)
[root@localhost ~]# docker run --privileged -d -p 222:22 -p 8081:8081 --name centos7-popfile-test image-centos7-popfile-20181122  /sbin/init
991e42c74bc86b9244ffda479c5e2786808525408bcb5cb0fad8c6d63c606a3a

○コンテナにSSH接続を行った。

$ ssh -p 222 root@192.168.10.3
root@192.168.10.3's password: 

以下はコンテナでの作業である。


○popfileの起動

ディレクトリへ移動した。
[root@991e42c74bc8 ~]# cd software/popfile/popfile-1.1.3/
[root@991e42c74bc8 popfile-1.1.3]# ls
Classifier  Services  black.gif    languages  otto.gif  pix.gif            popfile.db   popfile1542758400.log  v1.1.3.change
POPFile     UI        favicon.ico  license    otto.png  popfile-1.1.3.zip  popfile.pck  skins                  v1.1.3.change.nihongo
Proxy       bayes.pl  insert.pl    messages   pipe.pl   popfile.cfg        popfile.pl   stopwords

バックグラウンドで動作させた。
[root@991e42c74bc8 popfile-1.1.3]# perl ./popfile.pl &
[1] 161
[root@991e42c74bc8 popfile-1.1.3]#
POPFile Engine loading
    Loading...
         {core: config history logger mq}
         {classifier: bayes wordmangle}
         {interface: html xmlrpc}
         {proxy: nntp pop3 smtp}
         {services: imap}
POPFile Engine v1.1.3 starting
    Initializing...
         {core: config history logger mq}
         {classifier: bayes wordmangle}
         {interface: html xmlrpc}
         {proxy: nntp pop3 smtp}
         {services: imap}
    Starting...   
         {core: config history logger mq}
         {classifier: bayes wordmangle}
         {interface: html}
         {proxy: pop3}
         {services:}
POPFile Engine v1.1.3 running

[root@991e42c74bc8 popfile-1.1.3]#


ブラウザから、http://192.168.10.3:8081 に接続すると、popfileのコントロール画面が開いた。


以上



<参考>
・【Linux CentOS 6.5 64bit minimal】 POPFileインストール手順 (依存PerlモジュールをYUMで導入し、POPFileの起動と初期設定を完了させる)
< http://akira-arets.blogspot.com/2014/04/centos65minimal-popfile-mecab-installing.html > 2018年11月22日

・オフライン環境でCentOS7のパッケージをインストールする
< https://qiita.com/goforbroke/items/aafb1cb0549ee90c2d70 > 2018年11月22日

・Dockerでホストとコンテナ間でのファイルコピー
< https://qiita.com/gologo13/items/7e4e404af80377b48fd5 > 2018年11月22日

投げ銭

★当サイトへの投げ銭(PayPal)★

Ad

Ad