NginxでPHPのバージョンが異なる複数のWebサイトを実行する方法


PHP開発者は、同じWebサーバー上で異なるバージョンのPHPを使用して、異なるWebサイト/アプリケーションを構築して実行したい場合があります。 Linuxシステム管理者として、あなたは一つのウェブサーバー上で異なるPHPバージョンを使って複数のウェブサイトを運営できる環境をセットアップする必要があります。

このチュートリアルでは、複数のバージョンの PHP をインストールし、サーバーブロック(Apacheの仮想ホスト)を介してそれらと連携するようにウェブサーバー Nginx を設定する方法について説明します。ある[ LEMP のスタックを使用して CentOS/RHEL 7 の配布。

ある[ Nginx のある[ PHP - FPM の(ある[ FastCGI Process Manager )の代替、ある[ PHP FastCGI の実装高負荷のWebサイト用の追加の便利な機能。

  1. A CentOS 7 or RHEL 7 server with minimal installation.
  2. Nginx HTTP Server.
  3. PHP 7.1 (to be used as default version) and 5.6.
  4. MariaDB Database Server.
  5. Server IP address: 192.168.56.10.
  6. Websites: example1.com and example2.com.

ステップ1:EPELとRemiリポジトリのインストールと有効化

1. 最初に EPEL Remi リポジトリをインストールして有効にします。これには PHP の最新バージョンがあります。ある[ CentOS/RHEL 7 のディストリビューション上のスタック。

# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

2. 次に yum-utils パッケージをインストールします。これはyumのネイティブ機能を拡張し、有効にするために使用される yum-config-manager コマンドを提供します。またはシステム上のYumリポジトリを無効にします。

# yum install yum-utils

# subscription-manager repos --enable=rhel-7-server-optional-rpms

ステップ2:Nginx Webサーバーをインストールする

3. Nginxの最新バージョンをインストールするには、公式のNginxリポジトリを追加する必要があります。 /etc/yum.repos.d/nginx.repo という名前のファイルを作成します。

# vi /etc/yum.repos.d/nginx.repo

あなたのディストリビューションに従って以下の行をfileに追加してください。

--------------- On CentOS 7 --------------- 
[nginx] 
name=nginx repo 
baseurl=http://nginx.org/packages/centos/7/$basearch/ 
gpgcheck=0 
enabled=1 


--------------- On RHEL 7 ---------------
[nginx] 
name=nginx repo 
baseurl=http://nginx.org/packages/rhel/7.x/$basearch/ 
gpgcheck=0 
enabled=1 

4. nginxリポジトリが追加されたら、yumパッケージマネージャツールを使用してNginxをインストールすることができます。

# yum install nginx

ステップ3:MariaDBデータベースサーバーをインストールする

5. MariaDBの最新バージョンをインストールするには、正式なMariaDBリポジトリを追加する必要があります。 /etc/yum.repos.d/mariadb.repo という名前のファイルを作成します。

# vi /etc/yum.repos.d/mariadb.repo

あなたのディストリビューションに従って以下の行をfileに追加してください。

--------------- On CentOS 7 --------------- 
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1


--------------- On RHEL 7 ---------------
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/rhel7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1 

6. MariaDBリポジトリが追加されたら、yumパッケージマネージャツールを使用してMariaDBをインストールできます(図を参照)。

# yum install MariaDB-client MariaDB-server

7. その後、以下のスクリプトを使用してデータベースサーバーのインストールを保護します。 rootパスワードを設定して y と答え、以降の質問で [Enter] を押すと、リモートrootユーザーのログインが無効になり、匿名ユーザーアカウントが削除されデフォルトは、すべてのユーザー、匿名ユーザーでもアクセスできます。

# mysql_secure_installation

ステップ4:複数バージョンのPHPをインストールする

8. プロジェクトに異なるバージョンのPHPをインストールするには、 yum-config-manager コマンドを使用して、表示されているように、必要なモジュールとともに複数のバージョンのPHPをインストールします。

# yum-config-manager --enable remi-php71  [Default]
# yum install php php-common php-fpm
# yum install php-mysql php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-pecl-apc php-cli php-pear php-pdo
# yum install php56 php56-php-common php56-php-fpm
# yum install 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

9. PHPをインストールしたら、次のコマンドを使用してサーバーで使用されているPHPのデフォルトバージョンを確認できます。

# php -v

ステップ5:PHP-FPMとPHP56-PHP-FPMの設定

10. これはこのチュートリアルの最も興味深い部分です。サーバー上で複数のPHPバージョンを実際に実行する方法について説明しています。ここでは、Nginxが動作する異なるバージョンの php-fpm を設定します。 FastCGIプロセスのユーザー/グループ、およびそれらがlistenするポートを定義する必要があります。

これらはあなたが編集しようとしている次の二つの設定ファイルです。

  • php-fpm (default 7.1) – /etc/php-fpm.d/www.conf
  • php56-php-fpm – /opt/remi/php56/root/etc/php-fpm.d/www.conf

上記のファイルを開き、FastCGIプロセスのユーザー/グループを設定します。

# vi /etc/php-fpm.d/www.conf   [PHP 7.1]
# vi /opt/remi/php56/root/etc/php-fpm.d/www.conf  [PHP 5.6] 

デフォルト値は apache であるはずです。表示されているように nginx に変更します。

user = nginx
group = nginx

11. 次に、listenパラメータを見つけて、FastCGIリクエストを受信する address:port を定義します。

listen = 127.0.0.1:9000	[php-fpm]
listen = 127.0.0.1:9001	[php56-php-fpm]

12. 上記の設定がすべて完了したら、 Nginx MariaDB PHP-FPM を起動して有効にする必要があります。システム起動時に自動起動します。

# systemctl enable nginx 
# systemctl start nginx 

# systemctl enable mariadb 
# systemctl start mariadb 

---------------- PHP 7.1 ---------------- 
# systemctl enable php-fpm 
# systemctl start php-fpm 

---------------- PHP 5.6 ----------------
# systemctl enable php56-php-fpm 
# systemctl start php56-php-fpm 

# getenforce
# setenforce 0 

ステップ6:パーミッションを使ってWebサイトを設定する

13. この時点で、/var/www/html/にWebサイトに必要なディレクトリを作成できます。次のようにログを保存するディレクトリを作成する必要もあります。

---------------- Website 1 ----------------
# mkdir -p /var/www/html/example1.com/ 
# mkdir -p /var/log/nginx/example1.com/ 
 

---------------- Website 2 ----------------
# mkdir -p /var/www/html/example2.com/
# mkdir -p /var/log/nginx/example2.com/ 

14. すべてのディレクトリに適切な所有権を設定します。

---------------- Website 1 ----------------
# chown -R root:nginx /var/www/html/example1.com/ 
# chmod -R 755 /var/www/html/example1.com/ 
# chown -R root:nginx /var/log/nginx/example1.com/
# chmod -R 660 /var/log/nginx/example1.com/ 

---------------- Website 2 ----------------
# chown -R root:nginx /var/www/html/example2.com/ 
# chmod -R 755 /var/www/html/example2.com/
# chown -R root:nginx /var/log/nginx/example2.com/ 
# chmod -R 660 /var/log/nginx/example2.com/

ステップ7:Webサイト用にNginxサーバーブロックを設定する

15. /etc/nginx/conf.d/ にあるサーバーブロック設定ファイルを使用して、NginxがWebサイトへのリクエストを処理する方法を設定します。

拡張子が .conf で終わるWebサイト用の設定ファイルを作成します。

# vi /etc/nginx/conf.d/example1.com.conf
# vi /etc/nginx/conf.d/example2.com.conf

次に、以下のサーバーブロック構成をそれぞれのファイルに貼り付けます。

example1.comの設定

server {
        listen 80;
        server_name example1.com www.example1.com;

        root   /var/www/html/example1.com/;
        index index.php index.html index.htm;

        #charset koi8-r;
        access_log /var/log/nginx/example1.com/example1_access_log;
        error_log   /var/log/nginx/example1.com/example1_error_log   error;

       location / {
                try_files $uri $uri/ /index.php?$query_string;
        }

       # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ \.php$ {

                root    /var/www/html/example1.com/;
                fastcgi_pass   127.0.0.1:9000;	#set port for php-fpm to listen on
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include         fastcgi_params;
                include /etc/nginx/fastcgi_params;

        }
}

example2.comの設定

server {
        listen 80;
        server_name example2.com www.example2.com;

        root    /var/www/html/example2.com/;
        index index.php index.html index.htm;

        #charset koi8-r;
        access_log /var/log/nginx/example2.com/example2_access_log;
        error_log  /var/log/nginx/example2.com/example2_error_log   error;

       location / {
                try_files $uri $uri/ /index.php?$query_string;
        }

       # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ \.php$ {

                root    /var/www/html/example2.com/;
                fastcgi_pass   127.0.0.1:9001;	#set port for php56-php-fpm to listen on
	        fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include         fastcgi_params;
                include /etc/nginx/fastcgi_params;

        }
}

16. /etc/nginx/nginx.conf のhttpブロックの最後に次の行があることを確認してください。 Nginxが実行されているときは、 /etc/nginx/conf.d/ ディレクトリ内にすべての設定ファイルを含めるのに役立ちます。

include /etc/nginx/conf.d/*.conf;

ステップ8:異なるPHPバージョンをテストする

17. 最後に、サーバーが2つのバージョンのPHPを使用していることをテストする必要があります。あなたが示すようにあなたはあなたのウェブサイトのドキュメントルートディレクトリに非常に基本的な info.php スクリプトを作成することができます。

# echo "<?php phpinfo(); ?>" > /var/www/html/example1.com/info.php
# echo "<?php phpinfo(); ?>" > /var/www/html/example2.com/info.php

18. 上記の変更をすべて適用するには、 Nginx php-fpm php56-php-を再起動する必要があります。 fpm しかし、そうする前に、まずNginxの設定ファイルの文法エラーをチェックすることができます。

# nginx -t 
# systemctl restart nginx php-fpm php56-php-fpm

19. 最後にもう1つ行うことがあります。特にサーバーをローカルで実行している場合は、にあるように/etc/hosts ファイルを使用してローカルDNSを設定する必要があります。下のスクリーンショット。

192.168.56.10   example1.com   example1
192.168.56.10   example2.com   example2

20. 最後にウェブブラウザを開き、次のアドレスを入力してシステムにインストールされているPHPのバージョンを確認します。

http://example1.com/index.php
http://example2.com/index.php

それでおしまい!これで、ファイルをデプロイしたり、異なるバージョンのPHPでWebサイトをテストしたりできます。何か追加すべき点や提案する質問がある場合は、以下のコメントフォームを利用してください。