--

--

コメント

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
管理者にだけ表示を許可する

この記事のトラックバックURL

http://s243k.blog65.fc2.com/tb.php/487-853c1a53

07

06

コメント

CentOS 5.10 に PHP 5.5.14 をソースコードからインストールする

 CentOS 5.10 な環境に PHP 5.5.14 をソースコードからインストールしてみます。 おおよそ,目指す環境は以下の通り。

OSCentOS 5.10
コンパイラgcc 4.1.2 (古い……)
HTTPサーバapache 2 (インストール済み)
PHP インストールディレクトリ/usr/local/php-5.5.14 配下
設定ファイルのパス/etc/php 配下
PHP の動作モードapache のモジュール と cli

 現状,他バージョンの PHP はインストールされていないことを前提にしていますが,今後別バージョンをインストールしても,ファイルや設定が競合しないような構成にしていきます。

新しく書き直しました。 こちらをご参照願います。

コンパイルに必要なものを yum でインストール

 依存関係で必要になるものは yum を使ってサクッとインストールすることにします。

$ yum install http-devel curl-devel libmcrypt-devel openssl-devel \
libpng-devel zlib-devel libjpeg-devel freetype-devel \
mysql-devel libxml2-devel

 せっかく最新版の PHP を入れるので,↑これらも最新のソースからコンパイルすればいいのですが,記事の趣旨があいまいになりそうなのでここは手抜きです。

ソースをダウンロード

 PHP のダウンロードサイトからソースコードをダウンロード & 解凍。

$ cd
$ mkdir src; cd src
$ mkdir php; cd php
$ wget http://jp1.php.net/get/php-5.5.14.tar.gz/from/this/mirror
$ tar xvzf php-5.5.14.tar.gz
$ cd php-5.5.14

Configure

 まずはオプション一覧の確認。

$ autoconf
$ ./configure --help

 configure オプションの一覧がずらっと表示されます。 表示されたリストや PHP のオンラインマニュアルとにらめっこしながら configure オプションを決めます。 今回は↓こんな感じに設定しました。

$  ./configure \
--prefix=/usr/local/php-5.5.14 \
--with-config-file-path=/etc/php \
--with-apxs2 \
--with-pcntl \
--with-xsl \
--with-pear \
--disable-debug \
--disable-rpath \
--with-curl \
--enable-zip \
--with-mcrypt \
--with-openssl \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-zlib \
--with-freetype-dir=/usr \
--with-gd-native-ttf \
--with-mysql \
--with-mysqli \
--with-pdo-mysql \
--enable-mbstring \
--enable-iconv \
--enable-calendar \
--enable-ftp \
--enable-sockets \
--enable-libxml \
--without-unixODBC \
--disable-posix \
--with-gettext \
--with-exif \
--with-libxml-dir=/usr \
--enable-cli

コンパイル & インストール

 お次は make でコンパイル。 そしてコンパイル結果のテスト。

$ make
$ make test

 で,インストール。

$ sudo make install

 コンフィギュレーションからインストール完了まで約 10 分。 gcc の時と違ってあっという間です。

ファイルの移動

 PHP の次期バージョンをインストールしたときにファイルを上書きされないため,/usr/local/php-5.5.14 の外にインストールされたファイルを/usr/local/php-5.5.14 内へ (強引に) 呼び戻します。 libphp5.so は apache から呼ばれるライブラリの実体です。

$ sudo mv /usr/lib/httpd/modules/libphp5.so /usr/local/php-5.5.14/lib/php/

 次に PHP の設定ファイルを移動。 ファイルを解凍したディレクトリ内に php.ini-XXX があるので,これを etc に移動します。 ここも,複数バージョンが競合しないように /etc/php の下にバージョンごとのディレクトリを作り,設定ファイルはその中に格納します。

$ sudo mkdir -p /etc/php
$ sudo mkdir -p /etc/php/php-5.5.14
$ sudo mkdir -p /etc/php/php-5.5.14/php.d
$ sudo cp php.ini-production /etc/php/php-5.5.14

 ここまでできたら,設定ファイルを書きかえる前にパスを通しておきます。

