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 の最適化

推薦する

CSS で div にスクロールを追加し、スクロール バーを非表示にする

CSS は div にスクロールを追加し、スクロール バーを非表示にします。具体的なコードは次のとお...

CSS レスポンシブ レイアウト システムの例コード

レスポンシブ レイアウト システムは、今日の一般的な CSS フレームワークではすでに非常に一般的で...

Linuxの簡単な分析でファイアウォールの状態と外部に開いているポートの状態を確認する

1. ファイアウォールの状態を確認するファイアウォールのステータスを確認する systemctl s...

Vue で Axios カプセル化を使用するための完全なチュートリアル

序文現在、プロジェクトでは、Axios ライブラリが HTTP インターフェース リクエストによく使...

MySQL グリーン解凍バージョンのインストールと設定手順

手順: 1. MySQLデータベースをインストールする1. MySQL-5.6.17-winx64....

Redhat 7.3 に MySQL 8.0.22 をインストールするための詳細なチュートリアル (バイナリ インストール)

目次1. MySQLインストールパッケージをダウンロードする2. MySQLのアンインストール手順3...

CSS3 テキストシャドウ text-shadow プロパティの詳細な説明

テキストシャドウ text-shadow プロパティの効果: 1. 右下隅の影、左下隅の影、左上隅の...

MySQL 数十億のデータのインポート、エクスポート、移行に関するメモ

最近はMySQLのメモをたくさん取っていますが、それは主に会社のOracleが比較的安定していてメン...

フレックスボックスレイアウトの最終行の左揃えの実装アイデア

フレックスレイアウトを使用すると、9つの正方形のグリッドであれば、図に示すように均等に分割できます。...

垂直方向の中央揃えをエレガントに実現する方法を教えます(推奨)

序文CSS で水平方向と垂直方向に中央揃えする方法はたくさんあります。この記事で紹介する方法は非常に...

HTML テーブル マークアップ チュートリアル (9): セル間隔属性 CELLSPACING

テーブルがコンパクトになりすぎないように、テーブル内のセル間に一定の距離を設定できます。基本的な構文...

React Hooks の一般的な使用シナリオ (概要)

目次1. ステートフック1. 基本的な使い方2. 更新3. 合併を実現する4. 遅延初期化状態5. ...

コードレイン効果を実現するjQueryプラグイン

この記事では、コードレイン特殊効果を実現するためのjQueryプラグインの具体的なコードを参考までに...

フロントエンドインタビューに必要なホモロジーとクロスドメインの詳細な説明

序文ご存知のとおり、ブラウザの相同性戦略とクロスドメイン方式も、フロントエンド面接で頻繁に遭遇する問...