fastcgi apache fcgi

摘要:
目录“<Directory”/usr/local/apache2/cgi-bin“>fcgi_stdio.h>fcgi_printf(“helloworld\n\n”);request->envp)voidhandle_request(FCGX_request*request){char*value;FCGX_Init();

 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 连接超时时间1000s 适合gdb调试

#修改fcgi目录
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
<Directory "<Directory "/usr/local/apache2/cgi-bin">
</Directory>

配置参考地址: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\n\n");
FCGI_printf(
"hello world\n\n");
}
}

  编译:

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\n\r\n");
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(
"\n");
}

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代替空格

免责声明:文章转载自《fastcgi apache fcgi》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇《Java编程思想》阅读笔记6Amoeba(变形虫)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

第二次实验报告

C程序设计实验报告 实验项目: 4.3.1 if语句的应用 4.3.2 switch/case语句的应用 4.3.3 switch/case语句嵌套结构if语句的应用 4.3.4 switch/case结构的嵌套应用 4.3.5 分析程序 姓名:欧阳思健        实验地点:514实验教室         实验时间:2019.04.03 一、实验目...

后端接收前端传的数据方式

1. get方式获取:     res = request.GET.get("name",  " ")     GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,多个参数用&连接 2. 以表单方式传数据     name = request.POST.get("name", "") 3. 以jso...

1、结构体

1、为什么需要结构体   为了表示一些复杂的事物,而普通的基本类型无法满足实际要。 2、求什么叫结构体  把一些基本类型数据组合在一起形成的一个新的复合数据类型,这个叫做结构体。 3、如何定义结构体 /*---------------------------------------------- 结构体的定义方式 ---------------------...

V4L2驱动的移植与应用(三)

三、V4L2的demo capture.c是官方示例程序。 capture.c 程序中的 process_image 函数: capture.c 程序主要是用来演示怎样使用 v4l2 接口,并没有对采集到的视频帧数据做任何实际的处理,仅仅用 process_image 函数表示了处理图像的代码位置。 process_image 函数只有一个参数,就是存储...

深度自编码器(Deep Autoencoder)MATLAB解读

深度自编码器(Deep Autoencoder)MATLAB解读作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 这篇文章主要讲解Hinton在2006年Science上提出的一篇文章“Reducing the dimensionality of data with neural networks”的主要思想与M...

UCOSIII任务创建

UCOSIII任务创建: 首先要确保UCOSIII移植成功; 一般以下几个步骤就行了: 第一步:写好任务所需的 优先级、堆栈、控制块等; 然后顺便声明下任务函数; 第二步:开始创建函数 源码: 1 #include "led.h" 2 #include "delay.h" 3 #include "sys.h" 4 #include "usart.h"...