LAMP構築-Linux(CentOS)へPHPをソースコードからインストール

Linux Linux

前回は、LAMP環境のWebサーバ「A」であるApache HTTP Server、DBサーバ「M」であるMySQLをLinux(CentOS)へインストールしました。

Apache HTTP Serverの記事はこちら⇒LAMP構築-Linux(CentOS)へRPMパッケージからMySQLをインストール

MySQLの記事はこちら⇒LAMP構築-Linux(CentOS)へApacheをソースコードからインストール

今回は前回に続き、LAMP環境の言語「P」である「PHP」をLinux(CentOS)へインストールします。

なお、今回のバージョンは以下です。

  • CentOS-6.4-i386
  • PHP 5.5.1
  • Apache HTTP Server 2.4.6
スポンサーリンク

PHPのダウンロード

PHP公式サイトよりPHPダウンロードミラーサイトのURLをコピーする。

今回の場合は、「tar.gz」形式を選択したので、「http://jp2.php.net/get/php-5.5.1.tar.gz/from/jp1.php.net/mirror」であった。

URLをコピーしたら、圧縮ファイルをダウンロードし、解凍する。

#PHPのダウンロード
$ wget http://jp1.php.net/get/php-5.5.1.tar.gz/from/this/mirror

#圧縮ファイルの解凍
$ tar xvzf php-5.5.1.tar.gz

#ディレクトリ移動
$ cd php-5.5.1

PHPのインストール

続いて、PHPをインストールする。

インストールに必要なもので「libxml2」がなくてエラーとなったので、インストールした。

なお、オプションはApacheとMySQLを使用するので、以下のオプションをつけた。

俺の環境では、「–with-mysql」オプションで、ヘッダーファイルなどのパス「/usr/include/mysql」を指定してもエラーとなったので、何も指定せずに実行した。

  • 「–with-apxs2」…Apache 2.0用。Apache apxsツールのパスを指定。
  • 「–with-mysql」…MySQLサポートを含める。MySQLベースディレクトリを指定。
  • 「–with-zlib」…ZLIBサポートを含める。
  • 「–enable-mbstring」…マルチバイト文字サポートを有効化。
#「configure」を実行し、Makefile生成
$ ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-zlib --enable-mbstring
…
(省略)
…
Configuring extensions
…
(省略)
…
configure: error: xml2-config not found. Please check your libxml2 installation.

#「libxml2」の検索
$ yum search libxml2
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.nara.wide.ad.jp
 * extras: ftp.nara.wide.ad.jp
 * updates: ftp.nara.wide.ad.jp
======================================= N/S Matched: libxml2 =======================================
libxml2-python.i686 : Python bindings for the libxml2 library
libxml2-static.i686 : Static library for libxml2
libxml2.i686 : Library providing XML and HTML support
libxml2-devel.i686 : Libraries, includes, etc. to develop XML and HTML applications
perl-XML-LibXML.i686 : Perl interface to the libxml2 library
python-lxml.i686 : ElementTree-like Python bindings for libxml2 and libxslt

  Name and summary matches only, use "search all" for everything.

#「libxml2」のインストール
$ yum install libxml2

#「libxml2-devel」のインストール
$ yum install libxml2-devel

気を取り直して、再度実行する。

何やら警告メッセージ「時刻のずれを検出. 不完全なビルド結果になるかもしれません.」が出たが、気にせずインストールを実行した。

#再度「configure」を実行し、Makefile生成
$ ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-zlib --enable-mbstring

#makeコマンドでコンパイル
$ make

#makeコマンドでテスト
$ make test

#makeコマンドでインストール
$ make install

#PHPバージョン確認
$ php -v
PHP 5.5.1 (cli) (built: Jul 15 2013 14:48:39)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies

インストールとテストはめちゃくちゃ時間かかったが、無事に終了した。

設定ファイルは、「/usr/local/lib/php/php.ini」のよう。

ソースのディレクトリ内には、開発用の「php.ini-development」、本番用の「php.ini-production」が用意されており、コピーし、編集して使用すればいいみたい。

なお、Apache HTTP Serverをインストールする前に「Perl」をインストールしていない場合、どうも「/usr/local/apache2/bin/apxs」の1行目のパスが正しくないようなので、修正してやる必要がある。

修正していない場合、以下のようなエラーになるので、修正してやる必要がある。

#「configure」を実行し、Makefile生成
$ ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-zlib --enable-mbstring
…
(省略)
…
Configuring SAPI modules
…
(省略)
…
Sorry, I cannot run apxs.  Possible reasons follow:

1. Perl is not installed
2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs
3. Apache was not built using --enable-so (the apxs usage page is displayed)

The output of /usr/local/apache2/bin/apxs follows:
./configure: /usr/local/apache2/bin/apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or directory
configure: error: Aborting

#apxsファイルの編集
$ vi /usr/local/apache2/bin/apxs

#1行目を編集
#!/replace/with/path/to/perl/interpreter -w
↓
#!/usr/bin/perl -w

Apache HTTP Serverの設定

続いて、Apache HTTP ServerでPHPを使用するために、以下の設定を行う。

まずは、「http.conf」ファイルの編集を行う。

#「httpd.conf」の編集
$ vi /usr/local/apache2/conf/httpd.conf

編集内容はこちら。

#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule php5_module        modules/libphp5.so

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

#
# PHP Configuration
#
<FilesMatch "\.ph(p&#91;2-6&#93;?|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>

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

続いて、テスト用のソースを作成する。

手順は以下のように。

$ mv /usr/local/apache2/htdocs/index.html /usr/local/apache2/htdocs/index.html.default

#テスト用PHPソース作成
$ touch /usr/local/apache2/htdocs/index.php

#テスト用PHPソース編集
$ vi /usr/local/apache2/htdocs/index.php

テスト用ソースはこちら。

PHPの情報を表示するだけのシンプルなもの。

<!--PHP情報表示-->
<?php phpinfo(); ?>

最後にApache HTTP Serverの再起動を行う。

#Apache HTTP Serverの再起動
$ /usr/local/apache2/bin/apachectl restart

以上の設定で、「http://CentOSのIPアドレス/test.php」で、無事にPHPのバージョン情報が表示された。

表示内容はこんな感じです。

PHP画面

参考サイト

mysql を ビルドした際に 「時刻のずれを検出」 って出たけど、これ何?? – Rock’n’Hack ブログ

FreeBSDにPHPをインストール – miyokawa Note

スポンサーリンク
スポンサーリンク
Linux
えふめんをフォローする
この記事が気に入ったら
いいね!しよう
最新情報をお届けします。
俺の開発研究所

コメント

タイトルとURLをコピーしました