2016-05-06 17 views
8

私はFastCGIを初めて使うと述べました。私はOS XマシンにMAMPのApacheを持っています。デフォルトのPHPハンドラはApache Handler 2.0(libphp5.so)でした。 FastCgiExternalServerがコメントアウトされ、あなたが見ることができるように、しかしApache FastCGI PHPのFastCgiExternalServerとFastCgiServerの違いは?

<IfModule mod_fastcgi.c> 
    AddHandler php5.fcgi .php 
    Action php5.fcgi /php5.fcgi 
    Alias /php5.fcgi /Applications/MAMP/fcgi-bin/php5.fcgi 
    FastCgiServer /Applications/MAMP/fcgi-bin/php5.fcgi -socket /Applications/MAMP/tmp/php-fcgi/php5-fpm.sock -pass-header Authorization -idle-timeout 3600 
    #FastCgiExternalServer /Applications/MAMP/fcgi-bin/php5.fcgi -socket /Applications/MAMP/tmp/php-fcgi/php5-fpm.sock -pass-header Authorization -idle-timeout 3600 
    <Directory /Applications/MAMP/fcgi-bin> 
     Order allow,deny 
     Allow from all 
    </Directory> 
</IfModule> 

:私は私のhttpd.confの末尾に以下を追加How to configure Apache to run PHP as FastCGI on Ubuntu 12.04 via terminal?

:私はFastCGIに変更したいと、ここで答えを追いました。ページを要求しようとする代わりに、私は、そうでない場合は、Apacheは私に次のエラーを与えていたFastCgiServer原因を使用していた:

を[金5月6日午後11時25分22秒2016] [エラー] [クライアント:: 1]( 2)そのようなファイルやディレクトリがありません:FastCGI:サーバ "/Applications/MAMP/fcgi-bin/php5.fcgi"への接続に失敗しました:connect()failed

[Fri May 06 23:25:22 2016]エラー] [クライアント:: 1]のFastCGI:不完全ヘッダー(0バイト)は、サーバから受信した "/Applications/MAMP/fcgi-bin/php5.fcgi"

しかし/Applications/MAMP/fcgi-bin/php5.fcgi存在し、その内容を次のとおりです。

#!/bin/bash 
PHP_CGI=/Applications/MAMP/bin/php/php5.6.2/bin/php-cgi 
exec $PHP_CGI 

FastCgiServerFastCgiExternalServer、なぜFastCgiExternalServerは、私の場合には動作しませんでしたが、FastCgiServerが働いていたとの違いは何ですか?

+0

を学ぶmod_proxy_fcgiとPHP-FPMの代わりに、mod_fastcgiのを見て素晴らしいリソースです。 – covener

答えて

8

FastCgiServerは、mod_fastcgiがインスタンスを上下に回転させ、それらを受信するためのunixドメインソケットを与えるためのプロセス管理を行うサーバーです。 fastcgiサーバーを起動するための外部アクションは必要ありません。

FastCgiExternalServerは、mod_fastcgiがプロセス管理をしないサーバーです。要求または応答を使用するように指示するUNIXまたはTCPソケットに手を差し伸べるだけです。あなた、またはhttpd以外のデーモンは、リストされたソケットで何かを開始する必要があります。最も基本的な方法は 'fcgistarter'ユーティリティです。他のオプションはphp-fpmのようなものです。

1

パフォーマンスが理由であれば、私はfcgidでApacheを使うと言うでしょう。これはパフォーマンスの点で優れていると考えられます。 パフォーマンスを処理するために、mod_fcgidは、複数のCGIプログラムのインスタンスを起動して、同時要求を処理します。これはPHP開発者向けのmod_phpの代わりに使用され、より高いパフォーマンスを提供します。私が見つけたこの記事では、2016年にPHPのFastCGIのをやっている場合は、

http://2bits.com/articles/apache-fcgid-acceptable-performance-and-better-resource-utilization.html

+0

より良いパフォーマンスを使用するには、nginxの代わりにapache(look google:nginx apache performance)を使用します。 –

+0

@KamilKiełczewskiはNginxの性能上の優位性は全面的に正確ではないと推定しています。静的コンテンツの場合は、動的コンテンツではありませんが、ほぼ同じです。グーグルのページの一例:http://www.hostingadvice。com/how-to/nginx-vs-apache/ – jeffmcneill

+0

@jeffmcneill将来のWeb方向は静的です。動的なページコンテンツを生成するクライアント(例:Angular2上に構築)(クライアントは静的なJS + HTML + CSSファイルです。ブラウザ側でこの静的ファイルをロードしてJSを実行します)、そのクライアントはRESTfullリクエスト(json、ajax)のみでバックエンドとcomunicateします - 静的なパフォーマンスは非常に重要です:) MVCモデルでは、Mはバックエンドにあり、VCはオンですフロントエンド:) –

関連する問題