ホームページ >バックエンド開発 >PHPチュートリアル >LAMP 組み合わせ PHP は FPM モードで動作します

LAMP 組み合わせ PHP は FPM モードで動作します

WBOY
WBOYオリジナル
2016-06-23 13:12:30988ブラウズ

fastcgi: php-5.3.3 以降のバージョンには fpm コンポーネントが付属しています

fpm コンポーネントは、PHP インタープリターをデーモン プロセスとして動作させ、フロントエンド httpd からのリクエストを受け取ることができます。 , http-proxy-fcgi リバースプロキシユーザーは、バックエンドの fastcgi サーバーに動的コンテンツをリクエストします

分離された LAMP を構築する際の注意点:

1. 動的リソースはアプリケーションサーバー (php-fpm) にデプロイされ、静的リソースはリソースは Web にデプロイされます

2. php が fpm モードで動作する場合、httpd モジュールにコンパイルされないため、コンパイル時に --with-apxs2=/PATH

パラメータを使用する必要はありません。また、httpd のメイン設定ファイルに LoadModule を追加する必要はありません。php5_module

PHP を fpm 動作モードにコンパイルするときにオンにする必要がある重要なパラメータ - enable-fpm

3. PHP をコンパイルするとき、必要なときにmysql または他のデータベース管理システムに接続するには、関連するドライバー モジュールを有効にする必要があります。

4. PHP と mysql は同じノード上にありません。mysql に接続するユーザー アカウントにはリモート アクセス権限が必要です。

php

をコンパイルしてインストールします

#tar xf php-5.4.0.tar.bz2

#cd php-5.4.0

#./configure --prefix=/usr/local/php - -with-config-file-path=/etc/php/php.ini --with-config-file-scan-dir=/etc/php.d/ --enable-mbstring --with-freetype-dir- - with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml--with-mcrypt --with-bz2 --with-openssl --with-curl - -with-xsl --with-iconv=/usr/local/libiconv --enable-sockets --enable-short-tags --enable-static --enable-gd-native-ttf --enable-ftp -- Enable -maintainer-zts --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-fpm

#make && make install

php の設定ファイルを提供する

#mkdir /etc/{php,php.d} �pv

#cp php.ini-production /etc/php/php.ini

php-fpmを設定します

#cp sapi/fpm/init. d .php-fpm /etc/rc.d/init.d/php-fpm (サービススクリプト)

#chmod +x /etc/rc.d/init.d/php-fpm (実行権限の追加)

# chkconfig �add php-fpm (サービスリストに追加)

#chkconfig php-fpm on

php-fpm の設定ファイルを提供する

#cp /usr/local/php/etc/php-fpm.conf .default /usr/local/php/etc/php-fpm.conf

php-fpm 設定ファイルを編集し、fpm 関連のオプションを必要な値に設定し、pid ファイル (以下の最後の行) を有効にします。 :

# vim /usr/local/php/etc/php-fpm.conf

listen = 192.168.100.114:9000

pm.max_children = 50 ###静的モードで開始されたphp-fpmプロセスの数

pm.start_servers = 5 ###動的モードでの初期 php-fpm プロセスの数

pm.min_spare_servers = 2 ###動的モードでの php-fpm プロセスの最小数

pm.max_spare_servers = 8 ## #動的モードの場合 php-fpm プロセスの最大数

pid = /usr/local/php/var/run/php-fpm.pid ###PID ファイルパス

注: dm が static に設定されている場合、この場合、実際には pm.max_children のみが存在します。 このパラメータが有効になります。システムは、設定された数の php-fpm プロセスを開始します。

dm が動的に設定されている場合、pm.max_children パラメーターは無効になり、次の 3 つのパラメーターが有効になります。

システムは、php-fpm の実行開始時に pm.start_servers php-fpm プロセスを開始し、システムの

要件に従って、pm.min_spare_servers と pm.max_spare_servers の間で php-fpm プロセスの数を動的に調整します。

php-fpm が独立したデーモン プロセスとして動作する場合、デフォルトでポート 127.0.0.1:9000 でリッスンします。これは、ローカル マシン上の

httpd プロセスがデフォルトでアクセスを許可されることを意味します。現在の環境はその httpd です。と php は別のサーバーにインストールされているため、他のホスト

がアクセスできるようにリスニング ポートを変更する必要があります。

それぞれが fast-cgi モードで動作する場合、フロントエンド Web サーバーは fcgi モジュールを通じてバックエンド ホストと通信する必要があります。

php-fpmを開始

#service php-fpm start

起動が成功したかどうかを確認する

#netstat �tnlp|grep php-fpm

tcp 0 0 192。 168.100.114:9000 0.0 .0.0:* LISTEN 32873/php-fpm

httpd 関連の設定

1. httpd 関連モジュールを有効にする

Apache httpd2.4 以降、FastCGI の実装専用のモジュールがあります。このモジュールは mod_proxy_fcgi です。 .so、

実際には mod_proxy.so モジュールの拡張であるため、両方のモジュールをロードする必要があります

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

仮想ホスト スイッチをオンにする

/etc /httpd/extra/httpd-vhosts.conf をインクルードします

2. fcgi の使用をサポートするように仮想ホストを設定します

次のような 2 行を対応する仮想ホストに追加します:

ProxyRequests Off

ProxyPassMatch ^/(.*.php)$fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1

ProxyRequests Off : フォワードプロキシをオフにします

ProxyPassMatch: .php で終わるファイルリクエストを php-fpm プロセスに送信します。php-fpm は少なくとも実行ディレクトリと URI を知っている必要があります

ので、ここでは fcgi:// に直接あります。 127.0.0.1:9000 最後に、これら 2 つのパラメーターが指定されています

他のパラメーターの転送は mod_proxy_fcgi.so によってカプセル化されているため、手動で指定する必要はありません。

注意すべき問題:

動的リソースは PHP サーバーに配置する必要があります。httpd サーバーがクライアントブラウザから動的ページコンテンツのリクエストを受信すると、

は指定された PHP サーバーにリクエストを送信して処理します。 html、jpg などの静的ページは引き続き httpd サーバーで処理されますが、そうでない場合は、画像やその他の情報が表示されない可能性があります。そのため、Web サイトをデプロイするときは、Web サイトのリソースを両側に別々にデプロイする必要があります。

HTTPD サーバーと PHP サーバーに同じパスのディレクトリをそれぞれ作成します。そうしないと、httpd サービスの開始時にエラーが報告されます。

仮想ホスト構成ファイルを編集します:

# vim /etc/httpd/extra/httpd-vhosts.conf

ServerAdmin admin@luanyh.com

DocumentRoot "/data/web/ www/"

サーバー名 phpinfo.luanyh.com

サーバーエイリアス luanyh.com

ProxyRequests Off

ProxyPassMatch ^/(.*.php)$ fcgi://192.168.100.114:9000/data/web/www /$1

ErrorLog "/usr/local/apache/logs/phpinfo-error_log"

CustomLog"/usr/local/apache/logs/phpinfo-access_log" common

AllowOverride なし

オプション なし

すべて許可する必要があります

DirectoryIndexindex.phpindex.html

仮想ホストのホームページを (PHP サーバー上に) 作成し、httpd が php

をサポートできるかどうかをテストします

# vim /data/web/www/index.php

次のコンテンツを編集します:

phpinfo( );

?>

クライアント ブラウザでテストします:

現時点でのサーバー API の動作モードは次のとおりです: FPM/FastCGI

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。