2011年12月19日月曜日

CentOS 6.1でまだまだLAMP環境 PHP 5.3.8 インストール編



LAMPの「P」は、Perl、PHP、Pythonと様々なプログラミング言語ですが、今回はPHPをインストールします。
(これまでのインストールしたものは、CentOS 6.1Apache HTTP Server 2.2.21MySQL 5.5.19です。)
もうすぐバージョン5.4もリリースされそうですが、まだRC3なので安定板の最新バージョンである5.3.8をインストールします。ちなみにバージョン5.3.7のバグは、PHP界隈で今年の重大ニュースに入るのような・・・。

今回のphpインストール手順と同じ処理を行うバッチを作成しました。
管理者権限があれば次の1行でインストールできます。
ご使用になられた場合の損害は一切責任を負いませんのでご了承ください。


PHP 5.3.8 インストール(apc, xdebugなどの追加モジュールは含まず)
curl http://dl.dropbox.com/u/30648910/install/php/php.sh | env PHP_VERSION=5.3.8 sh



必要なモジュールのインストール




cd /usr/local/src
curl -L -o rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
rpm -i rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

yum install \
flex.x86_64 \
gd-devel.x86_64 \
libxml2-devel.x86_64 \
gettext-devel.x86_64 \
libxslt-devel.x86_64 \
libcurl-devel.x86_64 \
libtool-ltdl-devel.x86_64 \
re2c.x86_64 \
libmcrypt-devel.x86_64

ln -s /usr/local/mysql/lib /usr/local/mysql/lib64
ldconfig



ソースコードからPHP 5.3.8をインストールする




オプションはいろいろ付けてます。
開発環境ならいろいろ入れた方がよいかと思います。
本番環境では、必要なもの以外は除去してビルドするのがよいでしょう。
しかし、最近のサーバはメモリー容量も多いので、後で使うかも?とか、汎用的なサーバにしたいとか、開発環境と同じオプションでなければテストにならない!という心配性の方は、同じオプションでよいと思います。
ただし、AWS EC2(small,micro)やVPSのようなメモリーが少ない環境では、使うのもだけ付けるのがよいのは言うまでもありません。あとはお好みで。

cd /usr/local/src
curl -L -o php-5.3.8.tar.gz http://jp2.php.net/get/php-5.3.8.tar.gz/from/jp.php.net/mirror
tar zxfv php-5.3.8.tar.gz
cd php-5.3.8
./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs \
--enable-mbstring \
--enable-mbregex \
--enable-zend-multibyte \
--with-libdir=lib64 \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-pdo-mysql=/usr/local/mysql \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-xpm-dir=/usr \
--with-libxml-dir=/usr \
--with-freetype-dir=/usr \
--with-gettext \
--with-zlib \
--with-openssl \
--with-mcrypt \
--with-xsl \
--with-curl \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--enable-exif \
--enable-soap \
--enable-sockets \
--enable-zip

make
make install

cp php.ini-development /usr/local/php/lib/php.ini



パスの追加





  • bashの場合

echo "PATH=\$PATH:/usr/local/php/bin" >> $HOME/.bashrc
source $HOME/.bahrc


  • zshの場合

echo "PATH=\$PATH:/usr/local/php/bin" >> $HOME/.zshrc
source $HOME/.zshrc



コマンドでバージョンや設定を確認する





  • バージョン情報

php -v


PHP 5.3.8 (cli) (built: Dec 19 2011 12:34:56)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies



  • 設定情報

php -i | grep iconv


Registered Stream Filters => zlib.*, convert.iconv.*, mcrypt.*, mdecrypt.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk
iconv
iconv support => enabled
iconv implementation => glibc
iconv library version => 2.12
iconv.input_encoding => ISO-8859-1 => ISO-8859-1
iconv.internal_encoding => ISO-8859-1 => ISO-8859-1
iconv.output_encoding => ISO-8859-1 => ISO-8859-1




ライブラリーや拡張モジュールのインストール


PHPでは、pear、peclコマンドを使用して標準ライブラリーや拡張モジュールをインストールします。
いくつかインストールしてみます。



  • apc (PHPアクセラレータ)

pecl install apc
デフォルトのまま[Enter]キーを押しつづければインストールできます。


  • xdebug (デバッグ用エクステンション)

pecl install xdebug


  • php.iniの修正

これらの拡張モジュールを有効にするには、php.iniに設定を追記します。

上記2つのモジュールを有効にする場合
vi /usr/local/php/lib/php.ini
extension=apc.so
extension=xdebug.so

php.iniを書き換えて保存したらapacheを再起動します。
/usr/local/apache2/bin/apachectl graceful


  • pearのアップグレード

pear upgrade PEAR
pear upgrade-all


  • Net_IPv4のインストール

pear install Net_IPv4




apacheの設定例




