SSブログ
CENTOS de LAMP ブログトップ
前の10件 | -

wikipedia ダンプ取り込み [CENTOS de LAMP]

VMのディスク容量を増やしてよっしゃということで、取り込みに挑戦してみます。
・環境
windowsのVMware 20GB
os CentOS 5.4

1.expat-2.0.1

 wget http://downloads.sourceforge.net/expat/expat-2.0.1.tar.gz
 ./configure
 make
 make install

2.xml2sql

 wget http://meta.wikimedia.org/wiki/Xml2sql
 tar xvfz xml2sql-0.5.tar.gz
 cd xml2sql-0.5
 ./configure --with-expat=/usr/local/lib
 make
 cp xml2sql /usr/local/bin/.

3.mysql で格納先DBを作っておく
 ※既存DBを使うならば不要

4.MediaWiki

 wget http://download.wikimedia.org/mediawiki/1.15/mediawiki-1.15.2.tar.gz
 tar xvfz mediawiki-1.15.2.tar.gz
 cd mediawiki-1.15.2
 mysql DB名 < maintenance/tables.sql


5.データファイルのダウンロード

 wget http://download.wikimedia.org/jawiki/latest/jawiki-latest-pages-meta-current.xml.bz2
 bunzip jawiki-latest-pages-meta-current.xml.bz2
 cat jawiki-latest-pages-meta-current.xml | sed -e 's/<redirect \/>//' | xml2sql

 page.txt
 revision.txt
 text.txt の3点が出来ました。


6.mysqlimport で投下

 mysqlimport --fields-terminated-by='\t' --default-character-set=utf8 -u ユーザ名 -p -d -L DB名 text.txt
 
 mysqlimport --fields-terminated-by='\t' --default-character-set=utf8 -u user_hoge -p -d -L hoge_db text.txt
 mysqlimport --fields-terminated-by='\t' --default-character-set=utf8 -u user_hoge -p -d -L hoge_db revision.txt
 mysqlimport --fields-terminated-by='\t' --default-character-set=utf8 -u user_hoge -p -d -L hoge_db page.txt

こんな感じとなりました。
すげー時間かかるなぁ。

※※
 maintenance/tables.sql を書き換えると相当早くなるようでした。
 更新しないならばUNIQUE INDEXを削除と、テーブルをMyISAM指定にします。
 1:tables.sqlを開く
 2:UNIQUE INDEX で検索し、その行を全て削除
 3:"/*$wgDBTableOptions*/" を "ENGINE = MyISAM" に一括置換
 (おまけ:page, revision, text 以外どうせ使わんのなら、それ以外のCREATE TABLE文を削る)
これでトータル30分ぐらいになりました。

VMのディスク拡張 [CENTOS de LAMP]

開発環境のVMwareのディスクの容量を増やしました。

 ※ローカル win XP
 ※VMware centos 5.4

元々8GBでやっていたんですが、wikipedia ダンプを取り込んだDBを
作成して検証する作業があったので、容量を増やさねばならなくなりました。
けっこう手こずったのでメモします。

0:VMが起動してたら落とす

1:vmware-vdiskmanager.exe とやらを使う。
 自分の場合はココ。C:\Program Files\VMware\VMware Server\
 
 コマンドプロンプトより、
 C:\Program Files\VMware\VMware Server\vmware-vdiskmanager.exe -x 20Gb VMバーチャルディスク名.vmdk
 ちょっとかかるけど、ファイルが20GBまでこれで増える。
 でもこれだけじゃダメみたいで、パーティションの設定をします。

2:VM起動

3:fdiskでパーティションの設定
 /sbin/fdisk /dev/hda
 Command (m for help): ⇒ n
 Command action ⇒ p
 Partition number (1-4): ⇒ 3
 First cylinder (1045-1305, default 1045): ⇒ 1045
 Last cylinder or +size or +sizeM or +sizeK (メモし忘れた・・): ⇒ デフォルトの数値
 
 Command (m for help): ⇒ t
 Partition number (1-4): ⇒ 3
 Hex code (type L to list codes): ⇒ 8e
 Command (m for help): ⇒ w

 で終わり

