カテゴリの投稿: » サーバ・ネットワーク

64bitのLinuxサーバにPHPを./configureする際にlibjpeg, libpng, ldapなどがない!と怒られる

Written in 2011年05月20日 by シンプル・アイ社長 | コメントする( 0件 )

64ビットのLinuxサーバにPHPをソースインストールで./configureする際に、予期せず以下のようなエラーに遭遇したことはないだろうか。

configure: error: libjpeg.(a|so) not found. php 5.2.17

configure: error: libpng.(a|so) not found. php 5.2.17

単にlibjpeg-devel, libpng-develがインストールされていないなら、

yum install libjpeg-devel

yum install libpng-devel

でインストールすればいい。しかし、これはもうやったのに、上記エラーが出る場合、32bit(i386)のライブラリがインストールされていない可能性がある。

# ls -la /usr/lib | grep libjpeg
lrwxrwxrwx   1 root root      17  5月 20 15:58 libjpeg.so -> libjpeg.so.62.0.0
lrwxrwxrwx   1 root root      17  5月 20 15:58 libjpeg.so.62 -> libjpeg.so.62.0.0
-rwxr-xr-x   1 root root  134268  1月  6  2007 libjpeg.so.62.0.0

のように、/usr/lib の中に、ライブラリが入っているか確認するといい。もしかしてなかったりしませんか? 次に64ビット用ライブラリも確認してみよう。

# ls -la /usr/lib64 | grep libjpeg
lrwxrwxrwx  1 root root      17  5月 20 15:17 libjpeg.so -> libjpeg.so.62.0.0
lrwxrwxrwx  1 root root      17  7月  2  2010 libjpeg.so.62 -> libjpeg.so.62.0.0
-rwxr-xr-x  1 root root  138936  1月  6  2007 libjpeg.so.62.0.0

こちらは有ったりしませんか?
なんだ、64bitのしかないなら、

./configure –with-libdir=lib64

のように指定すればいいではないか。でもやってみると、今度は、mysql_clientがないとか言われたりする。今度は32ビット版のライブラリしかないものが見つからなくなってしまう。。。困ったもんだ。

もし、yumでインストールしたlibjpegやlibpngのライブラリが64ビット版はあり、32ビット版がないという状況の場合、yumでi386のパッケージを除外する設定がされている可能性があります。普通、libjpeg, libpngは、yumインストールすると32ビット版、64ビット版の両方がインストールされるはずだからです。以下のように確認してみよう。

# cat /etc/yum.conf

設定の中に、

exclude=*.i386

のような記述があればコメントアウトする必要がある。これでyum install libjpeg-develで、32ビット版のライブラリもインストールされるはずだ。

/etc/yum.repos.d/

の中にあるファイルに関しても確認してみル必要があるかもしれない。

 

Apache2.2+PHP5.3+MySQL5.5環境でApacheが立ち上がらない

Written in 2011年03月23日 by シンプル・アイ社長 | コメントする( 0件 )

最近、Apache2.2+PHP5.3+MySQL5.5の構築をしました。何度もしていたので甘く見てたら、Apache起動でOKと表示されるものの実際には立ち上がっておらず、ログにもエラーが出ていなかったので、とても困りました。

おそらくopensslの複数バージョンの混在が原因ではないかと思います。RPM版のopenssl0.9.8eが入っており、別途ソースインストールで、/usr/local/openssl にopenssl1.0.0cを入れていました。

MySQL5.5では、コンパイル時にCmakeを使うようになり、設定方法が以前と変わっており、opensslのインストールPREFIXを指定できずに(方法があるのかもしれませんが、、、)、デフォルトのディレクトリ/usr からライブラリを組み込むようで、RPM版のopenssl0.9.8eが組み込まれました。

一方、PHPではopensslのインストールディレクトリを指定できるので、/usr/local/openssl のopenssl1.0.0cを組み込もうとしたところ、MySQL5.5からクライアントライブラリを組み込む指定もしていたので、MySQL5.5のopenssl0.9.8eとPHP5.3のopenssl1.0.0cがコンフリクトして「セグメンテーション違反」となって、コンパイルできなかった。

