Linux 上の Nginx に複数のバージョンの PHP をインストールする

Linux 上の Nginx に複数のバージョンの PHP をインストールする

サーバーの LNPM 環境をインストールして構成する場合、複数のバージョンの PHP の共存を考慮する必要があります。以下は、Linux システムで Nginx に複数のバージョンの PHP をインストールする方法です。

Linux バージョン: 64 ビット CentOS 6.4

Nginx バージョン: nginx1.8.0

PHP バージョン: php5.5.28 および php5.4.44

php5.5 がメインバージョンで、/usr/local/php ディレクトリにインストールされている場合は、他のバージョンの php をインストールして、異なるインストール ディレクトリを指定できることに注意してください。

PHPをインストールする

# wget http://cn2.php.net/get/php-5.4.44.tar.gz/from/this/mirror
# tar zxvf php-5.4.44.tar.gz
# php-5.4.44をインストールします
#./configure --prefix=/usr/local/php5.4.44 \
--curl \ で
--freetype ディレクトリ \
--gd \ で
--gettext \ で
--with-iconv-dir \
--kerberos \ で
--with-libdir=lib64 \
--with-libxml-dir \
--mysql \ で
--mysqli \ で
--openssl \ で
--pcre正規表現 \
--pdo-mysql \ で
--pdo-sqlite \ で
--梨付き\
--png-dir \ で始まる
--xmlrpc \ で
--xsl \ で
--with-zlib \
--enable-fpm \
--enable-bcmath \
--enable-libxml \
--enable-inline-optimization \
--enable-gd-native-ttf \
--enable-mbregex \
--enable-mbstring \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvsem \
--enable-xml \
--enable-zip
# 作成 && インストール
# cp -R ./sapi/fpm/php-fpm.conf /usr/local/php5.4.44/etc/php-fpm.conf
# cp php.ini-development /usr/local/php5.4.44/lib/php.ini
# cp -R ./sapi/fpm/php-fpm /etc/init.d/php-fpm5.4.44

メインバージョン 5.5.28 は 9000 をリッスンするため、php-fpm.conf のリッスン ポートを 9001 に変更します。

; 注意: この値は必須です。
リッスン = 127.0.0.1:9001

php-fpmを起動する

php-fpm5.4.44 は、以下のコマンドで実行できます。

PHPのインストールが正常に完了しました。進行状況を表示します。

#ps 補助|grep php

これでphp-fpmが起動しました。

Nginx を設定する

新しいポート 8054 構成を追加し、それを 9001 と指定されたディレクトリにポイントするだけです。

サーバー{
    聞く 8054;
    server_name ローカルホスト;


    位置 / {
      #ルートhtml;
ルート /usr/www5.4.44;
      インデックス index.html index.htm;
    }


    エラーページ 500 502 503 504 /50x.html;
    場所 = /50x.html {
      ルートhtml;
    }


場所 ~ \.php$ {
ルートhtml;
127.0.0.1:9001; をロードします。
fastcgi_index インデックス.php;
fastcgi_params を含めます。
fastcgi_param SCRIPT_FILENAME /usr/www5.4.44$fastcgi_script_name;
}
 
  }


nginxの設定ファイルnginx.confは

# cd /usr/local/nginx/conf

完全な nginx 構成は次のとおりです。

#ユーザーnobody;
ワーカープロセス 4;
 
#error_log ログ/error.log;
#error_log ログ/error.log 通知;
#error_log ログ/error.log 情報;
 
