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

推薦する

Vue ソースコード学習でレスポンシブ性を実装する方法

目次序文1. レスポンシブシステムの重要な要素1. データの変更を監視する方法2. 依存関係を収集す...

VueはEchartsを使用して3次元棒グラフを実装します

この記事では、Echartsを使用して3次元棒グラフを実装するVueの具体的なコードを参考までに共有...

Nginx ロケーション設定(ロケーションのマッチング順序)の詳細な説明

ロケーションは「位置指定」を意味し、主にさまざまな位置指定のための URI に基づいています。これは...

同じレベルの要素で Position:fixed と margin-top を一緒に使用する場合の CSS の問題

問題の説明CSS を使用して上部の固定効果を実現したいと思います。 margin-top と pos...

WeChatアプレット開発の実践スキル:データの転送と保存

日々の開発で遭遇した様々な問題と、その解決策を閲覧しながら、日々の開発でよく使用するスキルや知識ポイ...

MySQL の重要なパフォーマンス インデックスの計算と最適化方法の概要

1 QPS 計算 (1 秒あたりのクエリ数) MyISAMエンジンベースのDBの場合 MySQL&g...

Centos7.4 環境に lamp-php7.0 をインストールするチュートリアル

この記事では、Centos7.4 環境に lamp-php7.0 をインストールする方法について説明...

nginx での書き換えジャンプの実装

1. 新旧ドメイン名のジャンプ適用シナリオ: ドメイン名ベースのリダイレクト。会社の古いドメイン名は...

DockerでVueプロジェクトをデプロイする方法を教えます

1.前面に書きます:軽量仮想化テクノロジーとして、Docker には継続的インテグレーション、バージ...

HTML ページ適応幅テーブル

WEB アプリケーションのページでは、テーブルがよく使用されます。列の数が限られているため、各列のコ...

webpackを使用してTypeScriptコードをパッケージ化およびコンパイルする方法を教えます

TypeScript バンドルwebpack 統合通常、実際の開発では、ビルド ツールを使用してコー...

マウスをホバーすると画像が折りたたまれる効果を実現する CSS

マウスをホバーすると画像が折りたたまれる効果を実現する CSS 1. 実施のポイント折り畳みは複数の...

大規模なMySQLデータベース用のマスタースレーブシステムを構築するアイデアを共有する

今週は戦争のように忙しかったです。他人に操られているような気がします。毎日朝早く出勤して夜遅く帰り、...

MySQLデータベーストリガーの詳細な説明

目次1 はじめに2 トリガーの紹介3 トリガーを作成する4 トリガーを表示5. トリガーの削除6 結...

JS の 6 つの継承方法とその長所と短所

目次序文プロトタイプチェーン継承コンストラクタの継承組み合わせ継承(プロトタイプチェーン継承とコンス...