前書き
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 [公式移行ガイド]。