4:reboot

5:確認
 /sbin/fdisk -l  なんとなく増えてたからOK

6:以下全然わからんが必要コマンド
 /usr/sbin/pvcreate /dev/hda3
 /usr/sbin/vgextend VolGroup00 /dev/hda3
 /usr/sbin/lvextend -L +2G /dev/VolGroup00/LogVol00
 /sbin/resize2fs /dev/VolGroup00/LogVol00

 df -k で増えてれば多分OK

Zend_db Mssqlの不具合? [CENTOS de LAMP]

CentOS5 - php5.2 - windows server の SQL server2005・・・で
Webアプリ開発しています。Zend_Frameworkってーのも使っています。

SQL Server の場合のZend_Paginatorってバグってね?ってなって調べたんですが
全然出てきませんでした。英語読めないし。

なんか、複数のページにまたいで出てきてしまうものがいる。
SQL 見てみた。 全23件、5件ずつ、2ページ目の場合、
SELECT * FROM (
   SELECT TOP 5 * FROM (
      SELECT TOP 10 xxx FROM XXXX
      WHERE xxx = yyyy
      ORDER BY 1 desc
   ) AS inner_tbl ORDER BY 1 ASC
) AS outer_tbl ORDER BY 1 desc

まぁこれはいいんですが、5ページ目の場合、
SELECT * FROM (
   SELECT TOP 5 * FROM (
      SELECT TOP 25 xxx FROM XXXX
      WHERE xxx = yyyy
      ORDER BY 1 desc
   ) AS inner_tbl ORDER BY 1 ASC
) AS outer_tbl ORDER BY 1 desc

うーーん、こりゃぁ確かに最後おかしくなるわな。
5ページ目って3件じゃなくて5件取れてしまう。
TOP25もおかしいし、outer_tblのTOP5もおかしいわ!

実際にこのSQLにしているのは、
Zend/Db/Adapter/Pdo/Mssql.php の limit functionであって、

元のSQLは↓の分で、
SELECT xxx FROM XXXX
WHERE xxx = yyyy
ORDER BY 1 desc
こんな感じです。

必死にinner_tblとouter_tblを結合させて頑張ってる。
がダメじゃねーか。 TOPの件数ちゃんと変更しろや。

ライブラリ探すのもパッチあるかもしれないけど探すのめんどいから
直接男前に書き換えてやりました。
幸いにも SQL Server2005なので、ROW_NUMBER() と betweenを使って
同様のページング処理をする事ができます。

Zend/Db/Adapter/Pdo/Mssql.php limit functionを以下に変更

public function limit($sql, $count, $offset = 0)
{
$count = intval($count);
$offset = intval($offset);

$orderby = stristr($sql, 'ORDER BY');
$sql = str_replace($orderby, '', $sql);
$sql = preg_replace(
'/^SELECT\s+(DISTINCT\s)?/i',
'SELECT row_number() over('. $orderby .') as row, ',
$sql
);
$sql = 'SELECT * FROM ('.$sql.') innertable ';
$sql = $sql.'where row between '. ($offset+1). ' and ' . ($offset+$count);
return $sql;
}
これだけ!だいぶ短くなりました。

これでちゃんと取れるようになった。
ホントはちゃんと派生させてオーバーライドする方がいいけど、めんどくせ。

この動作環境もレアだろうけども、同じ問題に直面してる人あまりいねーのかな?

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:仕事

LINUX勉強 ~その11~ centosとLAMP環境 [CENTOS de LAMP]

