Linux システムで複数のバージョンの PHP を共存させるソリューション (超シンプル)

Linux システムで複数のバージョンの PHP を共存させるソリューション (超シンプル)

PHP7が出たので、最新バージョンのファンとしては、早速アップグレードして体験してみました。しかし、サーバー上では古いプログラムがまだ動いているため、PHPの複数バージョン共存環境を導入する必要がありました。

既存の環境はlnmpです
- CentOS6.7
- nginx 1.10.1
- マリアDB-10.0.26
- PHP 7.0.8

古い PHP プログラムとの互換性を高めるために、5.4.45 を使用することをお勧めします。主に MySQL 拡張機能と互換性があります。

インストールを開始

まず、php-5.4.45.tar.gz ソース パッケージをダウンロードします。

ソースからインストール

# tar xzvf php-5.4.45.tar.gz
# php-5.4.45をインストールします

#./CONFIGURE -PREFIX =/usr/local/php54 -with-config-file-path =/usr/local/php54/etc- enable-fpm-user = www-with-group = www--with-mysql = mysqlnd-with-mysqpddsqldsqldsqld -iconv-dir-with-freeType-dir =/usr/local/freetype -with-jpeg-dir -with-dir -with-zlib -with-libxml-dir =/usr -disable-rpath-enable-shmop-enable-sysvsemsem-disem-dimsem-disable-shmop-disable-shmop x -ENABLE-MBSTRING -WITH-MCRYPT  -  ENABLE-FTP -WITH-GD -ENABLE-GD-NATIVE-TTF -WITH-OPENSSL-WITH-MHASH-ENABLE-PCNTL -ENABLE-SOCKETS-WITH-XMLRPC -ENABLE-ZIP -ENABLE-SOAP -WITH-GETTEXT-WITH-disable-disable-disable-fith-fith-fith-fith-fith-fith-fith-fith-ctttex

# ZEND_EXTRA_LIBS='-liconv' とします
# インストールする
# cp php.ini-production /usr/local/php/etc/php.ini

php.ini の設定

投稿の最大サイズ = 50M
アップロード最大ファイルサイズ = 50M
日付.タイムゾーン = PRC
short_open_tag = オン
cgi.fix_pathinfo=0
最大実行時間 = 300
無効関数 = passthru、exec、system、chroot、scandir、chgrp、chown、shell_exec、proc_open、proc_get_status、popen、ini_alter、ini_restore、dl、openlog、syslog、readlink、symlink、popepassthru、stream_socket_server

php-fpm.conf の設定

# vim /usr/local/php/etc/php-fpm.conf
[グローバル]
pid = /usr/local/php54/var/run/php-fpm.pid
エラーログ = /usr/local/php54/var/log/php-fpm.log
log_level = 通知

[www.facebook.com]
リッスン = /tmp/php54-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1:9001
listen.owner = www
listen.group = www
リスンモード = 0666
ユーザー = www
グループ = www
pm = ダイナミック
午後最大子供数 = 40
pm.start_servers = 20
pm.min_spare_servers = 20
pm.max_spare_servers = 40
リクエスト終了タイムアウト = 100
リクエスト_スローログ_タイムアウト = 0
スローログ = var/log/slow.log

注: 重要なのは、リスニングポートとプロセスを設定することです。

php-fpmを起動する

# sapi/fpm/init.d.php-fpm /etc/init.d/php54-fpm をコピーします
# chmod +x /etc/init.d/php54-fpm
# /etc/init.d/php54-fpm を起動します

nginxの設定を変更し、必要なサービス設定にphp-5.4.45を使用します。

場所 ~ [^/]\.php(/|$)
 {
  try_files $uri =404;
  fastcgi_pass unix:/tmp/php54-cgi.sock;
  fastcgi_index インデックス.php;
  fastcgi.conf をインクルードします。
 }

起動時に自動的に起動するようにphp-5.4.45のphp54-fpmを設定する

# chkconfig --add php54-fpm
# chkconfig php54-fpm をオンにする

