CentOS7にyumでPHP7.0をインストールする方法について紹介します。PHP関連の代表的なRPMパッケージについても取り上げます。
作業環境
CentOS7.2上で実行します。
PHPのパッケージについて調べてみます。
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によるインストールの実行結果です。
コマンドで指定した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 パッケージ名
で確認してください。
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」でバージョンを確認できます。
PHP関連のインストールパッケージ確認
rpm -qa | grep php
でインストール済みのパッケージを確認できます。
モジュール確認
php -m
で読み込まれているモジュールを確認できます。
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