Tritonn(MySQL+Senna)+Mecab+Apahce+PHP5.2(with APC & imagick)をCentOS5にインストールする

バージョン等の最終更新:2009-10-24

PHPからTritonn(MySQL+Senna)を使うためのセットアップに若干ハマったので、メモ的にエントリー。

Tritonn(MySQL+Senna)だけでPHPからMySQLに接続するときは、Tritonnをソースからインストールしなくてはなりません。というのも、Tritonnプロジェクトではコンパイル済みのrpmをリリースしていますが、このrpmにはmysql-devel的なライブラリが同梱されていません。Tritonnだけをrpmからインストールした場合、PHPの./configure時にlibmysqlclient.soが見つからず、PHPのインストールを完了させることができないのです。(参考:tritonをphpから使う : 社長にはなれない僕だから。

mysql-develなパッケージをyumなどでインストールしてもよいのですが、可能な限りシンプルに済ませたいところです。

というわけで、Tritonnをソースからインストールする手順は以下の通りです。環境は CentOS5.2(32bit)をVMware Server(Win32)のゲストOSとして動作させています。

  1. 既存の重複するモジュールを削除する(あれば)
  2. MySQL用のユーザーグループをユーザーを作成する
  3. コンパイルに必要なもろもろのモジュールをyumでインストールする
  4. Mecabをソースからインストール
  5. Sennaをソースからインストール
  6. Tritonnをソースからインストール
  7. Apacheをソースからインストール
  8. PHPをソースからインストール
  9. imagickをソースからインストール

以下、コマンドライン上からの作業ログです。環境によってはこのままでインストールできないこともありますので、ご了承ください。

重複するモジュールを削除する

sudo yum remove mysql php httpd apr apr-util

MySQL用のユーザーグループとユーザーを作成する

sudo /usr/sbin/groupadd mysql
sudo /usr/sbin/useradd -g mysql mysql

各バイナリのインストールに必要なもろもろのモジュールを、yumでインストールする

sudo yum -y install \
gcc-c++ gcc-java gcc-objc gcc4 gcc4-c++ autoconf \
libpng-devel libjpeg-devel libmcrypt-devel ImageMagick-devel \
libtool automake bison ncurses-devel libtool-ltdl libtool-ltdl-devel \
( http://blog.livedoor.jp/k1LoW/archives/53521855.html を参考に、
libtool-ltdl libtool-tdl-devel を加えました )

作業用にユーザーディレクトリに srcディレクトリを作成

mkdir ~/src

Mecabをソースからインストール

cd ~/src
wget http://nchc.dl.sourceforge.net/sourceforge/mecab/mecab-0.97.tar.gz
#  ( http://mecab.sourceforge.net/ から最新版の取得を推奨します )
tar zxvf mecab-0.97.tar.gz
cd mecab-0.97
./configure --prefix=/usr --with-charset=utf8 && make && sudo make install

Mecab-IPA辞書をソースからインストール

cd ~/src
wget http://nchc.dl.sourceforge.net/sourceforge/mecab/mecab-ipadic-2.7.0-20070801.tar.gz
#  ( http://mecab.sourceforge.net/ から最新版の取得を推奨します )
tar zxvf mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --prefix=/usr --with-charset=utf8 && make && sudo make install

Sennaをソースからインストール

cd ~/src
wget http://globalbase.dl.sourceforge.jp/senna/33763/senna-1.1.4.tar.gz
#  ( http://qwik.jp/senna/Download.html から最新版の取得を推奨します )
tar zxvf senna-1.1.4.tar.gz
cd senna-1.1.4
./configure --prefix=/usr && make && sudo make install
#  ( ここでコンパイラがメモリを200MB以上確保するときがあるので、
#    ゲストOSの場合は最低でも512MBは割り当てたほうがよいです )

Tritonnをソースからインストール

cd ~/src
wget http://osdn.dl.sourceforge.jp/tritonn/36449/tritonn-1.0.12-mysql-5.0.67.tar.gz
#  ( http://qwik.jp/tritonn/download.html から最新版の取得を推奨します )
tar zxvf tritonn-1.0.12-mysql-5.0.67.tar.gz
cd tritonn-1.0.12-mysql-5.0.67
CC='gcc' CXX='gcc' \
./configure \
'--prefix=/usr/local/mysql' \
'--localstatedir=/usr/local/mysql/data' \
'--libexecdir=/usr/local/mysql/bin' \
'--enable-thread-safe-client' \
'--enable-local-infile' \
'--enable-assembler' \
'--with-pic' \
'--with-fast-mutexes' \
'--with-client-ldflags=-static' \
'--with-mysqld-ldflags=-static' \
'--with-zlib-dir=bundled' \
'--with-big-tables' \
'--with-yassl' \
'--with-readline' \
'--with-archive-storage-engine' \
'--with-blackhole-storage-engine' \
'--with-ndbcluster' \
'--with-csv-storage-engine' \
'--with-example-storage-engine' \
'--with-federated-storage-engine' \
'--with-innodb' \
'--with-extra-charsets=complex' \
'--with-senna' '--with-mecab' && make && sudo make install

#  ( コンパイルオプションは http://qwik.jp/tritonn/howtobuild.html と、
#    http://d.hatena.ne.jp/mir/20070803/p2 を参考にしました )

サービスへ「mysqld」として登録

sudo cp ./support-files/mysql.server /etc/init.d/mysqld
sudo chmod 755 /etc/init.d/mysqld
sudo /sbin/chkconfig --add mysqld

my.cnfを設定

# コピー元をmy-medium.cnf my-my-large.cnf 等から選択
sudo cp ./support-files/my-small.cnf /etc/my.cnf

DBを初期化し、ユーザーとグループを適切なものに変更

sudo /usr/local/mysql/bin/mysql_install_db --user=mysql
#  ( /usr/local/mysql/data 内にDBのファイルが初期化されます )

MySQL(Tritonn)をserviceから起動する

sudo /sbin/service mysqld start
Starting MySQL.                                            [  OK  ]

Apache (apr, apr-util, httpd) をソースからインストール

cd ~/src
# http://ftp.riken.jp/net/apache/httpd/ から最新を取得
wget http://ftp.riken.jp/net/apache/httpd/httpd-2.2.14.tar.gz
tar zxvf httpd-2.2.14.tar.gz

aprのインストール

cd ~/src/httpd-2.2.14/srclib/apr/
./configure  && make && sudo make install

apr-utilのインストール

cd ~/src/httpd-2.2.14/srclib/apr-util
./configure --with-apr=/usr/local/apr && make && sudo make install

httpdのインストール

cd ~/src/httpd-2.2.14
./configure \
--enable-so \
--enable-mods-shared=all \
--enable-modules=all \
--enable-ssl \
--with-ssl \
--with-mpm=prefork \
--with-apr=/usr/local/apr/ && make && sudo make install

Apacheをサービスへ「httpd」として登録

sudo cp build/rpm/httpd.init /etc/init.d/httpd
sudo chmod 755 /etc/init.d/httpd
sudo /sbin/chkconfig --add httpd

/etc/init.d/httpd を修正する

sudo vi /etc/init.d/httpd

# (以下の3行を修正)

- apachectl=/usr/sbin/apachectl
+ apachectl=/usr/local/apache2/bin/apachectl
- httpd=${HTTPD-/usr/sbin/httpd}
+ httpd=${HTTPD-/usr/local/apache2/bin/httpd]
-      CONFFILE=/etc/httpd/conf/httpd.conf
+      CONFFILE=/usr/local/apache2/conf/httpd.conf

PHPをソースからインストール

sudo yum install -y \
libmcrypt-devel libxml2 libxml2-devel libpng libpng-devel \
libjpeg libjpeg-devel curl curl-devel libtidy libtidy-devel \
freetype-devel ncurses-devel
cd ~/src
wget http://jp.php.net/get/php-5.2.11.tar.gz/from/this/mirror
#  ( http://www.php.net/downloads.php から最新版の取得を推奨します )
tar zxvf php-5.2.11.tar.gz
cd ~/src/php-5.2.11
'./configure' \
'--prefix=/usr/local' \
'--with-mysql=/usr/local/mysql' \
'--with-pdo-mysql=/usr/local/mysql' \
'--with-apxs2=/usr/local/apache2/bin/apxs' \
'--enable-mbstring' \
'--enable-mbregex' \
'--with-jpeg-dir' \
'--enable-ftp' \
'--enable-exif' \
'--enable-sockets' \
'--with-openssl' \
'--with-zlib' \
'--with-gd' \
'--with-curl' \
'--enable-zend-multibyte' \
'--enable-pcntl' \
'--with-mcrypt' \
'--with-tidy' && make && sudo make install

APCをソースからインストール

cd ~/src
wget http://pecl.php.net/get/APC-3.0.19.tgz
#  ( http://pecl.php.net/package/APC から最新版stableの取得を推奨します )
tar zxvf APC-3.0.19.tgz
cd ~/src/APC-3.0.19
phpize && ./configure --with-apc && make && sudo make install

imagickをソースからインストール

cd ~/src
wget http://pecl.php.net/get/imagick-2.3.0.tgz
#  ( http://pecl.php.net/package/imagick から最新版の取得を推奨します )
tar zxvf imagick-2.3.0.tgz
cd ~/src/imagick-2.3.0
phpize && ./configure --with-imagick && make && sudo make install

php.iniの作成

sudo vi /usr/local/lib/php.ini
# 以下を追記
extension=apc.so
extension=imagick.so

httpdの起動

$ sudo /sbin/service httpd start
Starting httpd:                                            [  OK  ]

あとは http://qwik.jp/tritonn/basictutorial.html を見てチュートリアルを試すなり、PHPから接続してみるなりして動作確認をしてください。

コメント / トラックバック

コメント / トラックバック 1 件

  1. サカえもん より:

    CentOSでメンテナンス性を考えるなら、SRPMのSPECファイルを書き換えてrpmbuildするという方法もありますよ。ちょっと面倒ですが。