RedHat に複数のバージョンの PHP をインストールする方法

RedHat に複数のバージョンの PHP をインストールする方法

PHP 5.4.10 を実行するレガシー Web アプリケーションと、最新バージョンの PHP ver 7.1 を実行する別のアプリケーションがあります。

これら両方のアプリケーションを、Redhat 7.3 サーバーの 1 つのインスタンスで Apache を使用してホストしたいと考えています。

各 Web アプリに設定されている仮想ホストは次のとおりです。

<VirtualHost *:80>
     DocumentRoot /var/www/app1.local.com/public_html
     ServerName www.app1.local.com
     ServerAlias app1.local.com
     ErrorLog /etc/var/www/app1.local.com/error.log
     CustomLog /var/www/app1.local.com/requests.log
</VirtualHost>

<VirtualHost *:80>
     DocumentRoot /var/www/app2.local.com/public_html
     ServerName www.app2.local.com
     ServerAlias app2.local.com
     ErrorLog /etc/var/www/app2.local.com/error.log
     CustomLog /var/www/app2.local.com/requests.log
</VirtualHost>

このガイドによると:https://webtatic.com/packages/php71/ 「sudo yum install php71w php71w-mysql」を使用して最新バージョンの PHP をインストールし、app 2 を動作させることができることはわかっていますが、php バージョン 5.4.10 もインストールし、app1 が PHP バージョン 5.4.10 を使用するように構成するにはどうすればよいでしょうか。手順を教えてください。

質問が馬鹿げているように思われたらごめんなさい。私は Linux 初心者です。これを実行する方法を説明する信頼できる最新のチュートリアルを見つけることができませんでした。

答え1

これにはdockerを使うこともできますが、まずはマシンにインストールしておく必要があります。その後、

sudo docker run --name=myphp5 -p 8080:80  -v /var/www/html/:/var/www/html -d eboraas/apache-php

これにより、eboraas/apache-php docker イメージがダウンロードされ、apache/php5 がインストールされた「myphp5」という名前の docker コンテナが実行されます。-v スイッチは、ローカルの /var/www/html ディレクトリをコンテナの /var/www/html にマウントし、ポート 8080 で apache を公開します (そのため、80 で実行されているローカルの apache と競合しません)。

コンテナを停止するには、

sudo docker stop myphp5

同様に、以下を実行して起動することもできます。

sudo docker start myphp5

すべてのコンテナのステータスを確認するには、次のコマンドを実行します。

docker ps -a

dockerhubには、この目的に使用できるapache/php5の他のイメージがあることに注意してください。https://hub.docker.com/search/?isAutomated=0&isOfficial=0&page=1&pullCount=0&q=php5&starCount=0

このアプローチの唯一の制限は、各 Docker コンテナが異なるポートで http を公開する必要があるため、80 で実行できないことです。ただし、ローカル Apache (ポート 80 でリッスンしているもの) を Docker ベースの Apache のリバース プロキシとして使用することで、この問題を解決できます。

答え2

ソフトウェアコレクションはこれに最適です。公式の説明にはこう書かれています。

ソフトウェア コレクションを使用すると、同じソフトウェア コンポーネントの複数のバージョンをシステムに同時にインストールできます。ソフトウェア コレクションを使用して構築されたパッケージは、Red Hat Enterprise Linux に含まれるバージョンを上書きしません。

現在のバージョンであるRHSCL 2.3では、PHP 5.6と7.0のパッケージが提供されています。インストールRHSCL リポジトリにアクセスしてパッケージをインストールする方法については、RHSCL リリース ノートの「」章を参照してください。

見るSCL を使用したさまざまな PHP バージョンの ApacheRH 開発者ブログで、1 つの Apache サーバーでインストールされたさまざまな SCL バージョンの PHP を使用する方法についての説明を参照してください。(説明は RHEL6 を想定していますが、同じ方法が RHEL7 でも機能します。インストールのアドバイスはスキップしてください。)

関連情報