なので、opensslは複数バージョンのDSOモジュールがあると競合するようだ。仕方なく、PHPには、/usrのパスを指定してopenssl0.9.8eを組み込んだ。

さて、Apache2.2には、opensslのパス指定ができるので、/usr/local/openssl のopenssl1.0.0cを組み込んでいました。このアパッチにlibphp5.soを読み込ませるわけだが、そうするとApache2.2のopenssl1.0.0cと、PHP5.3およびMySQL5.5に組み込まれたopenssl0.9.8eがコンフリクトするのではなかろうか。PHPコンパイル時のPHP x MySQLのコンフリクトのようにエラーが出ればいいが、Apache起動時にエラーも吐かずに立ち上がらないという状況はいかにも困った。

これらのopensslコンフリクトの仮説をもとに、Apache2.2もopenssl0.9.8eを組み込んでコンパイルし直し、PHP5.3も同様にコンパイルしなおしたところ、動きました。。。。

AmazonEC2を使い始めた

Written in 2011年03月16日 by シンプル・アイ社長 | コメントする( 0件 )

AmazonEC2を使い始めました。この柔軟性たまりませんね。CentOS5.5 32bitの既存AMI(イメージ)を使って、インスタンスを作った。EBSにルートパーティションを作るイメージなのですが、10GBのサイズで勝手にできてしまい、これではルートパーティションにしては小さい。それで、以下の手順でルートパーティションのサイズを20GBに拡大した。

①一度このEBSのイメージを作成
②そのイメージで20GBのEBSを新たに作成
③起動済みのインスタンスをSTOP
④10GBのEBSをdetach
⑤新しい20GBのEBSをインスタンスにattach。デバイスは/dev/sda1。
⑥インスタンスを起動
⑤SSHでサーバに入る。この時点ではまだ/dev/sda1 は10GBである。

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             9.9G  2.3G  7.1G  25% /
/dev/sdb              147G  188M  140G   1% /mnt
none                  854M     0  854M   0% /dev/shm

⑥以下のコマンドを実行する。

# resize2fs /dev/sda1

resize2fs 1.39 (29-May-2006)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/sda1 to 5242880 (4k) blocks.
The filesystem on /dev/sda1 is now 5242880 blocks long.

⑦これでルートパーティションのサイズが広がる

# df -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              20G  2.3G   17G  13% /
/dev/sdb              147G  188M  140G   1% /mnt
none                  854M     0  854M   0% /dev/shm

rpmファイルはここで取得できますね

Written in 2010年07月10日 by シンプル・アイ社長 | コメントする( 0件 )

各種OSのパッケージ等はここで取得できますね。

ftp://ftp.riken.jp/

CentOSなら、Linux => centos と進めばいい。

64bitサーバのCentOS5.3にyumをインストールする

Written in 2010年07月10日 by シンプル・アイ社長 | コメントする( 0件 )

お名前.comのVPS(64ビット、CentOS5.3)にyumが入っていなかったのでインストールする。

http://www.onamae-server.com/vps/

wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/python-elementtree-1.2.6-5.x86_64.rpm
wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/python-iniparse-0.2.3-4.el5.noarch.rpm
wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/python-sqlite-1.1.7-1.2.1.x86_64.rpm
wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/m2crypto-0.16-6.el5.6.x86_64.rpm
wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/python-urlgrabber-3.1.0-5.el5.noarch.rpm

rpm -ivh python-elementtree-1.2.6-5.x86_64.rpm
rpm -ivh python-iniparse-0.2.3-4.el5.noarch.rpm
rpm -ivh python-sqlite-1.1.7-1.2.1.x86_64.rpm
rpm -ivh m2crypto-0.16-6.el5.6.x86_64.rpm
rpm -ivh python-urlgrabber-3.1.0-5.el5.noarch.rpm

wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/yum-fastestmirror-1.1.16-14.el5.centos.1.noarch.rp
wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/yum-metadata-parser-1.1.2-3.el5.centos.x86_64.rpm
wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/yum-3.2.22-26.el5.centos.noarch.rpm

rpm -ivh yum-fastestmirror-1.1.16-14.el5.centos.1.noarch.rpm \
yum-metadata-parser-1.1.2-3.el5.centos.x86_64 \
yum-3.2.22-26.el5.centos.noarch.rpm

でも、FAQをよくみたら、コントロールパネルで自動アップデートをOFFにするとyumがインストールされるようでした。。。

http://www.onamae-server.com/support/faq/vps/common/common_43.php

初期セットアップ時は、yumはインストールされていません。
yumはコントロールパネルにてアップデート方法を”アップデートなし”に変更するとインストールされます

http://www.onamae-server.com/vps/

PHPでFTP通信する際の注意

Written in 2010年03月30日 by シンプル・アイ社長 | コメントする( 0件 )

PHPでftp_put()関数などでFTP通信をする際に、

Warning: ftp_put() [function.ftp-put]: Ok to send data. in /path/to/script.php on line 99

のようなエラーに出くわすことはないだろうか。この場合、PHPが動作しているマシンのiptablesに注意が必要である。FTPログインはできたものの、相手からデータ通信のコネクションが張れないままタイムアウトしているのであろう。

通信相手のFTPサーバがアクティブモードで動作している場合、こちらから相手FTPサーバの21番ポートにコネクトしたのち、相手FTPサーバの20番ポートから、 こちらが通知した1024-65535の間のポートにコネクトしようとしてくる。

なので、こちら(PHPが動作しているマシン)のiptablesのINPUTチェーンで制限を加えている場合、INPUTチェーンでは、 1024-65535の間のポートが空いている必要が出てしまう。
これはあまりにも危険だし、その必要もない。以下のようにする。

iptables -L

を行い、INPUTチェーンに

ACCEPT  all  –  anywhere  anywhere  state RELATED,ESTABLISHED

の行があることを確認する。これは、確立済みのコネクションと、関連するコネクションを許可するものだ。なければ以下のように作る。

iptables -I INPUT 5 -p udp -m state –state ESTABLISHED,RELATED -j ACCEPT

上記、5の部分は挿入するINPUTチェーンの行番号です。

次にiptables関連のカーネルモジュールを確認する。

lsmod

を実行し、ip_conntrack_ftpと、ip_nat_ftpの行があることを確認し、ないものを入れる。それぞれ以下の通り。(多くの場合、ip_conntrack_ftpは入っている。)

modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

これで、アクティブモードのFTPサーバに対して、PHPでFTP通信ができるようになった。

このままではサーバが再起動したら元に戻ってしまう。
/etc/sysconfig/iptables-config
で、使用するモジュールを以下のように設定する。

IPTABLES_MODULES=”ip_nat_ftp”

また、先のiptables設定を保存する。

service iptables save

IPTABLES_MODULES=”ip_nat_ftp

高速WEBサーバいろいろ

Written in 2010年03月24日 by シンプル・アイ社長 | コメントする( 0件 )

■高速Webサーバ「Nginx」
高速なWEBサーバで、プロキシやりライトなどの機能も持つ。
▽本家サイト

http://nginx.org/

▽マイコミ記事

http://journal.mycom.co.jp/news/2010/03/09/013/index.html

■高速Webサーバー「TUX」
▽本家サイト

http://www.redhat.com/docs/manuals/tux/

http://www.redhat.com/docs/manuals/tux/TUX-2.0-Manual/

▽IT PRO記事

http://itpro.nikkeibp.co.jp/article/COLUMN/20051115/224580/

■マルチプラットフォームの高速ウェブサーバ「lighttpd」
▽本家サイト

http://www.lighttpd.net/

▽マイコミ記事

http://journal.mycom.co.jp/news/2005/09/02/007.html

Get Adobe Flash playerPlugin by wpburn.com wordpress themes