問題タブ [fastcgi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Djangoとfcgi-ロギングの質問
Djangoで実行されているサイトがあります。フロントエンドはlighttpdであり、djangoをホストするためにfcgiを使用しています。
fcgiプロセスを次のように開始します。
ロギングのために、次のように定義されたRotatingFileHandlerがあります。
ロギングは機能しています。ただし、10Mbは言うまでもなく、10Kbにさえ達しない場合でも、ファイルはローテーションしているように見えます。私の推測では、各fcgiインスタンスは10個のリクエストのみを処理し、その後再生成します。fcgiがリスポーンするたびに、新しいファイルが作成されます。fcgiが新しいプロセスIDで頻繁に起動していることを確認します(正確に時間を知るのは難しいですが、1分未満です)。
この問題を回避する方法はありますか?サイズ制限に達するまで、すべてのfcgiインスタンスを1つのファイルに記録したいと思います。サイズ制限に達すると、ログファイルのローテーションが行われます。
c++ - FastCGI は Web サーバー (Apache 2.2+ など) でどのように機能しますか?
FastCGI (fcgi-2.4.0) のソースを調べたところ、実際にはフォークの兆候はありません。私が正しければ、WebサーバーはFastCGIモジュールのプロセスを生成し(コンパイルまたはSO / DLLとしてロード)、メインソケット(通常はポートTCP:80)の制御を処理します。
*nix では、FastCGI モジュールはファイル記述子全体 (確かにリッスン ソケット) でファイル書き込みロック (libfcgi/os_unix.c:989) を使用してそのソケットを「ロック」します。この方法では、新しい接続が発生したときに、FastCGI モジュールのみがこれらを処理できます。HTTP req 処理に引き渡す直前に、着信ソケット ロックが解放されます。
FastCGI モジュールがマルチ プロセス/スレッドではない (fork/pthread_create の内部使用がない) ように、複数の同時接続の同時処理は、n 個の FastCGI モジュール プロセスの Web サーバーからの spwaning (OS_SpawnChild 経由) によって取得されると想定しています。例として、3 つの FastCGI プロセス (Apache が 3 x OS_SpawnChild を呼び出す) を生成した場合、最大 3 つのリクエストしか同時に処理できないということですか?
A) FastCGI の動作方法に対する私のビジョンは正しいですか?
B) OS が新しいプロセスを生成したり、ローカル DB への接続を作成したりするためのコストが無視できると考えられる場合、旧式の実行可能アプローチに対する FastCGI の利点は何ですか?
ありがとう、エマ!:-)
java - ファイル記述子番号からJavaソケットを取得できますか?
プログラムがFastCGIを介して開始されると、Webサーバーと通信するためにすでに開いているソケットで実行されます。ソケットのファイル記述子番号はプログラムに渡されますが、それをSocketインスタンスなどのJavaで役立つものに変換するにはどうすればよいでしょうか。
私のホスティングサービスは、Apachehttpdにmod_fastcgiを使用しています。FastCgiExternalServerを介してリクエストを転送するためのhost:portを提供する外部サーバーを構成することはできません。
php - 特定のURLに対してのみnginx+php-fpm + wordpressを設定するにはどうすればよいですか?
他のページへのプロキシとして機能しながら、nginx + php-fpm+wordpressを取得して自分のサイトの一部のページを提供しようとしています。
すなわち:
host/foo->別のwwwサーバーへのプロキシ
ホスト/バー->ワードプレス(fpm経由)
プロキシ部分は正常に機能しますが、nginx->wordpress部分はルートページにリダイレクトし続けます。
php-fpmプロセスをstraceすると、ヒットが入ってくるのがわかり、wordpressは実際にすべてのコンテンツを考えてロードしますが、最後の1秒でルートページにリダイレクトされます。
php側で着信fastcgiパラメータを確認する方法についてGoogleで何も見つかりません。nginxから送信されているヘッダーに何か問題があると推測しますが、すべてが送信されていることを確認する方法がわかりません。(straceは最初の数バイトしか提供しないため、ここではあまり役に立ちません)
telnet経由で試して、次のように入力した場合:
GET / HTTP / 1.0<CR><CR>
私はあなたが期待するように正しいコンテンツを取得します(すなわち:リダイレクトしません)。しかし、ブラウザからはリダイレクトされます。
php - IE7 での HTTP 500 エラー
私の開発環境では、最近、IIS で ISAPI を使用する php 5.2 から IIS で fastCGI を使用する PHP 5.3 に移行しました。エラーが発生した場合 (関数名が正しくないなど)、FATAL ERROR などを報告する PHP に慣れています。ブラウザに。エラーを受信する代わりに断続的に HTTP 500 を受信します。firefox でブラウジングしている場合、これは発生しません。
IE キャッシング コンテンツ タイプまたは HTTP コードに関連しているようです。私の理由は、問題のあるコードのチャンクを削除してページを更新し (IE で)、問題のあるコードを元に戻すと、エラー メッセージが表示されるからです。
私が何を見ればいいのか誰か知っていますか?
display_errors がオンに設定されています....
コメントにコードを追加しようとしましたが、見苦しかったので追加します:
サンプル コード: index.php
<?php
php_infowrong();
?>
Web サイトの URL を入力すると、次のようになります。
Firefox の場合: PHP Fatal error: Call to undefined function php_infowrong() in D:\Web\pathtowebsite\index.php on line 2
Internet Explorer で受信: HTTP 500 内部サーバー エラー
その後、index.php を次のように変更する
<?php
phpinfo();
?>
と、IE と Firefox の両方で正しい php_info ページが表示されます。
index.php を元の誤った形式に戻してページを更新すると、IE に次のように表示されます。 PHP Fatal error: Call to undefined function php_infowrong() in D:\Web\pathtowebsite\index.php
php - 現在実行中のPHP実行可能ファイルを確認するにはどうすればよいですか?
PHPプログラムの中から、それを実行しているバイナリの場所を知りたいです。Perlは$^X
この目的のために持っています。PHPに同等のものはありますか?
これは、(パスをハードコーディングしたり、「php」が正しいと想定したりするのではなく)それ自体を使用して子PHPプロセスを実行できるようにするためです。
アップデート
- Apache + mod_phpではなく、lighttpd+FastCGIを使用しています。そうです、PHPバイナリがあります。
- eval / includeは、リクエストを超えて存続する必要があるサーバーを生成しているため、解決策ではありません。
私が試したがうまくいかないこと:
$_SERVER['_']
コマンドラインからは必要なもののように見えますが、実際には、最後に実行されたプログラムのシェルによって設定された環境変数からのものです。Webサーバーから実行する場合、これはWebサーバーのバイナリです。which php
PHPバイナリは、Webサーバーのバイナリと同じであることが保証されていないため、機能しませんPATH
。
前もって感謝します。
fastcgi - FastCGI サーバーに ping を実行するにはどうすればよいですか?
TCP 接続を確立するだけでなく、FastCGI サーバーが正常に稼働しているかどうかを確認するにはどうすればよいですか?
リモートのスタンドアロン FastCGI サーバーが多数あります。FastCGI サーバー自体を監視して、稼働していることを確認したいと考えています。デッドサーバーを自動的に迂回するため、単に Web サーバーにリクエストを送信するだけでは十分ではありません。
ありがとう!
apache - (22) 無効な引数: FastCGI: プロセス マネージャが終了しています。setgid() が失敗しました
Apache サーバーを起動しようとしており、Fast CGI を使用する予定です。起動しようとすると、error_log に次のエラー メッセージが表示されます。
[警告] (22) 無効な引数: FastCGI: プロセス マネージャーの終了、setgid(4294967295) の失敗
グループIDを設定しているようで、その時点でこのアラートメッセージが表示されました。
この警告メッセージについて何か考えはありますか?
php - IIS FastCGI上のPHPでHTTP認証は可能ですか?
php5isapi.dllを使用してPHP5.2.3から、FastCGIとphp-cgi.exeを使用してPHP5.3.0に移行しました。このサイトには、次のようなことを行うwindows / ntlm/http認証用のフックがあります。
これは、isapiを使用したPHP5.2.3でうまく機能しました。IIS6でFastCGIに移行したので、壊れています。それは私のために働きます、しかし私はサーバー上に管理者を持っています。管理者がいない人(ほとんどの人)には、次のいくつかのバリエーションがあります。
ドキュメントとログファイルを調べてみましたが、うまくいかないようです。.phpファイルにアクセスするためにリモートユーザー名を実際に使用するのは望ましくありません。名前を取得してデータベースと照合するだけです。anonユーザーは、実際のphp実行を行うユーザーである必要があります。
リードはありますか?
php - Lighttpd + PHP + FCGI
Lighttpd、PHP、および CGI に問題があります。
私は OpenSUSE.10 を使用しています。
lighttpd (バージョン 1.4.23) と php (バージョン 5.3.0) をビルドしました。
これは lighttpd ビルド コマンド ラインです。
これは php ビルド コマンド ラインです。
これは php、php-cgi -v です。
これは lighttpd.conf です:
これは、lighttpd を開始するためのコマンド ラインです。
最後に、lighttpd は lighttpd_error.log を作成します。
私の質問は次のとおりです。
1) Ubuntu または OpenSUSE で lighttpd + PHP + FastCGI を起動した経験のある人はいますか?
2) fcgi の生成に失敗したのはなぜですか?
つまり、このような index.php を使用して Web サーバーをテストしたいと考えています。
PS:
外すと
lighttpd.conf から、lighttpd が正常に起動し、Firefox に index.html が表示されます (index.php は表示されません):
アップデート:
回答ありがとうございます。
lighttpd_error.log は、FCGI と PHP インタープリターに問題があることを正確に示しています。
はい、バックポートは SUSE または Ubuntu で利用できますが、機能しません。
OSの問題だと思います。
私は組み込みデバイスを持っています:
このデバイス用のアプリをビルドするためのクロス コンパイラ:
そのため、MIPS ターゲット用の Lighttpd と php をビルドし、それらをこのデバイスにコピーすると、サーバーは正常に動作し始めました。Mozilla の index.php が表示されました。
Lighttpd+PHP が PC で動作しない理由がわかりません。
決定: 私は問題に点数をつけます。