#pid ログ/nginx.pid;
 
 
イベント {
  ワーカー接続 1024;
}
 
 
http {
  mime.types を含めます。
  デフォルトタイプ アプリケーション/オクテットストリーム;
 
  #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  # '$status $body_bytes_sent "$http_referer" '
  # '"$http_user_agent" "$http_x_forwarded_for"';
 
  #access_log ログ/access.log メイン;
 
  ファイル送信オン;
  #tcp_nopush オン;
 
  #キープアライブタイムアウト 0;
  キープアライブタイムアウト65;
 
  #gzip オン;
 
  サーバー{
    聞く 80;
    server_name ローカルホスト;
 
    #文字セット koi8-r;
 
    #access_log ログ/host.access.log メイン;
 
    位置 / {
      #ルートhtml;
			ルート /usr/www;
      インデックス index.html index.htm;
    }
 
    #エラーページ 404 /404.html;
 
    # サーバーのエラーページを静的ページ /50x.html にリダイレクトします
    #
    エラーページ 500 502 503 504 /50x.html;
    場所 = /50x.html {
      ルートhtml;
    }
 
    # PHP スクリプトを 127.0.0.1:80 で listen している Apache にプロキシします
    #
    #場所 ~ \.php$ {
    # プロキシパス http://127.0.0.1;
    #}
 
    # PHP スクリプトを 127.0.0.1:9000 で待機している FastCGI サーバーに渡します
    #
    #場所 ~ \.php$ {
    #ルートhtml;
    #fastcgi_pass 127.0.0.1:9000;
    # fastcgi_index インデックス.php;
    # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    #fastcgi_params を含めます。
    #}
 
		場所 ~ \.php$ {
		ルートhtml;
		127.0.0.1:9000; をデフォルトとして設定します。
		fastcgi_index インデックス.php;
		fastcgi_params を含めます。
		fastcgi_param SCRIPT_FILENAME /usr/www$fastcgi_script_name;
		}
 
    # Apacheのドキュメントルートが.htaccessファイルへのアクセスを拒否する
    # nginxのものと一致します
    #
    #場所 ~ /\.ht {
    # すべて拒否;
    #}
  }
	
	サーバー{
    聞く 8054;
    server_name ローカルホスト;
 
    位置 / {
      #ルートhtml;
			ルート /usr/www5.4.44;
      インデックス index.html index.htm;
    }
 
    エラーページ 500 502 503 504 /50x.html;
    場所 = /50x.html {
      ルートhtml;
    }
 
		場所 ~ \.php$ {
		ルートhtml;
		127.0.0.1:9001; をロードします。
		fastcgi_index インデックス.php;
		fastcgi_params を含めます。
		fastcgi_param SCRIPT_FILENAME /usr/www5.4.44$fastcgi_script_name;
		}
 
  }
 
 
	
  # IP、名前、ポートベースの設定を組み合わせた別の仮想ホスト
  #
  #サーバー{
  # 8000を聴く;
  # somename:8080 をリッスンします。
  # server_name somename alias another.alias;
 
  # 位置 / {
  #ルートhtml;
  # インデックス index.html index.htm;
  # }
  #}
 
 
  # HTTPS サーバー
  #
  #サーバー{
  # 443 ssl をリッスンします。
  # サーバー名 localhost;
 
  # ssl_certificate cert.pem;
  # ssl_certificate_key cert.key;
 
  # ssl_session_cache 共有:SSL:1m;
  #ssl_session_timeout 5分;
 
  # ssl_ciphers HIGH:!aNULL:!MD5;
  # ssl_prefer_server_ciphers オン;
 
  # 位置 / {
  #ルートhtml;
  # インデックス index.html index.htm;
  # }
  #}
 
}

nginxを再起動する

# /usr/local/nginx/sbin/nginx -s リロード

ファイアウォールで新しいポートを開く必要があることに注意してください。そうしないと、アクセスできなくなります。

ファイアウォールの設定

XP などのローカル マシン (centos6 の場合) で仮想マシンの Web ページにアクセスする場合は、ファイアウォールを変更してポート 80 を有効にする必要があることに注意してください。

# /etc/sysconfig をコピーする

iptablesファイルを変更するか、vimで直接編集します。

# vim /etc/sysconfig/iptables

ファイアウォールでポート 80 を開くには、次の行を追加します。

