CentOS7にPHP7.0をインストール

CentOS7にyumでPHP7.0をインストールする方法について紹介します。PHP関連の代表的なRPMパッケージについても取り上げます。

作業環境

CentOS7.2上で実行します。

491-php-install-centos7_php7_0.png

PHPのパッケージについて調べてみます。

491-php-install-centos7_php7_1.png

CentOS7.2上だとデフォルトで登録されているリポジトリでは、PHP5.4しか利用できません。外部リポジトリの登録が必要です。

外部リポジトリを追加

PHP7.0をインストールするため、Remiリポジトリを追加します。Remiリポジトリからソフトウェアをインストールするには、epelリポジトリが必要なため、まずepelリポジトリを追加します。

yum install epel-release

epelリポジトリは「php-mcrypt」をインストールするときなどにも使います。

Remiリポジトリを追加します。

yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

外部リポジトリは標準リポジトリに利用したいソフトがないときにだけ利用したいので、無効(disabled)になるように設定します。

デフォルトですと下記リポジトリが有効になってたので無効にします。

vi /etc/yum.repos.d/epel.repo
vi /etc/yum.repos.d/remi-safe.repo

「enabled=0」とすることで無効になります。

PHP7.0をインストール

remi-php70からphp7.0をインストールします。

yum install -y --enablerepo=remi,remi-php70,epel php php-devel php-mbstring php-mysqlnd php-mcrypt php-pear php-gd php-fpm php-pecl-xdebug php-opcache php-pecl-memcached

「PHP本体のRPMパッケージ」と「PHPの外部モジュールを利用するためのRPMパッケージ」を指定しています。

代表的なパッケージ

yumによるインストールの実行結果です。

491-php-install-centos7_php7_2.png

コマンドで指定した11パッケージと、それに依存する27パッケージがインストールされました。

主なパッケージについて取り上げます。

パッケージ 目的
php PHP本体
php-mbstring マルチバイト文字(日本語など)を利用するのに必要。
php-devel 拡張機能のソースをコンパイルするのに必要。
php-gd GDライブラリを利用してJPEG,PNG,GIFなどの画像処理を行う際に必要。
php-pear pearパッケージシステムを利用するのに必要。
php-pecl-xdebug デバッグ時に必要。
php-fpm PHPをFast-CGI形式で動作させたいとき必要。詳しくは後述。
php-mcrypt 暗号化モジュール(mcrypt関数)を使う際に必要。Laravelを使う際に必要。
php-cli 依存関係としてインストールされていた。
php-common 依存関係としてインストールされていた。
php-json 依存関係としてインストールされていた。
php-process 依存関係としてインストールされていた。
php-xml 依存関係としてインストールされていた。

パッケージの詳細を知りたい場合は、yum info パッケージ名 で確認してください。

491-php-install-centos7_php7_6.png

DB関連

パッケージ 目的
php-pdo SQLiteを利用するのに必要。依存関係としてインストールされていた。
php-mysqlnd MySQL,MariaDBを利用するのに必要。
php-odbc DB2を利用するのに必要。
pdo-oci8 Oracle Databaseを利用するのに必要。
php-pgsql PostgreSQLを利用するのに必要。

キャッシュ関連

パッケージ 目的
php-opcache オペコードキャッシュ(コンパイル後のコードをメモリに保存)したい場合必要。
詳しくは、 http://php.net/manual/ja/book.opcache.php を参照してください。
php-pecl-apcu ユーザーキャッシュ(変数をメモリに保存)したい場合必要。
php-pecl-memcached ユーザーキャッシュ(変数をメモリに保存)したい場合必要。

現在の状態を確認

インストール後の状態を確認してみます。

PHPバージョン確認

「php -v」でバージョンを確認できます。

491-php-install-centos7_php7_3.png

PHP関連のインストールパッケージ確認

rpm -qa | grep php でインストール済みのパッケージを確認できます。

491-php-install-centos7_php7_4.png

モジュール確認

php -m で読み込まれているモジュールを確認できます。

491-php-install-centos7_php7_5.png

PHP-FPMの起動

PHP-FPMとは

Nginxを利用する場合、PHP-FPM (FastCGI Process Manager) が必要となります。

Apacheの場合、組込モジュールとしてPHPを利用できます。組込モジュールとして利用した場合、Apacheと同一プロセスでPHPが動作します。

Nginxの場合、組込モジュールの方法はサポートされていません。PHPを利用するには、PHP-FPMをNginxとは別プロセスで動かします。NginxとPHP-FPMの連携はFastCGIプロトコルを通じて行われます。

設定編集

設定ファイルを編集します。

cp -a /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.org
vi /etc/php-fpm.d/www.conf

変更箇所は、以下の通りです。

※修正前
listen = 127.0.0.1:9000
;listen.owner = nobody
;listen.group = nobody
;listen.mode = 0660
group = apache
group = apache
pm = dynamic
pm.max_children = 50

※修正後
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
user = nginx
group = nginx
pm = static
pm.max_children = 5
設定項目 概要
listen デフォルトでは、TCP接続の設定となっています。UNIXドメイン接続のほうが速いそうなので、「/var/run/php-fpm/php-fpm.sock」に変更します。ただし、UNIXドメイン接続はNginxと同一サーバでPHP-FPMを起動しているときしか利用できません。
listen.owner
listen.group
listen.mode
UNIXドメイン接続を利用する場合、設定が必要です。
pm プロセスの生成方法です。
dynamic(動的)かstatic(固定)を設定します。
pm.max_children 生成するプロセス数を設定します。

起動

# 起動
systemctl start php-fpm 
 
# 自動起動設定
systemctl enable php-fpm
わくわくBank.
フリーランスのエンジニアとして活動してます。ここでは、ソフトウェア開発で必要とされる技術、用語、概念を整理しています。