CentOS 7でPHP 7にアップグレードする方法

前書き

2015年12月3日にリリースされたPHP 7は、スカラー型ヒントなどの新機能とともに、以前のバージョンの言語よりも大幅に速度が向上することを約束します。 このガイドでは、コミュニティ提供のパッケージを使用して、PHP 5.x(任意のリリース)を実行しているApacheまたはNginx WebサーバーをPHP 7にすばやくアップグレードする方法について説明します。

データベース管理のためにphpMyAdminをインストールした場合、phpMyAdminパッケージはまだアップグレードをサポートしていないため、アップグレードする前に公式のCentOS PHP 7パッケージを待つことを強くお勧めします。 アクティブなユーザーで他のサービスやアプリケーションを実行している場合、ステージング環境でこのプロセスを最初にテストするのが最も安全です。

前提条件

このガイドでは、CentOS 7でPHP 5.xを実行し、Apacheと組み合わせて `+ mod_php `を使用するか、Nginxと組み合わせてPHP-FPMを使用することを前提としています。 また、管理タスクの ` sudo +`権限で設定された非rootユーザーがあることを前提としています。

PHP 5のインストールプロセスは、次のガイドに記載されています。

IUSコミュニティプロジェクトリポジトリの購読

PHP 7.xはまだ主要なディストリビューションの公式リポジトリにパッケージ化されていないため、サードパーティのソースに依存する必要があります。 いくつかのリポジトリは、PHP 7 RPMファイルを提供します。 https://ius.io [IUSリポジトリ]を使用します。

IUSは、リポジトリにサブスクライブし、関連するGPGキーをインポートするためのインストールスクリプトを提供します。 ホームディレクトリにいることを確認し、 `+ curl +`を使用してスクリプトを取得します。

cd ~
curl 'https://setup.ius.io/' -o setup-ius.sh

スクリプトを実行します。

sudo bash setup-ius.sh

Apacheで `+ mod_php +`をアップグレードする

このセクションでは、ApacheをWebサーバーとして使用し、 `+ mod_php +`を使用してPHPコードを実行するシステムのアップグレードプロセスについて説明します。 代わりに、NginxとPHP-FPMを実行している場合は、次のセクションに進んでください。

既存のPHPパッケージを削除することから始めます。 * y を押し、 Enter *を押してプロンプトが表示されたら続行します。

sudo yum remove php-cli mod_php php-common

IUSから新しいPHP 7パッケージをインストールします。 もう一度、プロンプトが表示されたら* y Enter *を押します。

sudo yum install mod_php70u php70u-cli php70u-mysqlnd

最後に、Apacheを再起動して、新しいバージョンの `+ mod_php +`をロードします。

sudo apachectl restart

+ systemctl +`を使用して、 `+ httpd + `+ systemd +`ユニットで管理されているApacheのステータスを確認できます。

systemctl status httpd

Nginxを使用したPHP-FPMのアップグレード

このセクションでは、WebサーバーとしてNginxを使用し、PHPコードを実行するPHP-FPMを使用するシステムのアップグレードプロセスについて説明します。 Apacheベースのシステムをすでにアップグレードしている場合は、PHPテストセクションに進んでください。

既存のPHPパッケージを削除することから始めます。 * y を押し、 Enter *を押してプロンプトが表示されたら続行します。

sudo yum remove php-fpm php-cli php-common

IUSから新しいPHP 7パッケージをインストールします。 もう一度、プロンプトが表示されたら* y Enter *を押します。

sudo yum install php70u-fpm-nginx php70u-cli php70u-mysqlnd

インストールが完了したら、PHP-FPMとNginxの両方の設定をいくつか変更する必要があります。 設定されているように、PHP-FPMはローカルTCPソケットで接続をリッスンしますが、Nginxはファイルシステム上のパスにマッピングされるhttps://en.wikipedia.org/wiki/Unix_domain_socket[Unixドメインソケット]を想定しています。

PHP-FPMは、子プロセスの複数の*プール*を処理できます。 設定されているように、それは* www *と呼ばれる単一のプールを提供します。これは + / etc / php-fpm.d / www.conf +`で定義されています。 このファイルを `+ nano +(または好みのテキストエディター)で開きます。

sudo nano /etc/php-fpm.d/www.conf

`+ listen = 127.0.0.1:9000 `を含むブロックを探します。これは、ポート9000でループバックアドレスをリッスンするようPHP-FPMに指示します。 この行をセミコロンでコメントし、数行下の ` listen = / run / php-fpm / www.sock +`のコメントを外します。

