Dockerを使用してサーバー上で複数のPHPバージョンを実行する

Dockerを使用してサーバー上で複数のPHPバージョンを実行する

PHP7 がリリースされてからかなり時間が経ちますが、パフォーマンスが大幅に向上したことはよく知られています。ここで、centos6 システムを搭載した古いサーバーがあり、その上でいくつかの古いプロジェクトが実行されており、デフォルトの PHP バージョンが 5.3 であるとします。

PHP7 バージョンにアップグレードすることはできますが、古いバージョンは PHP7 と互換性がないため、万能なアプローチをとることはできません。最善の方法は、php5.3 と php7 を共存させることです。したがって、docker を使用して他のバージョンの PHP をインストールすることを検討できます。これにより、環境の独立性が確保され、パフォーマンスの低下がほとんど発生しません。

以下では、PHP7 バージョンのインストールを例に、具体的な手順を紹介します。

Centos6にdockerをインストールします。

yum をインストール -y https://get.docker.com/rpm/1.7.1/centos-6/RPMS/x86_64/docker-engine-1.7.1-1.el6.x86_64.rpm
 サービスdocker開始
 chkconfig docker オン

php7.2イメージを取得する

docker pull php:7.2-fpm

新しいディレクトリとファイル /usr/local/docker-php7/zz-docker.conf を作成し、次の内容を保存します。

[グローバル]
デーモン化 = いいえ
[www.facebook.com]
聞く = 9001

;php.iniの変数を変更するには、php_value配列の対応する属性を変更するだけです。

php_value[セッション.save_handler] = redis
php_value[セッション.save_path] = tcp://127.0.0.1:6379
php_value[投稿の最大サイズ] = 20M
php_value[アップロード最大ファイルサイズ] = 20M
php_value[date.timezone] = アジア/上海
php_value[opcache.enable] = 1
php_value[opcache.enable_cli] = 1

コンテナを実行し、ホストモードを使用してホストと通信します

docker run -d -v /var/www/html:/var/www/html -v /usr/local/docker-php7/zz-docker.conf:/usr/local/etc/php-fpm.d/zz-docker.conf --net=host --name php7.2 php:7.2-fpm

さまざまな一般的なPHP拡張機能をインストールする

docker exec php7.2 apt-get update -y
docker exec php7.2 apt-get install -y libfreetype6-dev
docker exec php7.2 apt-get install -y libjpeg62-turbo-dev
docker exec php7.2 apt-get install -y libpng-dev
docker exec php7.2 docker-php-ext-install pdo_mysql
docker exec php7.2 docker-php-ext-install mysqli
docker exec php7.2 docker-php-ext-install iconv 
docker exec php7.2 docker-php-ext-install gd
docker exec php7.2 docker-php-ext-install mbstring
docker exec php7.2 docker-php-ext-install opcache
#ちなみに、設定を変更します docker exec php7.2 mv /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini

redis 拡張機能はdocker-php-ext-installではインストールできないため、手動でインストールする必要があります。

#コンテナ内でコマンドラインを入力 docker exec -it php7.2 sh 
docker-php-source 抽出
curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/4.2.0.tar.gz
tar -zxvf /tmp/redis.tar.gz -C /usr/src/php/ext
mv /usr/src/php/ext/phpredis-* /usr/src/php/ext/phpredis
docker-php-ext-インストールphpredis
#コンテナを終了するには、ここでctr+pとctrl+qを押します。docker restart php7.2

上記のコマンドは、ポート 9001 で php7.2 を正常に実行しました。次に、nginx設定でPHPスクリプトをポート9001に向けます(元々はポート9000に向けられていました)

要約する

上記は、docker を使用してサーバー上で複数の PHP バージョンを実行する方法について紹介したものです。お役に立てば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • dockerでPostgreSQLを実行する方法
  • docker-compose を使用して MySQL を実行する方法
  • 実行中の Docker コンテナにボリュームを動的に追加する方法
  • K3s 入門ガイド - Docker で K3s を実行するための詳細なチュートリアル

<<:  Vue nextTickの原理の分析

>>:  MySQL 5.7.20 の解凍バージョンをインストールするための詳細な手順 (2 つの方法)

推薦する

カルーセル効果を実現するためのネイティブJavaScript+CSS

この記事では、参考までに、カルーセル効果の具体的なコードをJavaScript+CSSを使用して実装...

Vue での bimface の使用に関する詳細

目次1. Vue スキャフォールディングをインストールする2. プロジェクトを作成する3.1 プロジ...

HTML でのテキストエリアの使用と一般的な問題およびケース分析

textarea タグはよく使われる HTML タグです。主に長いテキストを入力するときに改行するた...

Vueはシンプルなタイマーコンポーネントを実装します

プロジェクトを実行すると、リアルタイム更新、広告アニメーションの連続表示などの要件に遭遇することは避...

Vue の基本リスナーの詳細な説明

目次Vueのリスナーとは何かリスナーの使い方vue リスナーウォッチVue リスナー - ディープリ...

Mongodb の GUID 表示の問題の詳細な分析

問題を見つける最近、プログラムのストレージを Mongodb に移行したところ、Guid 型が書き込...

NodeJs の高メモリ使用量のトラブルシューティング実戦記録

序文これは、オンライン コンテナーの拡張によって発生した調査です。最終的には、実際の OOM が原因...

CentOS 7.x dockerはoverlay2ストレージ方式を使用する

/etc/docker/daemon.json を編集し、以下を追加します。 { "ストレ...

Tomcatアーキテクチャの原則をアーキテクチャ設計に分析する

目次1. 学習目標1.1. Tomcatアーキテクチャの設計と原則をマスターして社内スキルを向上させ...

SQLインジェクションの詳しい解説 - セキュリティ編(第2部)

この記事に誤りがあったり、ご提案がありましたら、お気軽にご連絡ください。よろしくお願いいたします。は...

Vue+canvas は、ウォーターフォール チャートを上から下までリアルタイムに更新する効果を実現します (QT と同様)

早速ですが、デモ画像をご紹介します。実装されている機能は、左側に凡例、右側にウォーターフォール チャ...

HTMLテキストの一般的なイベントとメソッドの詳細な説明

イベントの説明onactivate: オブジェクトがアクティブ要素として設定されたときに発生します。...

Tencent Cloud Server Tomcat ポートにアクセスできない場合の解決策

最近、Tencent Cloudを使用してサーバーを設定しました。使用中に、tomcatポートにアク...

HTML5で見逃せないAPIやヒントのまとめ

これまでのブログ投稿では、HTML 5 ではあまり使われていないが注目すべき API やヒントに焦点...

ネイティブJSが様々なスポーツの均一な動きを実現

この記事では、ネイティブ JS で実装された均一なモーションを紹介します。その効果は次のとおりです。...