-A 入力 -m 状態 --state 新規 -m tcp -p tcp --dport 8054 -j 受け入れる

ファイアウォールを再起動する

# /etc/init.d/iptablesを再起動します

phpinfo() をチェックして、テストが成功したかどうかを確認します。

上記は、Linux システムで Nginx 用の PHP の複数のバージョンをインストールする方法です。皆様のお役に立てれば幸いです。

以下もご興味があるかもしれません:
  • CentOS 8.1 で LEMP (Linux+Nginx+MySQL+PHP) 環境を構築する (チュートリアルの詳細)
  • LinuxにPHP7をインストールする方法の詳細な説明
  • Linux で PHP curl 拡張機能をインストールする方法の詳細な説明
  • PHPでLinuxコマンドを実行する方法
  • Linux の PHP7 に Redis をインストールする方法
  • php-fpm モード ランプに基づいて Linux で phpmyadmin を構築する方法
  • Centos7 (linux+nginx+php7.1+mysql5.7) で yum を使用して lnmp をインストールするチュートリアル
  • PHP は 6 つの Linux コマンド関数コード例を実行します

<<:  MacでMysqlのルートパスワードを忘れた場合の解決方法

>>:  MySQL パーティションテーブルの制限と制約の詳細な説明

推薦する

Linux システムに docker をインストールし、ssh 経由で docker コンテナにログインする方法

注: 私はCentosを使ってdockerをインストールしていますステップ1: Dockerをインス...

MySQL 8.0.18コマンドの詳細な説明

解凍したフォルダ C:\web\mysql-8.0.11 を開き、フォルダ内に my.ini 構成フ...

HTML テーブル マークアップ チュートリアル (18): テーブル ヘッダー

<br />ヘッダーはテーブルの最初の行を参照します。ヘッダー内のテキストは中央揃えで太...

Linux で推奨される 9 つの優れたコード比較ツールの概要

コードを書くとき、2 つのファイル間の違い、または同じファイルの異なるバージョン間の違いを知る必要が...

1 つの記事で MySQL のプリコンパイルを理解する

1. プリコンパイルの利点私たちは皆、プリコンパイル機能を備えた JDBC の PreparedSt...

Vueで親子コンポーネント通信を実装する方法

目次1. 親コンポーネントと子コンポーネントの関係2. 小道具3. $エミット4. $親V. 結論 ...

CSSはcalc()を使用して現在の表示画面の高さを取得します

まず、CSS3 の相対的な長さの単位を見てみましょう (詳細なチュートリアルを参照してください)。相...

MySQLデータベースのパスワードを忘れた場合の解決策

先ほど MySQL パスワードを設定したのに、外食したり荷物を受け取ったりするときにパスワードを忘れ...

Ubuntu Dockerのインストールと使い方

目次1. 公式インストールスクリプトを使用した自動インストール手動インストール古いバージョンをアンイ...

ネイティブJSで実装されたギャラリー機能

目次最初2番目Native Js はギャラリー機能を実装します。画像をクリックすると、対応する拡大画...

MySQLデータ復旧のさまざまな方法の概要

目次1. はじめに2. 直接回復2.1 mysqldumpバックアップの完全リカバリ2.2 xtra...

Linuxでpyファイルを直接実行する方法

1. まずファイルを作成します(ファイルを配置するディレクトリにcdします) myTest.py を...

MySQL無料インストール版を解凍した後にパスワードが見つからない問題を解決する方法

1. mysql-8.0.21-winx64を解凍する2. 環境変数を設定し、アドレスをbinフォル...

Win10 MySQLでCSVをエクスポートする2つの方法

Win10 で csv をエクスポートする方法は 2 つあります。1 つ目はツールを使用することです...

CSS 背景画像を設定するための 6 つの興味深いヒント

background-image は、おそらくすべてのフロントエンド開発者がキャリアの中で少なくとも...