○senna のインストール2

 まぁ当然似たような境遇の方が多いわけで、sennaってやつにたどりつきました。
 インストールしてみます。

  1:MeCabのインストール
   http://sourceforge.net/projects/mecab/files/ 0.98本体 2.7.0辞書
  2:sennaのインストール
   http://sourceforge.jp/projects/senna/releases/ 1.1.4
  3:Tritonnのインストール
   
 の順で行います。

 1:MeCabのインストール
  なにかはよくわからん。必須との事なのでいれる。
  参考は こちら

  1.1:ダウンロードと解凍
   相変わらずダウンロードしておいて /tmp/に置きます。
   mecab-0.98.tar.gz
   mecab-ipadic-2.7.0-20070801.tar.gz
   両方とも tar xvzf で解凍しておきます。

  1.2:configure と make と make install
   cd mecab-0.98
   ./configure --prefix=/usr/local/ --with-charset=utf8
   make
   make install

   cd ../mecab-ipadic-2.7.0-20070801
   ./configure --prefix=/usr/local/ --with-charset=utf8
   make
   make install

  1.3:おまじない?
   いらないかも
   /usr/local/libexec/mecab/mecab-dict-index -c utf8

  1.4:辞書確認
   適当なパスで mecab
   空のプロンプトになるから、日本語をうつ。

   # mecab
   空のプロンプトになるから、日本語をうつ。
   空 名詞,一般,*,*,*,*,空,ソラ,ソラ
   の 助詞,連体化,*,*,*,*,の,ノ,ノ
   プロンプト 名詞,一般,*,*,*,*,*
   に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
   なる 動詞,自立,*,*,五段・ラ行,基本形,なる,ナル,ナル
   から 助詞,接続助詞,*,*,*,*,から,カラ,カラ
   、 記号,読点,*,*,*,*,、,、,、
   日本語 名詞,一般,*,*,*,*,日本語,ニホンゴ,ニホンゴ
   を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
   うつ 動詞,自立,*,*,五段・タ行,基本形,うつ,ウツ,ウツ
   。 記号,句点,*,*,*,*,。,。,。
   EOS

   正常完了。Ctrl+Cで終了

 2:sennaのインストール
  1.1:ダウンロードと解凍
   相変わらずダウンロードしておいて /tmp/に置きます。
   senna-1.1.4.tar.gz
   tar xvzf で解凍しておきます。

  1.2:configure と make と make install
   cd senna-1.1.4
   ./configure --prefix=/usr/local/
   make
   make install

 3:Tritonnのインストール
  3.1:ダウンロードと解凍
   cd /tmp/
   たまにはwgetで落してみる
   wget http://osdn.dl.sourceforge.jp/tritonn/36449/tritonn-1.0.12-mysql-5.0.67.tar.gz
   tar xvzf tritonn-1.0.12-mysql-5.0.67.tar.gz

  3.2:configure と make と make install
   cd tritonn-1.0.12-mysql-5.0.67
   ./configure
    --prefix=/usr/local/mysqltri
    --libexecdir=/usr/local/mysqtri/bin
    --localstatedir=/home/mysqltri/data
    --enable-thread-safe-client
    --enable-assembler
    --enable-local-infile
    --with-charset=utf8
    --with-collation=utf8_general_ci
    --with-extra-charsets=all
    --with-pic --with-pthread
    --with-mysqld-user=mysql
    --with-innodb
    --with-mecab=/usr/local
    --with-senna=/usr/local

   ※ mecab と senna は、/usr/localではなく /usr/にいれるべきだったらしい。。。。

   make
   make install

  ※参照 http://xavier-logs.blog.so-net.ne.jp/2009-11-09-2

  3.3:設定
   cd /usr/local/
   chown -R mysql:mysql mysqltri
   cd mysqltri
   mkdir var
   chown -R mysql:mysql var

  3.4:my.cnf修正
   vi /etc/my.cnf

   innodb_data_home_dir = /usr/local/mysqltri/var/
   innodb_log_group_home_dir = /usr/local/mysqltri/var/

  3.5:mysql起動ファイル
   vi /etc/init.d/mysql
   mysql をmysqltriに修正

  3.6:初期化
   /usr/local/mysqltri/bin/mysql_install_db --user=mysql

  ※注意点
   mysql.server ファイルと、my.cnfファイルは元々インストール済の
   設定ファイルを使うと痛い目にあう。
   てゆうか起動しない。
   ちゃんと tritonn版のをコピーしないとNGでした。

  3.7:起動
   /etc/init.d/mysql start
   はいOK!

 4:phpのインストールし直し
  configure時に、mysqlのパスだけ mysqltriに修正

  一度、make clean, make distclean を忘れずに。

 5:やってみる
  CREATE TABLE t1 (c1 TEXT, FULLTEXT INDEX ft USING NGRAM (c1)) ENGINE = MyISAM DEFAULT CHARSET utf8;

  SHOW SENNA STATUS\G

  適当にデータをつっこみ、

  SELECT * FROM t1 WHERE MATCH(c1) AGAINST("キーワード1 キーワード2" in boolean mode);
  ※boolean modeは日本語検索で必ずつける
  ※キーワードはスペース区切り
  ※デフォルトだと or検索なので、and検索したい時はキーワードの頭に「+」(プラス)をつける。

