CentOS 7/Debian 8にApacheとMariaDBを使ってPHP 7をインストールする方法
先々週(正確には2015年8月21日)、PHP開発チームは最新のリリースであるPHP 7の提供を発表し、世界中のユーザーと開発者にテストを奨励しました。
ただし、これはRC(リリース候補)版であるため、バグや既存のセットアップとの互換性の問題が存在する可能性があることに注意する必要があります。そのため、ユーザーにはバグ追跡システムを使用してそれらを報告するようお願いし、現段階ではPHP 7を本番環境で使用しないように求められています。
明るい点は、このバージョンにはいくつかの修正が含まれていることです(新機能や改善点の詳細な一覧については、プロジェクトのGitHubリポジトリのこのページを参照することをお勧めします)。最も特徴的な点は、以前のバージョンと比較して顕著なパフォーマンスの向上です。
この記事では、CentOS 7およびDebian 8 Jessieで、ApacheとMariaDBとともにPHP 7 RC1をソースタールボールからインストールし、コンパイルするプロセスを説明します。同じ手順は、RHEL、Fedora、Scientific LinuxなどのCentOSベースのディストリビューションや、Ubuntu/MintなどのDebianベースのディストリビューションでも適用できます。
CentOS 7およびDebian 8にPHP 7をインストールする
前述のように、このバージョンは安定したリリースの代わりにRCであるため、リポジトリの中で見つけることは合理的に期待できません。そのため、ソースコードをダウンロードし、最初からプログラムをコンパイルする必要があります。
しかし、それを行う前に、PHP 7をよりよく活用するためには、ApacheとMariaDBと共にインストールするのが最良の方法だということを思い出す必要があります—これはリポジトリに存在しています:
CentOS 7で
yum update && yum install httpd mariadb mariadb-server
Debian 8で
aptitude update && aptitude install apache2 mariadb-server mariadb-client mariadb.common
いずれの場合でも、PHPのソースコードを含むターボールは、以下のようにダウンロードして解凍できます。
wget https://downloads.php.net/~ab/php-7.0.0RC1.tar.gz
tar xzf php-7.0.0RC1.tar.gz -C /opt
作業が完了したら、/opt/php-7.0.0RC1に移動し、buildconfスクリプトを--forceオプション付きで実行してRCバージョンのビルドを強制します:
ls
cd /opt/php-7.0.0RC1.tar.gz
./buildconf --force
さて、私たちのよく知られたconfigureコマンドを実行する時が来ました。以下のオプションは標準のPHP 7インストールを保証しますが、より自分のニーズに合わせてインストールをカスタマイズするためには、PHPマニュアルの完全なオプションリストを参照できます。
./configure \
--prefix=$HOME/php7/usr \
--with-config-file-path=$HOME/php7/usr/etc \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--enable-pcntl \
--enable-ftp \
--enable-exif \
--enable-calendar \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-curl \
--with-mcrypt \
--with-iconv \
--with-gmp \
--with-pspell \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-zlib-dir=/usr \
--with-xpm-dir=/usr \
--with-freetype-dir=/usr \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-openssl \
--with-pdo-mysql=/usr \
--with-gettext=/usr \
--with-zlib=/usr \
--with-bz2=/usr \
--with-recode=/usr \
--with-mysqli=/usr/bin/mysql_config \
--with-apxs2
次のエラーが発生した場合:
configure: error: no acceptable C compiler found in $PATH
see 'config.log' for more details
次のコマンドでgccとその依存関係をインストールし、上記のconfigureコマンドを再度実行してください。
yum install gcc [On CentOS 7 box]
aptitude install gcc [On Debian 8 box]
あなたはPHP 7のコンパイルに向けて進んでいるところですが、これは少し時間がかかるかもしれません。他に不足しているライブラリやリソースがある場合、このプロセスは失敗しますが、常にそれらをインストールして再びconfigureを実行することができます。
例えば、以下のエラーメッセージを受け取った後にlibxml2-develをインストールしなければなりませんでした:
configure: error: xml2-config not found. Please check your libxml2 installation.
残念ながら、インストールされたソフトウェアはシステムごとに異なるため、すべてのケースシナリオをカバーすることはできません。インストール中に、ソースからPHPをインストールする際に遭遇する可能性のあるいくつかのエラーとその解決策を説明したこのページを参照することをお勧めします。
CentOS 7で
私のCentOS 7ボックスで設定プロセスを完了するためにインストールしなければならなかったパッケージの完全なリストは次のとおりです:
gcc
libxml2-devel
pkgconfig
openssl-devel
bzip2-devel
curl-devel
libpng-devel
libpng-devel
libjpeg-devel
libXpm-devel
freetype-devel
gmp-devel
libmcrypt-devel
mariadb-devel
aspell-devel
recode-devel
httpd-devel
上記の必要なすべてのパッケージは、次のように単一のyumコマンドでインストールできます。
yum install gcc libxml2-devel pkgconfig openssl-devel bzip2-devel libpng-devel libpng-devel libjpeg-devel libXpm-devel freetype-devel gmp-devel libmcrypt-devel mariadb-devel aspell-devel recode-devel httpd-devel
次のメッセージは、設定が正常に完了したことを示しています:
それから走ってください、
make
make install
インストールが完了したら、コマンドラインを使用してバージョンを確認できます。
Debian 8で
Debianでは、configureプロセスが正常に完了するために、以下のパッケージをインストールする必要がありました:
make
libxml2-dev
libcurl4-openssl-dev
libjpeg-dev
libpng-dev
libxpm-dev
libmysqlclient-dev
libicu-dev
libfreetype6-dev
libxslt-dev
libssl-dev
libbz2-dev
libgmp-dev
libmcrypt-dev
libpspell-dev
librecode-dev
apache2-dev
上記の必要なすべてのパッケージは、Debian 8のapt-getコマンドを使用してインストールできます。
apt-get install make libxml2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libxpm-dev libmysqlclient-dev libicu-dev libfreetype6-dev libxslt-dev libssl-dev libbz2-dev libgmp-dev libmcrypt-dev libpspell-dev librecode-dev apache2-dev
次に、–with-libdir=/lib/x86_64-linux-gnuを設定オプションに追加し、以下のシンボリックリンクをgmp.hヘッダーファイルに作成します:
ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h
その後、前回と同様にmakeおよびmake installを実行しました。10〜15分以内にコンパイルが完了し、前と同じようにインストールされたPHPのバージョンを確認できます。
make
make install
php.iniの設定とPHP 7インストールのテスト
ソースからPHPをインストールすると、2つのサンプルphp.iniが提供されます。この場合、それらは/opt/php-7.0.0RC1内にあります。
ls -l /opt/php-7.0.0RC1 | grep php.ini
今、インストールノートに従って、そのようなファイルのデフォルトの場所として指定されている/usr/local/libのいずれかをコピーする必要があります:
cp /opt/php-7.0.0RC1/php.ini-development /usr/local/lib
そして、この設定ディレクティブをApacheの主要な設定ファイルに追加するのを忘れないでください。
/etc/httpd/conf/httpd.conf [On CentOS 7 box]
/etc/apache2/apache2.conf in [On Debian 8 box]
LoadModule php7_module /usr/lib64/httpd/modules/libphp7.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
Debian 8では、LoadModule行を省略でき、次のApacheモジュールへのシンボリックリンクを削除して作成する必要があります。
cd /etc/apache2
rm mods-enabled/mpm_event.conf
rm mods-enabled/mpm_event.load
ln -s mods-available/mpm_prefork.conf mpm_prefork.conf
ln -s mods-available/mpm_prefork.load mpm_prefork.load
次に、ウェブサーバーを再起動します:
systemctl restart httpd [On CentOS 7 box]
systemctl restart apache2 [On Debian 8 box]
もしCentOS 7でApacheを起動しようとして、libphp7.soモジュールが見つからないというエラーメッセージが表示されたら、/opt/php-7.0.0RC1/.libs/libphp7.soから指定されたパスに単にコピーしてください。
PHP/Apacheのインストールをテストするクラシックな方法は、phpinfo()ファイルを使用することです。ウェブサーバーのドキュメントルート(両方のディストリビューションで/var/www/html)に以下の内容でtest.phpという名前のファイルを作成します:
<?php
phpinfo();
?>
そして、ネットワーク内のクライアントでブラウザを起動してテストします:
http://localhost/test.php
OR
http://IP-address/test.php
要約
この記事では、パフォーマンスを前例のない値で向上させることを目的とした人気のサーバーサイドスクリプティング言語の最新のRCであるPHP 7をソースコードからインストールする方法を説明しました。今年2015年の11月に安定版がリリースされるまで、このリリースをプロダクション環境で使用しないことを強くお勧めします。
この記事に関する質問やコメント、提案がある場合は、以下のフォームを使用してお気軽にお知らせください。









