最近、クライアントが試験ソフトウェアをセットアップするためのEduExpressionWordPressプラグインを購入しました。プラグインを問題なくインストールして設定することができました。ただし、学生のログインにアクセスすると問題が発生し始めました。学生が試験を受けようとすると、プラグインページが空白になりました。さて、私にはサポートがありますか?サポートチームに連絡したところ、プラグインはPHP 7.1では機能せず、PHP5.6のみをサポートしているとのことでした。これは私の悪いことです。サーバーをPHP7.1でセットアップし、すべてのクライアントWebサイトをPHP7.1で実行していたからです。 EduExpressionを機能させるには、PHP5.6バージョンをセットアップする必要があります。 PHPをダウングレードすることは決して良い選択肢ではありませんが、このプラグインをクライアントで機能させるためにこれを行う必要がありました。では、特定のドメインに対してのみPHP 5.6を設定し、残りはPHP7.1で実行するようにしておくのはどうでしょうか。このチュートリアルでは、複数のバージョンのPHP環境をセットアップし、特定のバージョンのPHPをNGINXの特定のドメインにリンクする方法を説明します。
環境OS:CentOS 7、Webサーバー:Nginx、PHP:v7.1(デフォルト)、PHP FastCGI:PHP-FPM
注:上記の環境はすでにセットアップされ、正常に実行されています。
ステップ1 :複数のバージョンのPHP、つまりPHPv5.6とPHP7.1をインストールする
ここではyum
を使用します 以下に示すように、必要なモジュールとともに複数のバージョンのPHPをインストールするコマンド:
PHP5.6バージョンのインストール
# yum install php56 php56-php-common php56-php-mysql php56-php-pecl-memcache php56-php-pecl-memcached php56-php-gd php56-php-mbstring php56-php-mcrypt php56-php-xml php56-php-pecl-apc php56-php-cli php56-php-pear php56-php-pdo
PHP-FPM forPHP5.6バージョンをインストールします
Nginx上のPHPは、PHP-FPM(FastCGIプロセスマネージャー)を介して機能します。 PHP-FPMは、あらゆるサイズのサイト、特に忙しいサイトに役立ついくつかの追加機能を備えた、代替のPHPFastCGI実装です。
# yum install php56-php-fpm
PHP 5.6をインストールしましたが、PHPのデフォルトバージョンが7.1のままであることを確認する必要があります。
# php -v PHP 7.1.22 (cli) (built: Sep 12 2018 07:22:13) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.1.22, Copyright (c) 1999-2018, by Zend Technologies
PHP-FPMおよびPHP56-PHP-FPMを構成します
このチュートリアルの最も重要な部分は、2つのPHPバージョン用に2つの異なるPHP-FPMを構成することです。ここでは、Nginxが動作する2つの異なるバージョンのPHP-FPMを構成します。構成中の主なものは、FastCGIプロセスのユーザー/グループとそれらがリッスンするポートです。
PHP-FPM(デフォルト7.1)構成ファイル/etc/php-fpm.d/www.conf
ユーザー/グループがnginx
に設定されていることを確認してください (デフォルト値はapacheです。)
user = nginx group = nginx
listenパラメータを見つけて、FastCGIリクエストを受信するポート9000に設定します。
listen = 127.0.0.1:9000 [php-fpm]PHp56-PHP-FPM構成ファイル
/opt/remi/php56/root/etc/php-fpm.d/www.conf
ユーザー/グループがnginx
を設定していることを確認してください (デフォルト値はapacheです。)
user = nginx group = nginx
リッスンパラメータを見つけて、FastCGIリクエストを受信するポート9001に設定します。
listen = 127.0.0.1:9001 [php56-php-fpm]
PHP-FPM、PHP56-PHP-FPM、およびNGINXを有効にするCentOS7のシステム起動時に自動起動
上記の構成を完了したら、PHP-FPM、PHP56-PHP-FPM、およびNginxがシステムの起動時に自動起動できるようにする必要があります。
# systemctl enable nginx # systemctl enable php-fpm # systemctl enable php56-php-fpmSELinuxをオフにする
#sudo setenforce 0
PHP実行用に対応するPHP-FPMを使用してドメインを構成します
Nginxの対応するドメイン構成ファイル(/etc/nginx/conf.d/
)を開きます )そしてfastcgi_pass
の行を探します それに応じて変更し、実行する必要のあるPHPの正しいバージョンをリンクします。
ドメイン1Nginx構成ファイル:/etc/nginx/conf.d/example1.conf
server { listen :80; server_name example1.com; server_name www.example1.com; root /home/example1/public_html; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?q=$uri$args; } location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; include fastcgi_params; } }
ドメイン2Nginx構成ファイル:/etc/nginx/conf.d/example2.conf
server { listen :80; server_name example2.com; server_name www.example2.com; root /home/example2/public_html; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?q=$uri$args; } location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9001; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; include fastcgi_params; } }
Nginxを再起動する前に、構文エラーがないかNginx構成ファイルを確認してください
# nginx -t
Nginx、PHP-fpm、PHp56-PHP-FPMを再起動します
# systemctrl restart nginx, php-fpm php56-php-fpm
さまざまなドメインのさまざまなPHPバージョンをテストする
別のphpinfo
を作成する 2つの異なるドメインのルートディレクトリにあるファイル
# echo "<?php phpinfo(); ?>" > /home/example1/public_html/info.php # echo "<?php phpinfo(); ?>" > /home/example2/public_html/info.php
次に、info.php
を開きます ブラウザで、PHP7.1を使用してexample1.comを確認し、PHP5.6を使用してexample2.comを確認します。
http://example1.com/info.php
http://example2.com/info.php
それでおしまい! PHP5.6で動作するexample2.comにEduExpressionプラグインをデプロイしました。