タグ:CentOS MySQL

LINUX勉強 ~その10~ centosとLAMP環境 [CENTOS de LAMP]

○senna のインストール1

 mysqlにもどうやらFULLTEXTカタログ的なものがあるらしい。
 これをSQL Serverで知った時はすごかった。
 「検索はえぇぇぇぇ!!」とSQL Serverを初めて見直したもんだ。
 だが、どうも日本語全文検索など、若干弱いようだ。
 テーブルエンジンも MyISAMでないとNGとか、InnoDBをデフォで考えていたので
 これは応える。トランザクションがテーブルロックしかできんとか。
 しかもいちいちロック構文が必要?。めんどくせー。
 だが、utf8だったらひらがな、カタカナ、全角半角等のゆらぎは同じと認識してくれるらしい。
 (ならば何故日本語の識別がうまくできんのだ・・・。)

 しかし、一応あるのだからと使ってみる事にしました。
 既存の詳細テーブルを MyISAMに変えるわけにはいかんので、
 検索用のテーブルを作成しました。

 CREATE TABLE テーブル名 (
  `id` INT NOT NULL COMMENT '識別子ID' ,
  `search_text` TEXT NOT NULL COMMENT '検索用テキスト' ,
  PRIMARY KEY (`id`) )
 ENGINE = MyISAM;
 CREATE FULLTEXT INDEX `tbl_FT1` ON テーブル名 (`search_text` ASC);

 こんな感じですね。
 で、詳細テーブルの更新があったら、都度検索用テーブルを更新しようと
 企みました。

 で、テーブルにはこんな感じでデータをつっこみました。
  1 hogehogehogehoge
  2 あああ 本日は晴天なり
  3 hogeあいうえおかきくけこ
  4 hoge てててて

 SELECT * FROM テーブル
 WHERE MATCH(search_text) AGAINST('hoge');

 これだと、4しかひっかかりませんでした。
 まぁ当然です。英単語と違ってスペースないからね。
 やりたい事は、SELECT * FROM テーブル WHERE search_text like '%hoge%';
 なので、1,3,4が帰ってきてほしい。

 さてどうしたものか、、、と考えてて、sennaがヒットしました。
 めんどくせーなー。

 ※
 /etc/my.cnf を修正しておく。
 [mysqld]
 ft_min_word_len=1

LINUX勉強 ~その9~ centosとLAMP環境 [CENTOS de LAMP]

とりあえず、一通り動くようになりました。
ちょっとズレますが、memcache というのをいれると、ある程度のDB情報等を
メモリキャッシュに保存してくれる(?)ようで、ある程度サクサクになるそうです。
で、インストールしたのでメモります。

1:memcachedをyumでインストールするために、yumリポジトリに追加する
 cd /etc/yum.repos.d
 wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
 rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
 vi rpmforge.repo
 enabled = 1 になっているので、0にして保存
 yum --enablerepo=rpmforge list *mem* で、 「memcached.i386」が出てくればOK

2:yumでインストール
 yum -y --enablerepo=rpmforge install memcached.i386
 /etc/rc.d/init.d/memcached があればOK。設定ファイルは変更不要

3:memcachedをphpで使えるようにする
 ※これは php5.2.10以上で必要となる。きっとおまじない。
  具体的な内容は不明。
 cd /usr/local/lib/php/
 rm -rf .channels
 pecl channel-update pecl.php.net
 pear channel-update pear.php.net

 ll -a で channelsが復活してるのを確認

4:必要パッケージインストール
 yum -y install libevent (多分既にある)
 yum -y install libevent-devel

