PHPの動作モード:
CGIモード、Apacheモジュール、FastCGIのモード:PHPは、ランプ環境における3つの動作モードがあります。
CGIのPHPを実行して、パフォーマンスが非常に良いではありません。(非推奨)
:さまざまな方法およびApache点FastCGIモジュール
;のFastCGI PHPの方法は、別個のプロセスであり、すべてのPHP PHPによって子プロセスは、PHP-FPM管理する責任と呼ばれるコンポーネントである
Apacheを実行するためのモジュラー方法PHPの、それが行われPHPのapacheのジョブを呼び出すための責任があります。
Apacheのモジュール式の途中、今日ランプをコンパイルしてインストールするには、私たちのFastCGIの方法よりもはるかに強力なパフォーマンスのPHPのFastCGIの方法。
FastCGIの機構:
最初のクライアントが要求を送信し、要求は二つの種類に分けられる
(1) - 、それが直接に直接戻すことができるアパッチによる要求に静的応答;
(2)として、またはPHPに含ま動的要求このPerlのスクリプトは、FastCGIのプロトコルによって実行されると、バックアパッチによって解釈のApacheに結果を返すされたPHPサーバーのApacheサーバを呼び出すことによって、言語を解釈します。
プロセスは、データの操作を必要とする場合、サーバは、プロトコル経由でPHPのMySQLのMySQLサーバを呼び出します。
計画をホストし
、少なくとも3つのホストを、ネットワーク・オペレーティング・システムは、192.168.197.0/24 centos7.2ゲートウェイ192.168.197.2である。
次のように割り当て:
局のhttpdサーバ(192.168.31.83)
1 PHP局サーバ(192.168.31.141)
1セットMySQLサーバ(192.168.31.225)
1、解决依赖关系
[ルート@ phpserver〜]#yumを-yインストールのlibxml2-develのlibcurlの-のdevel opensslの-develのbzip2の-develの
安装libmcryptの
[ルート@ phpserver〜]#タールzxf libmcryptを-2.5.7.tar.gz
[ルート@ phpserver〜]#のCDを付けてlibmcrypt-2.5.7 /
[[email protected]]#は./configure --prefix =は/ usr / local / libmcryptを&& make installを&&作る
2を、编译安装PHP
[ルート@ phpserver〜] #タールzxfのphp-5.6.27.tar.gz
[ルート@ phpserver〜]#のCDのphp-5.6.27 /
【[email protected]]#は./configure --prefix = / USR /ローカル/ php5.6 --with-のMySQL = mysqlnd -と-PDO-のMySQL = mysqlnd --with-mysqliの= mysqlnd - -OpenSSLの--enable-FPM -イネーブル -ソケット--enable-SYSVSHM --enable-mbstringの--with-FreeTypeの-DIR -と- JPEG-DIR --with-PNG-DIR --with-ZLIB - -with-のlibxml-DIR = / USRと-CONFIG-ファイル- --enable-XML -と-はmhash --with-mcryptの=は/ usr / local / libmcryptの--with-CONFIG-ファイルパス= /など= DIR - --with-BZ2に-ZTS --enable-メンテナの/ etc / php.dをスキャン
makeはメイクインストール&& &&
関連するオプションの解釈:
--prefix =は/ usr / local / php5.6 //取付位置を
- -mysqlの= mysqlnd //サポートのMySQL
--with-PDO-MySQLのモジュール= mysqlnd //サポートPDO
--with-mysqliの= mysqlnd //サポートmysqliのモジュール
注:PHPでないデータベース・サーバ:上記の3つのオプションの役割このように指定した上で、データベース接続のセットアップドライブ
--with-opensslの//サポートモジュールのopenssl
--enable-FPM FPM //モードをサポート
--enable-ソケットを//ソケットのサポートを有効に
--enable-SYSVSHMを//システムの共有メモリのサポートを有効に
私たちの中国人がいるように、--enable-mbstring拡張//マルチバイト文字列をマルチバイト文字列
--with-freetypeの-dirを//サポートのFreeTypeは、フォントに関連付けられているのFreeType-develのを、インストールする必要があり、フォント解析ツール
--with-JPEG-dirの
--with-PNG-dirの
注:上記二つのオプションの効果:処理JPEG、PNG画像、PHPのJPEG画像を動的に生成することができる
インターネット送信を介した送信のために圧縮されたときに--with-ZLIB //ライブラリは、圧縮され
--with-のlibxml-DIR = / USR // これは、/ usr、XMLののlibxmlを解析指定するために使用され
--enable-XML XML //サポート
--with-はmhash //はmhashをサポートし
--with-mcryptの=は/ usr / local / libmcryptをdevelの- // libmcryptをパッケージ指定した
ストレージ・パス--with-config設定ファイルパス=の/ etc // 指定されたプロファイル
--with-config設定ファイル- scan- DIR =の/ etc / php.d // プロファイルスキャン経路
--with-BZ2 //は、BZIP2をサポートして
コンパイルする際に--enable-メンテナ-ZTSオプションを使用して、両方のMPMはApacheの労働者やイベントをサポートします。
あなたがPHP5.3以降を使用する場合は、マシンがMySQLやMySQLの開発パッケージをインストールする必要がないように、MySQLデータベースをリンクするために、あなたは、mysqlndを指定することができます。5.3をPHPから利用できるmysqlnd、それはコンパイル時に結合することができます(特定のMySQLクライアントライブラリなしで結合形成が依存している)が、PHP 5.4からは、それをデフォルト設定です。
図3に示すように、コンフィギュレーション・ファイルPHP
のphp.iniに/etc/php.ini [[email protected]]#のCP-生産
。4、FPMが提供するスクリプト、PHP
[[email protected]] CP#1 SAPI / FPM /etc/init.d/php-fpm /init.d.php-fpm
[[email protected]]#は、chmodの+ X /etc/init.d/php-fpm
[[email protected]]をchkconfigを--add PHP-FPM#
のchkconfigのPHP-FPM ON [[email protected]]#
:5、提供PHP-FPMは、構成ファイルを編集
#1 CPは/ usr / local / php5.6の/ etc / PHP-FPMを.conf.default /usr/local/php5.6/etc/php-fpm.conf
#viの[〜ルートの@ phpserver] /usr/local/php5.6/etc/php-fpm.conf
:次のように変更がある
PID = RUN / php-fpm.pid
聞く= 192.168.31.141:9000
pm.max_children = 50
PM = 5 .start_servers
pm.min_spare_servers = 5
pm.max_spare_servers = 35
開始のphp-FPMサービス:
[ルート@のphpserver〜]#1 PHP-FPMサービスが開始
Startingphp-FPMはDONE
[ルート@ phpserver〜]#netstatの-anpt | grepをPHP- FPM
TCP 25456 0 0 0.0.0.0:9000 0.0.0.0:* PHP-FPM / LISTEN:MAST
[ルート@ phpserver〜]#--permanent --add-ファイアウォール-CMD =ポート9000 / TCP
成功
[ルート〜@ phpserver ]#ファイアウォール-cmdが--reload
成功
ファイルを保存するためのホスト仮想ページディレクトリに新しいホストを
[ルート@ phpserverを〜]#ます。mkdir -pの/ var / www /のベネット
PHPはを通じてポイント構成、次の構成コールPHPのApacheのFastCGIプロトコルを実装
6は、Apache(ホストアパッチにスイッチング動作)を配置
モジュールは、FastCGIを、このモジュールmod_proxy_fcgi.soの実現のために特別にApache2.4された後、それは実際にはmod_proxy.so拡張モジュールとして、二つのモジュールがロードされるように
LoadModuleproxy_moduleモジュール/ mod_proxy.so
LoadModuleproxy_fcgi_moduleモジュール/ mod_proxy_fcgi.so
[WWWルート@〜]#apachectlの-M | grepのプロキシ
proxy_module(共有)
proxy_fcgi_module(共有)
仮想ホストのホームディレクトリとしてディレクトリを確立するために
、[ルート@ WWWの〜]#ます。mkdir -pの/ var / www /のベネット
、メインの設定ファイルhttpd.confを編集して、仮想ホストを開く
includeconf /エクストラ/ httpdの-vhosts.confを有効にするには、
AddTypeのを配置しながら、 ;次の2行を追加します識別するためのApacheのPHPのページフォーマットせ
AddTypeのアプリケーション.php- / X-のhttpd-phpの
アプリケーション/ X-のhttpd-PHP-ソースPhps-をAddTypeの。
サポートホームPHP形式:とのDirectoryIndexに位置します
DirectoryIndexにindex.phpのindex.html#は、(好ましくは前に追加された)のindex.phpを追加した
仮想ホストを設定するには、fcgiのサポート
[WWWルート@〜]#viの/usr/local/http-2.4.23/conf/extra/httpd -vhosts.conf
の<VirtualHost *:80>
SERVERADMIN [email protected]
のDocumentRoot "の/ var / WWW /ベネット"
のServerName www.benet.com
にServerAlias benet.com
のErrorLog "ログ/ benet.com-error_logに"
のCustomLog「ログ/ベネットaccess_log-.com "共通
ProxyRequests Offに
ProxyPassMatch ^ /(* \ PHP(/.*)?)$ fcgiの.. //192.168.31.141:9000の/ var / WWW /ベネット/ $ 1
#<のLocationMatch" ^(*。 \ phpの(/.*)?)$ ">
#ProxyPassfcgi://192.168.31.141:9000の/ var / WWW /ベネット
#</のLocationMatch>
<ディレクトリ"は/ var / WWW /ベネット「>
オプションFollowSymLinksを
AllowOverrideなし
すべての許可された要求
</ディレクトリ>
</ VirtualHost>の
:どの
ProxyRequestsoff#はプロキシ前方閉じ
ProxyPassMatchを:の.php終わるファイルは、PHP-FPMプロセスに要求していない、PHP-FPMは、少なくともカタログとURIを実行するために知っておく必要があり、ので、ここで直接FCGI://192.168.31.141:9000は、パッケージmod_proxy_fcgi.soされているこれら二つのパスの他のパラメータのパラメータを指定し、手動で指定する必要はありません。
特に注目すべきなのは赤のフォント部分にはDocumentRootの中の<VirtualHost>へのパスと一致する必要がある
ProxyPassMatch
。ここで、唯一の特定の規則的なパターンの内容を満たすために、^ /(。* \。パターンに一致して、このルールを実行します PHPを( /.*)?)$
の.phpとの任意のエンドにマッチする、ウェブサイト(バーチャルホスト<VirtualHost>のルートディレクトリから開始する、または^(キャレット。.PHP /トークパスの他のコンテンツを保持した後)と$ (ドル)()カッコの内容と一致するように、パスの開始および終了をマークは...後で容易に参照するために$ 1、で表すことができる
FCGI:// 192.168.31.141:9000 mod_proxy_fcgiは、プロキシによって転送され、FastCGIの契約を使用して、PHP-FPMリスニングポートにアクセスしてください。
/パス/ /あなた/ DocumentRootが/する
非常に重要な!仮想ホストのパスに一致している必要があり、およびオペレーティングシステムで対応するPHPファイルの絶対パスでなければなりません。そうでない場合は、ファイルが見つかりません。
$ 1要求の全体の可変パスに展開元から要求することができ、ここで一致した(URL)内のそのパス)(正面を指す
充電:2.4以前のバージョンのApache HTTPDモジュールの動作のApache PHPのいずれかのように、又は第二の追加三者モジュールは、PHP-FPMの実装をサポートしています。
LAMPのテスト環境:
ホスト上でMySQLのPHPのMySQLサーバー接続のアカウントを作成
する* *上のすべてを与える> mysqlの 123456 ;.」によって識別される「%」@ ceshi
mysqlの接続を許可するには注意ファイアウォール。
:は/ var / www /のベネットディレクトリのテストページ下のサーバー上のPHP .PHPを作成し
ます。[root @のphpserver〜]#のCAT /var/www/benet/index.php
<PHP?
;のphpinfo()
?>
[ルート@ 〜phpserver] /var/www/benet/test.php CAT#
<PHP?
$リンク=にmysql_connect( '192.168.31.225'、 'ceshi'、 '123456');
IF($リンク)エコー「接続...成功...「;
にmysql_close();
?>