CGIワークフローを理解しようとしています。たとえば、CGIでUnixシェルスクリプトを使用するとすると、クライアントがWebサーバー(Apache)に要求を送信するときにスクリプトを実行するために実行される一連のステップは何ですか?読んで次のステップを得ました。リンク1そしてリンク2しかし、これが完了したかどうか尋ねたいです。
- Apache はポート 80 でリクエストをリッスンします。これはCGIに対する要求であることを確認します。
- ApacheはCGIプロセスをフォークして実行します。
- CGIは実行するスクリプトを確認し、必要なものを記録します(例:#!/ bin / sh(したがってシェルスクリプト))。
- CGIフォークと/bin/shの実行
- シェルはスクリプトを解析して実行します。
答え1
「CGIプロセス」と呼ぶのはCGIプログラムです。 CGIプログラムは、任意の言語のスクリプトまたはコンパイルされた実行可能ファイルです。
オペレーティングシステムが実際にCGIプログラムコードを実行する方法(手順2、3、4、5)の詳細は、CGIのしくみを理解するために必ずしも必要ではありません。
私はこれをこう考えています(ここでは2~5段階が2段階に圧縮されています)。
- Apacheはリクエストを受け取ります。 - CGIプログラムのリクエストだと思います。
- ApacheはCGIプログラムを実行し、要求のパラメータを環境のCGIプログラムに環境変数として渡します。
- CGIプログラムは環境からパラメータを取得し、必要な処理を実行し、Webページを標準出力に書き込みます。
- ApacheはCGIプログラムの標準出力からWebページを受け取り、それをWebクライアント(通常はWebブラウザ)に送信します。
手順2〜5で説明したほとんどの詳細は、execve
マニュアルページ(Linuxで動作するコード例を含む)に含まれていますman 2 execve
。また、一度見たいと思うかもしれませんfork
。これはCGIのトピックを離れ、Unixプロセスモデルのトピックに入りました。後で他の質問に答えることをお勧めします。
CGIの正確で詳細な説明については、仕様のインターネットドラフトを参照してください。
WWW Common Gateway Interface バージョン 1.1
また、見ることができます
Apacheチュートリアル:CGIを使用した動的コンテンツ
答え2
私が見たもののうち、CGIの仕組みの最良の説明の1つはこの本です。