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 つの方法)

推薦する

nginx で同時接続リクエストの数を制限する方法

導入同時接続数を制限するモジュールは http_limit_conn_module です。アドレス:...

ホームページのデザインはウェブデザイナーのレベルを最もよく反映する

私がこれまで携わってきた多くのプロジェクトでは、基本的に避けられない悪循環がありました。それは、ホー...

Ubuntu インストール cuda10.1 ドライバ実装手順

1. cuda10.1をダウンロードします。 NVIDIA 公式ウェブサイト リンク: https:...

UbuntuにMySQLをインストールするときにデフォルトのパスワードを変更する詳細な手順

ステップ1: ディレクトリに入ります: cd /etc/mysql、debian.cnfファイルを表...

MySQLテーブルの自動インクリメント列の初期値をリセットする方法

MySQLテーブルの自動インクリメント列の初期値をリセットする方法1. 問題の説明MySQL データ...

DockerでHadoopを実行しイメージを作成する方法

車輪の再発明として、ここでは再パッケージ化を使用して Docker ベースの Hadoop イメージ...

CocosCreatorを使ってシューティングゲームを作る方法

製造手順を分析します。 1. リソースを準備してシーンを構築するオンラインでリソースを探すか、私のリ...

JSは画像の滝の流れの効果を実現します

この記事では、画像ウォーターフォールフローを実現するためのJSの具体的なコードを参考までに共有します...

JavaScript の手ぶれ補正とスロットリングの詳細な説明

目次デバウンススロットル要約するデバウンス定義: スクロール イベントなど、短時間に連続してトリガー...

docker compose を使用して consul クラスタ環境を構築する例

領事の基本概念サーバーモードとクライアントモードサーバー モードとクライアント モードは、consu...

空のパスがページのパフォーマンスに与える影響に対する解決策

数日前、Google Reader で Yu Bo さんが共有した投稿「空のパスがページのパフォーマ...

DockerToolBox ファイルマウント実装コード

docker を使用すると、ファイルをマウントできない場合があります。これは、仮想マシンの共有フォル...

Element-uiはテーブル内のセルを直接クリックして編集します

目次成果を達成する実装コード最近、会社でelementUIを使い始めたため、開発の過程でテーブルのセ...

Bootstrap 3.0 の特殊効果の学習ノート(表示と非表示、フローティングの除去、閉じるボタンなど)

この記事の主な内容は次のとおりです。 1. 閉じるボタン2.キャレット3. フローティングを素早く設...

Linux nohup コマンドの原理と例の分析

nohup コマンドUnix/Linux を使用する場合、通常はプログラムをバックグラウンドで実行す...