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

推薦する

React サーバーサイドレンダリング原則の分析と実践

ほとんどの人は、サーバーサイド レンダリング (SSR と呼んでいます) の概念について聞いたことが...

VMWare14.0.0のUbuntu仮想マシンで共有フォルダを設定する

これは私の最初のブログ投稿です。時間の制約があるため、どのようにフォーマットすればよいかわかりません...

Jenkins統合Dockerプラグインの問題を解決するいくつかの方法

目次背景質問1エラー 2エラー 3エラー4要約する背景テスト環境では、docker プラグインを統合...

vue-cli の紹介とインストール

目次1. はじめに2. vue-cli の紹介2.1 コマンドライン2.2 CLI サービス2.3 ...

Docker: /etc/default/docker の DOCKER_OPTS パラメータを変更しても反映されない

デフォルトでは、 /etc/default/docker 設定は有効になりません。docker 環境...

Excel をインポートするときに js で時間を変換する正しい方法について

目次1. 基本2. 問題の説明3. 解決策付録: js を使用して Excel の日付形式を変換する...

VMware、nmap、burpsuite インストール チュートリアル

目次VMware バープスイート1. 仮想マシンイメージとVMwareのインストールと使用2. 仮想...

MySQL の暗号化と復号化の例

MySQL の暗号化と復号化の例データの暗号化と復号化はセキュリティ分野で非常に重要です。プログラマ...

jQuery はシャッター効果を実現します (li 配置を使用)

この記事では、ブラインド効果を実現するためのjQueryの具体的なコードを参考までに紹介します。具体...

スライダーを作成するためのネイティブ js ドラッグ アンド ドロップ機能のサンプル コード

ドラッグ アンド ドロップはフロントエンドでよく使われる機能であり、多くのエフェクトで js のドラ...

jQueryはシンプルなコメントエリアを実装します

この記事では、参考までに、簡単なコメントエリアを実装するためのjQueryの具体的なコードを紹介しま...

ファイルのアップロードの進行状況を示す React の例

目次React アップロードファイル表示の進行状況デモフロントエンドにReactアプリケーションを素...

MySql テーブル、データベース、シャーディング、パーティショニングの知識ポイントの紹介

1. はじめにデータベース内のデータ量が一定レベルに達すると、システムパフォーマンスのボトルネックを...

IDEA が MySQL ポート番号占有に接続できない問題の解決方法

コマンドラインでMYSQLに正常にログインでき、NavicatもMySQLに正常に接続できますが、I...

Nginxドメイン名転送の実装

Nginx の紹介Nginx (「エンジン x」) は、ロシアのプログラマー Igor Sysoev...