5:インストール
 pecl install memcache (memcache「d」じゃないから注意)

 Build process completed successfully
 Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20060613/memcache.so'
 install ok: channel://pecl.php.net/memcache-2.2.5
 configuration option "php_ini" is not set to php.ini location
 You should add "extension=memcache.so" to php.ini

 というメッセージが出るので、php.iniを開いて付加する。
 また、/usr/local/lib/php/ext フォルダが出来ているはず

6:php.iniの修正
  1:extension=memcache.so 追加
  2:extension_dir = "/usr/local/lib/php/ext" に変更

7:ファイルコピー
 cd /usr/local/lib/php
 mkdir ext
 chown -R root:root ext
 cd ext
 cp ../extensions/no-debug-non-zts-20060613/memcache.so .

8:apache再起動
 /etc/rc.d/init.d/httpd reload

9:確認
 php -i | grep memcache で warningが出なければOK

 memcache
 memcache support => enabled
 memcache.allow_failover => 1 => 1
 memcache.chunk_size => 8192 => 8192
 memcache.default_port => 11211 => 11211
 memcache.default_timeout_ms => 1000 => 1000
 memcache.hash_function => crc32 => crc32
 memcache.hash_strategy => standard => standard
 memcache.max_failover_attempts => 20 => 20
 Registered save handlers => files user sqlite memcache

10:動くようにしとく
 chkconfig memcached on

多分これでOK。
memcache確認phpとか、ぐぐるとけっこう出てくるので適当に使ってみてはいOK!

LINUX勉強 ~その8~ centosとLAMP環境 [CENTOS de LAMP]

CentOS 5.4 インストール時のキャプチャを撮りました。

1:そのまま次へを押下すればよし
1_osinstall.gif

2:日本人なら日本語を選んでおく
2_osinstall.gif

3:日本人なら日本語を選んでおく 英語KBの方なら英語でも。
3_osinstall.gif

4:フォーマットパターン。 どうせ全部初期化するからドライブ全部初期化を選んだ。
4_osinstall.gif

5:DHCPなんて使わないんで、サーバ名?ホスト名?を入力しておいた
5_osinstall.gif

6:日本在住なら「アジア/東京」選んどけ
6_osinstall.gif

7:root パスワード入力
7_osinstall.gif

8:ここが重要!
・Desktop - GNOME とかデフォルトチェックを外す。GUI なんて男前に使わない選択。
  「今すぐカスタマイズする」を選択して、「次へ」を選択
8_osinstall.gif

9:左側の「アプリケーション」から「テキストベースのインターネット」
 こんなのいらないからチェック外す。
9_1_osinstall.gif

10:ちょー重要!
 左側の「開発」から「開発ツール」 のチェックをつける。
 これないとソースからインストールしたい時いろいろエラーになってしまう。
9_2_osinstall.gif

11:左側の「ベースシステム」から「システムツール」 のチェックをつける。
  右下の「オプションパッケージ」を選択する。
9_3_osinstall.gif

12:「sysstat~~~ごにょごにょ」のチェックをつける。
 いれておいた方がいいらしい。
9_4_osinstall.gif

13:果報は寝て待て
10_osinstall.gif

あとは勝手にここまでくるはず。

LINUX勉強 ~その7~ centosとLAMP環境 [CENTOS de LAMP]

configureのパラメータ系をおさらい。

1:apache 2.2.14
  ./configure \
   --enable-so \
   --enable-rewrite \
   --enable-rewrite=shared \
   --enable-ssl \
   --with-ssl=/usr/include/openssl/ \
   --enable-ssl=shared \
   --enable-auth_digest=shared

2:mysql 5.1.40
 ./configure
  --with-charset=utf8
  --with-extra-charsets=all
  --with-mysqld-user=mysql
  --with-innodb
  --prefix=/usr/local/mysql

