fastcgi apache fcgi

8528 ワード

FastCGIインストールと構成に関するパッケージ:httpd 2.2.14//このバージョンで問題が発生しないことに注意注意注意注意注意注:apache httpdインストール
fcgi-2.4.0.zip mod_fastcgi-2.4.6.zip  その中のREADMEをよく読んでください
php 5.2.17
apacheの構成:(デフォルトは/usr/localフォルダの下にインストールされます)
#httpdを構成する.conf末尾追加:LoadModule fastcgi_module modules/mod_fastcgi.so
<
IfModule
fastcgi_module
>
AddHandler fastcgi-script .fcgi # you can put whatever extension you want
IfModule
>
FastCgiIpcDir/tmp#は、fcgiの数とリンク時間を制限することができる:FastCgiServer/root/fcgi/test.fcgi-processes 1-idle-timeout 1000#:-processes 1 gdbデバッグ-idle-timeout 1000接続タイムアウトに適したプロセスのみを開くgdbデバッグに適した1000 s gdbデバッグに適したfcgiディレクトリScriptAlias/cgi-bin/"/usr/local/apache 2/cgi-bin/"を変更する


 
構成参照アドレス:http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html#FastCgiServer
test.c:(簡単な例は推奨しません)
#include
<
fcgi_stdio.h
>
#include
<
stdlib.h
>
int
$count
=
0
;
int
main(
int
argc,
char
*
argv[] ) {
while
(FCGI_Accept()
>=
0
) { FCGI_printf(
"
Content-Type:text/html
"
); FCGI_printf(
"
hello world
"
); } }
コンパイル:
gcc
-
Wall
-
g
-
O0
 test.c
-
o test.fcgi -lfcgi
 
アクセス:http://localhost/cgi-bin/test.fcgi
test2.c(推奨)
 
/* Compile with: gcc -Wall -lfcgi fastcgi.c -o fastcgi 
*/

#include
<stdio.h>
#include
<stdlib.h>
#include
<fcgiapp.h>

#define printf(...) FCGX_FPrintF(request->out, __VA_ARGS__)
#define get_param(KEY) FCGX_GetParam(KEY, request->envp)

void handle_request(FCGX_Request *request) {
char*value;

printf(
"Content-Type: text/plain\r
\r
");
if ((value = get_param("REQUEST_METHOD")) != NULL) {
printf(
"%s ", value);
}
if ((value = get_param("REQUEST_URI")) != NULL) {
printf(
"%s", value);
}
if ((value = get_param("QUERY_STRING")) != NULL) {
printf(
"?%s", value);
}
if ((value = get_param("SERVER_PROTOCOL")) != NULL) {
printf(
" %s", value);
}
printf(
"
");
}

int main(void) {
//int sock;
FCGX_Request request;

FCGX_Init();
//sock = FCGX_OpenSocket(":2005", 5);
FCGX_InitRequest(&request, 0, 0);

while (FCGX_Accept_r(&request) >=0) {
handle_request(
&request);
FCGX_Finish_r(
&request);
}

return EXIT_SUCCESS;
}

 
  
 
Makefileのコンパイル:
all:main main: test.c gcc
-
g
-
Wall
-
O0
-
lfcgi
-
o test.fcgi test.c
//注意gccの前にスペースの代わりにtabを使う