/etc/php-fpm.d/www.conf

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
;                            a specific port;
;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses
;                            (IPv6 and IPv4-mapped) on a specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 127.0.0.1:9000
; WARNING: If you switch to a unix socket, you have to grant your webserver user
;          access to that socket by setting listen.acl_users to the webserver user.

次に、 `+ listen.acl_users `の値を含むブロックを探し、 ` listen.acl_users = nginx +`のコメントを外します。

/etc/php-fpm.d/www.conf

; When POSIX Access Control Lists are supported you can set them using
; these options, value is a comma separated list of user/group names.
; When set, listen.owner and listen.group are ignored
;listen.acl_users = apache,nginx
;listen.acl_users = apache

;listen.acl_groups =

ファイルを終了して保存します。 `+ nano +`では、* Ctrl-X を押して終了し、 y を押して確認し、 Enter *を押して上書きするファイル名を確認します。

次に、Nginxが正しいソケットパスを使用してPHPファイルを処理していることを確認します。 `+ / etc / nginx / conf.d / default.conf +`を開いて開始します。

sudo nano /etc/nginx/conf.d/php-fpm.conf

`+ php-fpm.conf `は、http://nginx.org/en/docs/http/ngx_http_upstream_module.html [upstream]を定義します。これは、他のNginx設定ディレクティブによって参照できます。 アップストリームブロック内で、「#」を使用して「 server 127.0.0.1:9000;+」をコメントアウトし、「+ server unix:/run/php-fpm/www.sock; +」のコメントを解除します。

/etc/nginx/conf.d/php-fpm.conf

# PHP-FPM FastCGI server
# network or unix domain socket configuration

upstream php-fpm {
       server 127.0.0.1:9000;

}

ファイルを終了して保存し、 `+ / etc / nginx / conf.d / default.conf +`を開きます。

sudo nano /etc/nginx/conf.d/default.conf

`+ location〜\ .php $ {`で始まるブロックを探します。 このブロック内で、 ` fastcgi_pass`ディレクティブを探します。 この行をコメントアウトするか削除して、 `+ php-fpm.conf `で定義されたアップストリームを参照する ` fastcgi_pass php-fpm +`に置き換えます。

/etc/nginx/conf.d/default.conf

 location ~ \.php$ {
     try_files $uri =404;
     fastcgi_split_path_info ^(.+\.php)(/.+)$;
      fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
     fastcgi_pass php-fpm;
     fastcgi_index index.php;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     include fastcgi_params;
 }

ファイルを終了して保存し、PHP-FPMとNginxを再起動して、新しい構成ディレクティブを有効にします。

sudo systemctl restart php-fpm
sudo systemctl restart nginx

`+ systemctl +`を使用して各サービスのステータスを確認できます:

systemctl status php-fpm
systemctl status nginx

PHPのテスト

Webサーバーが構成され、新しいパッケージがインストールされると、PHPが稼働していることを確認できるはずです。 コマンドラインでインストールされているPHPのバージョンを確認することから始めます。

php -v

出力

PHP 7.0.1 (cli) (built: Dec 18 2015 16:35:26) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies

ウェブサーバーのドキュメントルートにテストファイルを作成することもできます。 その場所はサーバーの構成によって異なりますが、通常、ドキュメントルートは次のいずれかのディレクトリに設定されます。

  • + / var / www / html

  • + / var / www / +

  • + / usr / share / nginx / html

`+ nano `を使用して、ドキュメントルートで ` info.php +`という新しいファイルを開きます。 デフォルトでは、Apacheでは次のようになります。

sudo nano /var/www/html/info.php

Nginxでは、代わりに以下を使用できます。

sudo nano /usr/share/nginx/html/info.php

次のコードを貼り付けます。

info.php

<?php
phpinfo();

エディターを終了し、「+ info.php」を保存します。 次に、ブラウザに次のアドレスをロードします。

http:///info.php

PHP 7の情報ページが表示され、実行中のバージョンと構成が一覧表示されます。 これを再確認したら、 `+ info.php`を削除するのが最も安全です:

sudo rm /var/www/html/info.php

PHP 7が正常にインストールされました。 ここから、Erika Heidiのhttps://www.digitalocean.com/company/blog/getting-ready-for-php-7/[Getting Ready for PHP 7]ブログ投稿をチェックして、httpsをご覧ください。 ://secure.php.net/manual/en/migration70.php [公式移行ガイド]。

Related