CentOS7でPHP7にアップグレードする方法
序章
2015年12月3日にリリースされたPHP7は、スカラー型ヒントなどの新機能とともに、以前のバージョンの言語よりも大幅な速度の向上を約束します。 このガイドでは、コミュニティが提供するパッケージを使用して、PHP 5.x(任意のリリース)を実行しているApacheまたはNginxWebサーバーをPHP7にすばやくアップグレードする方法について説明します。
警告:ほとんどのメジャーバージョンの言語リリースと同様に、本番環境でPHP7に切り替える前に少し待つことをお勧めします。 それまでの間、新しいリリースとの互換性についてアプリケーションをテストし、ベンチマークを実行して、新しい言語機能に慣れておく良い機会です。
データベース管理のためにphpMyAdminをインストールした場合、phpMyAdminパッケージはまだアップグレードをサポートしていないため、アップグレードする前に公式のCentOSPHP7パッケージを待つことを強くお勧めします。 アクティブユーザーで他のサービスやアプリケーションを実行している場合は、最初にステージング環境でこのプロセスをテストするのが最も安全です。
前提条件
このガイドは、mod_php
をApacheと組み合わせて使用するか、PHP-FPMをNginxと組み合わせて使用して、CentOS7でPHP5.xを実行していることを前提としています。 また、管理タスク用にsudo
権限で構成された非rootユーザーがいることも前提としています。
PHP 5のインストールプロセスは、次のガイドに記載されています。
- Linux、Apache、MySQL、PHP(LAMP)スタックをCentOS7にインストールする方法
- CentOS 7にLinux、Nginx、MySQL、PHP(LEMP)スタックをインストールする方法
IUSコミュニティプロジェクトリポジトリへの登録
PHP 7.xは、主要なディストリビューションの公式リポジトリにまだパッケージ化されていないため、サードパーティのソースに依存する必要があります。 いくつかのリポジトリはPHP7RPMファイルを提供します。 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から新しいPHP7パッケージをインストールします。 もう一度、プロンプトが表示されたら 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から新しいPHP7パッケージをインストールします。 もう一度、プロンプトが表示されたら y を押し、Enterを押します。
sudo yum install php70u-fpm-nginx php70u-cli php70u-mysqlnd
インストールが完了したら、PHP-FPMとNginxの両方の構成をいくつか変更する必要があります。 構成されているように、PHP-FPMはローカルTCPソケットで接続をリッスンしますが、Nginxはファイルシステム上のパスにマップされる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
を含むブロックを探します。これは、PHP-FPMにポート9000のループバックアドレスをリッスンするように指示します。 この行をセミコロンでコメントし、数行下の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 = /run/php-fpm/www.sock
次に、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_users = nginx ;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
はアップストリームを定義します。これは、他の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; server unix:/run/php-fpm/www.sock; }
ファイルを終了して保存し、/etc/nginx/conf.d/default.conf
を開きます。
sudo nano /etc/nginx/conf.d/default.conf
location ~ \.php$ {
で始まるブロックを探します。 このブロック内で、fastcgi_pass
ディレクティブを探します。 この行をコメントアウトまたは削除し、fastcgi_pass php-fpm
に置き換えます。これは、php-fpm.conf
で定義されたアップストリームを参照します。
/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
Webサーバーのドキュメントルートにテストファイルを作成することもできます。 その場所はサーバー構成によって異なりますが、ドキュメントルートは通常次のいずれかのディレクトリに設定されます。
/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://server_domain_name_or_IP/info.php
実行中のバージョンと構成をリストしたPHP7情報ページが表示されます。 これを再確認したら、info.php
を削除するのが最も安全です。
sudo rm /var/www/html/info.php
これで、PHP7が正常にインストールされました。 ここから、ErikaHeidiのGetting Ready for PHP 7 ブログ投稿をチェックして、公式移行ガイドを確認することをお勧めします。