php-5.3.10をインストール php-fpmで動かす


このエントリーをはてなブックマークに追加

php-5.3.10をソースからインストールしてみました。 最新版を使いたかったのでyumではなく、ソースからビルドしています。 サーバはさくらのVPSです。

公式サイト

PHP: Hypertext Preprocessor

手順

ダウンロードからインストールまで

$ cd /usr/local/var
$ wget http://jp.php.net/distributions/php-5.3.10.tar.gz
$ cd php-5.3.10
$ yum install libjpeg-devel libpng-devel mysql-devel libxml2-devel
$ ./configure --with-jpeg-dir --with-gd --with-mysql --with-libdir=lib64 --with-zlib --enable-mbstring --enable-fpm
$ make
$ sudo paco -D make install

オプションを追加して再ビルドできるようにPacoをかませて make install しています。

「Paco」で「make uninstall」できないソフトを削除する

php-fpmの設定

phpを実行するユーザーのホームディレクトリに設定ファイルを置くことにします。

$ cd ~
$ mkdir php
$ cp /usr/local/etc/php-fpm.conf.default php/php-fpm.conf
$ nano php/php-fpm.conf

起動スクリプトを用意する

$ cp /usr/local/var/php-5.3.10/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
$ chmod +x /etc/init.d/php-fpm
$ nano php-fpm

php.iniを指定して動作させます。 少々強引ですが次のように編集しました。

--- /usr/local/var/php-5.3.10/sapi/fpm/init.d.php-fpm     2012-02-24 03:09:31.000000000 +0900
+++ /etc/init.d/php-fpm     2012-02-24 01:31:07.000000000 +0900
@@ -13,8 +13,10 @@
 prefix=/usr/local
 exec_prefix=${prefix}

-php_fpm_BIN=${exec_prefix}/sbin/php-fpm
-php_fpm_CONF=${prefix}/etc/php-fpm.conf
+php_fpm_BIN=${exec_prefix}"/sbin/php-fpm -c /home/www/php/php.ini"
+#php_fpm_BIN=${exec_prefix}/sbin/php-fpm
+php_fpm_CONF=/home/www/php/php-fpm.conf
+#php_fpm_CONF=${prefix}/etc/php-fpm.conf
 php_fpm_PID=${prefix}/var/run/php-fpm.pid

実行パスにオプションで使用したいphp.iniのパスを指定します。 php-fpm.confを読み込む場所も変えておきます。

php-fpm.confの編集

起動スクリプトはPidファイルを見て、サービスを起動、停止、再起動させますのでPidファイルを作るように設定します。

--- /usr/local/etc/php-fpm.conf.default     2012-02-24 03:15:08.000000000 +0900
+++ /home/www/php/php-fpm.conf     2012-02-25 15:03:45.000000000 +0900
@@ -22,14 +22,14 @@
 ; Pid file
 ; Note: the default prefix is /usr/local/var
 ; Default Value: none
-;pid = run/php-fpm.pid
+pid = run/php-fpm.pid

ioncubeを読みこませる

php.iniファイルを作成します。

ioncubeを読みこませる

php.iniファイルを作成します。

$ cd /home/www
$ nano php/php.ini

ioncube loaderを使いたかったのでphp.iniに次のように書き込みました。

zend_extension = /usr/local/lib64/php/modules/ioncube_loader_lin_5.3.so

ioncube loaderはサーバに合ったものを適当な場所にコピーしておいてください。

chkconfigで起動スクリプトに登録

$ cd /etc/init.d
$ sudo chkconfig --add php-fpm

サービスの起動、停止、再起動は以下のコマンドで

# 起動
$ sudo /etc/init.d/php-fm start

# 停止
$ sudo /etc/init.d/php-fm stop

# 再起動
$ sudo /etc/init.d/php-fm restart

ハマったこと

動作確認のためブログから画像をアップロードしたら次のようなエラーが表示されました。

Call to undefined function imagejpeg()

コンパイル時にgdにjpeg用のライブラリが含まれていなかったことが原因です。 ./configure が通っていたので気が付きませんでした。 再ビルド時には make clean 忘れずに 実行してください。

$ make clean
$ ./configure --with-jpeg-dir --with-gd --with-mysql --with-libdir=lib64 --with-zlib --enable-mbstring --enable-fpm
$ make
$ sudo paco -D make install

参考リンク