GNU/Linux >> Linux の 問題 >  >> Linux

NGNIXの異なるドメインに対して複数のバージョンのPHPを実行する

最近、クライアントが試験ソフトウェアをセットアップするための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-fpm
SELinuxをオフにする

#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プラグインをデプロイしました。


Linux
  1. nginx-413リクエストエンティティが大きすぎます

  2. さまざまなURL/ドメインからのさまざまなストアビューを表示するようにApacheforMagentoを構成します。

  3. Webサイトに別のバージョンのPHPを選択するにはどうすればよいですか?

  1. Condaを使用してさまざまなPythonバージョンの仮想環境を作成する

  2. pleskのPHPの複数のバージョン

  3. Linuxサーバーでnginxを使用してサブドメインまたは複数のドメインをホストする方法

  1. UbuntuでNginxを使用して複数のPHPバージョンを実行する方法は?

  2. 複数の Tor プロセスを異なる終了 IP で一度に実行する方法は?

  3. Ubuntu 12.04 LTS に複数のバージョンの PHP がインストールされているかどうかを確認するにはどうすればよいですか?