パスを通す

 上記のままだとまだパスが通っていないので,PHP はまともに動きません。 /usr/local/ 辺りからリンクを貼っておきます。 ここでは,次期バージョンの PHP をインストールしたときバージョンを簡単に切り替えるため,alternatives を使ってみることにします。

$ sudo /usr/sbin/update-alternatives \
--install /usr/local/bin/php              php          /usr/local/php-5.5.14/bin/php 10 \
--slave /usr/local/bin/php-cgi            php-cgi      /usr/local/php-5.5.14/bin/php-cgi \
--slave /usr/local/bin/phpize             phpize       /usr/local/php-5.5.14/bin/phpize \
--slave /usr/local/bin/php-config         php-config   /usr/local/php-5.5.14/bin/php-config \
--slave /usr/local/man/man1/php-cgi.1     php-cgi_1    /usr/local/php-5.5.14/man/man1/php-cgi.1 \
--slave /usr/local/man/man1/php.1         php_1        /usr/local/php-5.5.14/man/man1/php.1 \
--slave /usr/local/man/man1/phpize.1      phpize_1     /usr/local/php-5.5.14/man/man1/phpize.1 \
--slave /usr/local/man/man1/php-config.1  php-config_1 /usr/local/php-5.5.14/man/man1/php-config.1 \
--slave /usr/local/include/php            phpincludes  /usr/local/php-5.5.14/include/php \
--slave /usr/local/lib/php                phplibs      /usr/local/php-5.5.14/lib/php \
--slave /usr/lib/httpd/modules/libphp.so  libphp_so    /usr/local/php-5.5.14/lib/php/libphp5.so \
--slave /etc/php/php.ini                  php_ini      /etc/php/php-5.5.14/php.ini \
--slave /etc/php/php.d                    php_d        /etc/php/php-5.5.14/php.d

 12行目では,apache から参照されるライブラリを設定しています。 このライブラリは先の手順で移動した libphp5.so を参照するものですが,ここで敢えて 5 を抜いた名称でリンクを作成しています。 というのも,前述のコンフィギュレーションで PHP を make install すると,apache のモジュールディレクトリに PHP のライブラリである libphp5.so がインストールされます。 ここでリンクの名称を変えておかないと,次のバージョンの PHP をインストールするときに,リンクが新しいライブラリの実体によって上書きされてしまいます。 これを避けるため,ここではあえて 5 を外したリンクを作成しています。

設定ファイルの編集

 次は apache からモジュールモードで呼び出すための設定です。

$ sudo vi /etc/httpd/conf.d/php.conf

 以下のような内容を流し込みました。 以前,yum で mod_php をインストールしていた時の設定をほぼ流用しています。


  LoadModule php5_module modules/libphp.so


PHPIniDir '/etc/php/'

AddHandler php5-script .php
AddType text/html .php

DirectoryIndex index.php

 PHP の設定は必要に応じて行うことになりますが,拡張ライブラリのディレクトリ設定は設定しておいた方が良いと思います。

$ sudo vi /etc/php/php.ini
date.timezone = Asia/Tokyo
extension_dir = /usr/local/php-5.5.14/lib/php/extensions/no-debug-non-zts-20121212

動作確認

 以上,ざっとこんなところで PHP が使えるようになるかと思います。

<?php
phpinfo();
?>

 ↑のような PHP ファイルをサーバ上に Up して,外部からアクセスして,所望の設定になっていることを確認できたら作業終了です。

スポンサーサイト

管理者にだけ表示を許可する

この記事のトラックバックURL

http://s243k.blog65.fc2.com/tb.php/487-853c1a53

ブログ内検索

プロフィール

須良

Author:須良
落ちてるネタを見つけては無駄に実践し、自己満足に浸る暇人。
いい加減、真っ当な生活をすることを考えないといけないと思い始めて久しい今日この頃。しかし、その兆しは一向に訪れる気配なし。
横文字のハンドルネームから漢字文字のそれに変わった様だが、いまだに自分の名前を間違えることが少なくない模様。

ブロとも申請フォーム

Designed by

Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。