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

推薦する

Dockerを使用してDjango+MySQL8開発環境をデプロイする方法の詳細な説明

しばらく前にシステムを再インストールしましたが、バックアップを取っていなかったので、コンピューター上...

ネイティブ JS でスネーク ゲームを書く

この記事では、参考までに、JSでスネークゲームを書くための具体的なコードを紹介します。具体的な内容は...

Tomcat は親の委任メカニズムを破壊して Web アプリケーションの分離を実現します。

目次Tomcat クラスローダー階層WebAppクラスローダー共有クラスローダーカタリナクラスローダ...

GobangゲームのWebバージョンを実装するためのJavaScript

この記事では、GobangゲームのWebバージョンを実装するためのJavaScriptの具体的なコー...

Vue でのテキストエリア適応高さソリューションの実装

目次隠れた問題適応高さのソリューションまず解決策を提示してください。Vueスタックが必要な学生はvu...

Vite2.0の落とし穴

目次Viteプロジェクトビルドの最適化他のやっとこれは前回の記事の補足です。設定プロジェクトで遭遇し...

reactにおけるstateの略語の詳細な説明

序文国家とは何か私たちは皆、React はステート マシンであると言います。それはどのように反映され...

Docker での Tomcat インストールの 404 問題の解決方法

tomcat の containerID を見つけて、tomacat ディレクトリに入ります。 [r...

vsftpd ユーザーが ssh 経由でログインすることを禁止する方法

序文vsftp は使いやすく安全な FTP サーバー ソフトウェアです。システムユーザーまたは仮想ユ...

MySQLデータベースについて学びましょう

目次1. データベースとは何ですか? 2. データベースの分類は? 3. データベースとデータ構造の...

Linuxダイナミックリンクライブラリの使用

通常のプログラムと比較すると、ダイナミック リンク ライブラリにはメイン関数がなく、一連の関数の実装...

JavaScript キャンバスは影付きのグラフィックとテキストを実装します

キャンバスを使用して、参照用の影付きのグラフィックとテキストを作成します。具体的な内容は次のとおりで...

MySQLでデータをエクスポートするいくつかの方法の詳細な説明

MySQL データをエクスポートする目的は、データベースのバックアップ、テーブル構造のエクスポート、...

MySQL の基本: グループ化関数、集計関数、グループ化クエリの詳細な説明

目次1. 使い方が簡単2. DISTINCTを使用して重複を削除する3. COUNT()の詳細な紹介...

CSS 標準: vertical-align プロパティ

<br />原文: http://www.mikkolee.com/13私は最近、ver...