3:php 5.2.11
 ./configure \
  --with-apxs2=/usr/local/apache2/bin/apxs \
  --with-mysql=/usr/local/mysql \
  --with-pdo-mysql=/usr/local/mysql \
  --with-jpeg-dir=/usr/local/lib \
  --with-png-dir=/usr/lib \
  --with-zlib-dir=/usr/lib \
  --with-zlib \
  --enable-mbstring \
  --enable-mbregex \
  --enable-zend-multibyte \
  --with-gd \
  --with-mcrypt \
  --with-openssl=shared

LINUX勉強 ~その6~ centosとLAMP環境 [CENTOS de LAMP]

全部入れなおしておさらいします。

1:OS
 開発ツールキット、sysstatってやつをいれる。GUIいらない
2:システム設定
3:yum インストール
 openssl-devel
 libpng-devel
 libjpeg-devel
 libmcrypt-devel
 ncurses-devel
 libxml2-devel
4:apache2.2.14
 apache 最新 2.2.14 (2009.11.05)
 http://ftp.riken.jp/net/apache/httpd/httpd-2.2.14.tar.gz
 wget - configure - make - makeinstall
 cp /tmp/httpd-2.2.14/build/rpm/httpd.init /etc/rc.d/init.d/httpd
 ・httpd編集
   apachectl=/usr/local/apache2/bin/apachectl
   httpd=/usr/local/apache2/bin/httpd
   pidfile=${PIDFILE-/usr/local/apache2/logs/httpd.pid}
   CONFFILE=/usr/local/apache2/conf/httpd.conf
 ・/usr/local/apache2/conf/httpd.conf編集
   ServerName サーバ名:80 とか。
   <IfModule mime_module> 末尾に
   AddType application/x-httpd-php .php を付加して、phpが動くようにしておく
 ・自動起動設定
   chkconfig --add httpd
   chkconfig --list httpd
   httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
   2~5がonになっていないので、自動起動しないから自動起動するようにする。
   chkconfig httpd on
   chkconfig --list httpd
   httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
 ・再起動
   /etc/rc.d/init.d/httpd restart
5:mysql5.1.40
 mysql 最新 5.1.40 (2009.11.05)
 win系PCでダウンロードしておいて、WinSCPで /tmp/に事前にアップしておいた。
 configure - make - makeinstall
 cp /tmp/mysql-5.1.40/support-files/my-medium.cnf /etc/my.cnf
 ・my.cnf編集
   innodb_buffer_pool_size = 512M とかを変えて、小さい範囲だけで動くのを変える
   cp /tmp/mysql-5.1.40/support-files/mysql.server /etc/init.d/mysql
 ・起動ファイルの配置。変更不要
   chmod 755 /etc/init.d/mysql
 ・自動起動設定
   chkconfig --add mysql
   chkconfig --list mysql
   mysql 0:off 1:off 2:off 3:off 4:off 5:off 6:off
   2~5がonになっていなかったら、自動起動しないから自動起動するようにする。
   chkconfig mysql on
   chkconfig --list mysql
   mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
 ・再起動
   /etc/rc.d/init.d/mysql restart
6:php5
  php 最新 5.2.11(2009.11.05)
  http://jp2.php.net/get/php-5.2.11.tar.gz/from/jp.php.net/mirror
  wget - configure - make -makeinstall
  warningたくさんどうしても出てしまう。仕方なしに無視。
  libtool --finish /tmp/php-5.2.11/libs
  cp /tmp/php-5.2.11/php.ini-dist /usr/local/lib/php.ini
 ・php.ini編集
  たくさんあるから別途
  /usr/local/apache2/conf/httpd.conf を開く
 ・LoadModule php5_module modules/libphp5.so があるか確認
  権限変更
  cd /usr/local/apache2/modules/
  chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t libphp5.so
  php -v でエラー系がなければOK
  /etc/rc.d/init.d/httpd restart (apache再起動)

LINUX勉強 ~その5~ centosとLAMP環境 [CENTOS de LAMP]

mysqlをいれたので、phpを入れなおします。

0:configure叩き直し
cd /tmp/php-5.2.11

ここで ./configure実行。パラメータは以下にした。

./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-pdo-mysql=/usr/local/mysql \
--with-jpeg-dir=/usr/local/lib \
--with-png-dir=/usr/lib \
--with-zlib-dir=/usr/lib \
--with-zlib \
--enable-mbstring \
--enable-mbregex \
--enable-zend-multibyte \
--with-gd \
--with-mcrypt \
--with-openssl