chkconfig 機能説明: さまざまなシステム サービスをチェックおよび設定します。
構文: chkconfig [–add][–del][–list][システム サービス]
chkconfig [–level <レベルコード>][システムサービス][オン/オフ/リセット]

このプログラムの焦点は

各PHPバージョンは新しい別々のフォルダにインストールする必要があります

各PHPバージョンのphp-fpm.conf設定ファイルでは、異なるプロセス名とリスニングポートを設定する必要があります。

使用するPHPバージョンのリスニングポートまたはプロセス名は、nginx設定ファイルで指定されます。

以下もご興味があるかもしれません:
  • PHPでLinuxコマンドを実行する方法
  • Linux の PHP7 に Redis をインストールする方法
  • php-fpm モード ランプに基づいて Linux で phpmyadmin を構築する方法
  • Linux 上の Nginx に複数のバージョンの PHP をインストールする
  • LinuxでのPHPウェブサイトサーバーのセキュリティ構成強化保護方法[推奨]
  • phpstudy から Linux への MySQL の移行に関するチュートリアル
  • VMware Linuxシステムに最新のPHP7をインストールする

<<:  フロントエンドにアニメーション遷移効果を実装する方法

>>:  MySQL の最適化: InnoDB の最適化

推薦する

ウェブデザインには目的、アイデア、思考、そして粘り強さがなければならない

<br />はじめに:このアイデアは、数日前に上級ウェブデザインの次の記事を考えていると...

MySQL の左結合操作における on 条件と where 条件の違いの紹介

優先度両方のケースで同じ条件を設定すると、異なる結果セットが生成される可能性があるのは、優先順位のた...

星のフラッシュ効果を実現するjs

この記事の例では、スターフラッシュ効果を実現するためのjsの具体的なコードを参考までに共有しています...

Reactでパスワード強度検出器を実装する方法

目次序文使用コンポーネントの記述データ構造分析プロセス分析基礎コードの分析他の要約する序文パスワード...

SQLと各種NoSQLデータベースの使用シナリオの説明

SQL はメイントランクです。なぜ私はこのように理解するのでしょうか。技術的な観点からリレーショナル...

Gitlab-ci を使用してリモート マシンに継続的にデプロイする方法 (詳細なチュートリアル)

簡単に言うと、今日は Gitlab-CI を使用してリモート サーバーに自動的にデプロイする方法につ...

jQueryカルーセル機能を実装する方法

この記事では、jQueryカルーセル機能の実装コードを参考までに共有します。具体的な内容は次のとおり...

JavaScript における型の必須および暗黙的な変換の詳細な説明

目次1. 暗黙的な変換二重等号での変換ブール型変換「+」と「-」 2. 強制型変換' ...

MySQL インデックス プッシュダウンを 5 分で理解する

目次インデックス プッシュダウンとは何ですか?インデックスプッシュダウン最適化の原理インデックスプッ...

CocosCreatorの共通知識ポイントを整理する

目次1. シーンの読み込み2. ノードを見つける1. ノード検索2. その他のノード操作3. 再生ア...

初心者のための入門チュートリアル⑤:ウェブサイト登録はとても簡単、簡単な登録のヒント

スペースを購入してウェブサイトを構築したことがある友人なら、ウェブサイトは正式に開設する前に登録する...

Linux システムでの vim プラグインのインストールの概要

目次vimプラグインマネージャーをインストールするプラグインデモを追加プラグインを削除するには: v...

Docker-compose インストール db2 データベース操作

db2 データベースをホストマシンに直接インストールするのは面倒で、ユーザーや権限を巻き込むのも不便...

マインスイーパゲームを実装するための jQuery プラグイン (1)

この記事では、jQueryプラグインを使用したマインスイーパゲームの最初の記事の具体的なコードを参考...

WindowsでのNginxの起動や停止などの基本操作コマンドの詳しい説明

Windows で Nginx を使用するには、Nginx サービスの起動、停止、Nginx のリロ...