ここでは、VirtualHostに追加する場合の例です。
<VirtualHost *>
 ServerName www.example.com

 DocumentRoot /path/to/example/htdocs
 DirectoryIndex index.php index.html

 ErrorLog  "|/usr/local/sbin/cronolog /usr/local/apache2/logs/example/error_log.%Y-%m-%d"
 CustomLog "/usr/local/apache2/logs/example/access_log.%Y-%m-%d" combined

 <FilesMatch \.php$>
  SetHandler application/x-httpd-php
 </FilesMatch>

 <Directory /path/to/example/htdocs>
  Order Deny,Allow
  Deny from all
  Allow from all
      Options All -Indexes
 </Directory>
</VirtualHost>




インストールされるモジュール




freetype-2.3.11-6.el6_1.8.x86_64
fontconfig-2.8.0-3.el6.x86_64
libjpeg-6b-46.el6.x86_64
libpng-1.2.46-1.el6_1.x86_64
libICE-1.0.6-1.el6.x86_64
xorg-x11-proto-devel-7.4-35.el6.noarch
libSM-1.1.0-7.1.el6.x86_64
libtiff-3.9.4-1.el6_0.3.x86_64
freetype-devel-2.3.11-6.el6_1.8.x86_64
libXau-1.0.5-1.el6.x86_64
libxcb-1.5-1.el6.x86_64
libXau-devel-1.0.5-1.el6.x86_64
atk-1.28.0-2.el6.x86_64
libxcb-devel-1.5-1.el6.x86_64
fontconfig-devel-2.8.0-3.el6.x86_64
libpng-devel-1.2.46-1.el6_1.x86_64
libjpeg-devel-6b-46.el6.x86_64
jasper-libs-1.900.1-15.el6.x86_64
cvs-1.11.23-11.el6_0.1.x86_64
gettext-0.17-16.el6.x86_64
hicolor-icon-theme-0.11-1.1.el6.noarch
avahi-libs-0.6.25-11.el6.x86_64
gettext-libs-0.17-16.el6.x86_64
libtasn1-2.3-3.el6.x86_64
gnutls-2.8.5-4.el6.x86_64
cups-libs-1.4.2-39.el6_1.1.x86_64
libgpg-error-devel-1.7-3.el6.x86_64
libgcrypt-devel-1.4.5-5.el6_1.2.x86_64
alsa-lib-1.0.21-3.el6.x86_64
pixman-0.18.4-1.el6_0.1.x86_64
libXdmcp-1.0.3-1.el6.x86_64
libXdmcp-devel-1.0.3-1.el6.x86_64
libthai-0.1.12-3.el6.x86_64
libmcrypt-2.5.7-1.2.el6.rf.x86_64
zip-3.0-1.el6.x86_64
libart_lgpl-2.3.20-5.1.el6.x86_64
libxslt-1.1.26-2.el6.x86_64
libxml2-devel-2.7.6-1.el6.x86_64
libX11-common-1.3-2.el6.noarch
libX11-1.3-2.el6.x86_64
libXext-1.1-3.el6.x86_64
libXrender-0.9.5-1.el6.x86_64
libXfixes-4.0.4-1.el6.x86_64
cairo-1.8.8-3.1.el6.x86_64
libXrandr-1.3.0-4.el6.x86_64
libXi-1.3-3.el6.x86_64
libXpm-3.5.8-2.el6.x86_64
libX11-devel-1.3-2.el6.x86_64
gd-2.0.35-10.el6.x86_64
libXtst-1.0.99.2-3.el6.x86_64
libXcomposite-0.4.1-2.el6.x86_64
libXcursor-1.1.10-2.el6.x86_64
libXdamage-1.1.2-1.el6.x86_64
libXft-2.1.13-4.1.el6.x86_64
pango-1.28.1-3.el6_0.centos.5.x86_64
libXinerama-1.1-1.el6.x86_64
gtk2-2.18.9-6.el6.centos.x86_64
libgcj-4.4.5-6.el6.x86_64
libXt-1.0.7-1.el6.x86_64
libXpm-devel-3.5.8-2.el6.x86_64
gd-devel-2.0.35-10.el6.x86_64
gettext-devel-0.17-16.el6.x86_64
libxslt-devel-1.1.26-2.el6.x86_64
libmcrypt-devel-2.5.7-1.2.el6.rf.x86_64
re2c-0.13.5-1.el6.rf.x86_64
flex-2.5.35-8.el6.x86_64
libidn-devel-1.18-2.el6.x86_64
libcurl-devel-7.19.7-26.el6_1.2.x86_64
libtool-ltdl-2.2.6-15.5.el6.x86_64
libtool-ltdl-devel-2.2.6-15.5.el6.x86_64


Linux(CentOS)、Apache、MySQL、PHPのインストールが完了してLAMP構成となりました。
情報閲覧系のサイトならピュアPHPでもある程度作れる環境になったと思います。

ソースコードでインストールするといろいろなオプションがあることに気づくと思います。
また、1つではなく複合的な技術で成り立っているのもよくわかるのではないでしょうか。
実は、全部yumだけでインストール可能なんですが、あえてやらない方が仕様とか理解が深まりますね。




0 件のコメント:

コメントを投稿