で、エラー。
configure: error: Cannot find OpenSSL's evp.h

なんだこれ。
OpenSSLで、なんだかエラー。
ググって --with-openssl-dir=/usr/lib/openssl ってのをつけてみた。
しかしこれでもエラーだった。

1:有識者に相談
yum list opensslを叩いた。

[root@localhost php-5.2.11]# yum list openssl
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* addons: rsync.atworks.co.jp
* base: rsync.atworks.co.jp
* extras: rsync.atworks.co.jp
* updates: rsync.atworks.co.jp
Installed Packages
openssl.i686 0.9.8e-12.el5 installed
Available Packages
openssl.i386 0.9.8e-12.el5 base

まぁ出たからどうという事はない。見ても意味わからん。

続いてこちら
yum info openssl-devel

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* addons: rsync.atworks.co.jp
* base: rsync.atworks.co.jp
* extras: rsync.atworks.co.jp
* updates: rsync.atworks.co.jp
Available Packages
Name : openssl-devel
Arch : i386
Version : 0.9.8e
Release : 12.el5
Size : 1.9 M
Repo : base
Summary : Files for development of applications which will use OpenSSL
URL : http://www.openssl.org/
License : BSDish
Description: OpenSSL は暗号をサポートするためのツールキットです。openssl-devel
: パッケージには各種の暗号化アルゴリズムとプロトコルをサポートした
: アプリケーションを開発するために必要な静的ライブラリとヘッダーファイルが
: 含まれています。

まぁ出たからどうという事はない。見ても意味わからん。
多分 Installedなんちゃらがないから入ってないんだろう。

続いてこちら。
yum -y install openssl-devel
で、インストール。

2:再度configure叩き直し
cd /tmp/php-5.2.11

./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-pdo-mysql=/usr/local/mysql \
--with-jpeg-dir=/usr/local/lib \
--with-png-dir=/usr/lib \
--with-zlib-dir=/usr/lib \
--with-zlib \
--enable-mbstring \
--enable-mbregex \
--enable-zend-multibyte \
--with-gd \
--with-mcrypt \
--with-openssl
--with-openssl-dir=/usr/lib/openssl ← こいつが新たに追加された

またエラー。。。
configure: error: libjpeg.(a|so) not found

よくわからんけど必須らしいです。画像処理で使うんか。
yum -y install libpng-devel
yum -y install libjpeg-devel
この2つインストールして 再 configure

エラー。。。心折れそうだ。
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
よくわからんけど必須らしいです。暗号化で使うんか。
yum -y install libmcrypt-devel
インストールして 再 configure

やっと成功。

3:やっとコンパイル
make
大成功?

4:インストール
make install
すでに入っているが無視して実行

5:php.iniファイル修正
/usr/local/lib/php.iniを一応確認。
以前修正したのと同じままだった。

6:php -v といれてみる
なんかワーニングが出ますね。
root@localhost ~]# php -v
PHP Warning: PHP Startup: Unable to load dynamic library
'/usr/local/lib/php/ext/php_openssl.dll'
- /usr/local/lib/php/ext/php_openssl.dll:
cannot open shared object file: No such file or directory in Unknown on line 0
PHP 5.2.11 (cli) (built: Nov 6 2009 11:24:27)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies

またopensslか。。。
extension=openssl.dll
これを extension=openssl.so に変更した。

/usr/local/lib/php 配下を調べると、extフォルダなんてもんはない。
どうやら makeあたりから地味に失敗している。

ふむー。困りました。
最初にOSインストール時に開発ツールキットを入れたりしてないのが
まずいみたいです。
だいぶぐちゃぐちゃになってしまいました。
全部初期化してOSから入れる事にします。

※入れなおした後に発覚して、
 php.ini の extension=openssl.so を追加したのがまずかったらしい。
 opensslをソースで入れた場合は必要ですが、パッケージで入れた場合は必要ないと思われる。


前の10件 | - CENTOS de LAMP ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。