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_modulePHP を fpm 動作モードにコンパイルするときにオンにする必要がある重要なパラメータ - enable-fpm
3. PHP をコンパイルするとき、必要なときにmysql または他のデータベース管理システムに接続するには、関連するドライバー モジュールを有効にする必要があります。
4. PHP と mysql は同じノード上にありません。mysql に接続するユーザー アカウントにはリモート アクセス権限が必要です。
php
をコンパイルしてインストールします#./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#cd php-5.4.0
#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
httpd 関連の設定起動が成功したかどうかを確認する
#netstat �tnlp|grep php-fpm
tcp 0 0 192。 168.100.114:9000 0.0 .0.0:* LISTEN 32873/php-fpm
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