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(推奨)
Makefileのコンパイル:
all:main main: test.c gcc
-
g
-
Wall
-
O0
-
lfcgi
-
o test.fcgi test.c
//注意gccの前にスペースの代わりにtabを使う
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を使う