lighttpd+fastcgi+C语言                                                       

一、简述

记--lighttpd+fastcgi。fastcgi相对于传统cgi,可以实现常驻进程的效果。传统cgi是收到请求之后才会启动cgi程序,处理完成后就退出,这对响应速度、资源不断的申请和释放,状态的保持有影响。

例子及相关资料下载:下载:https://wwa.lanzoui.com/b0c9czcbc 密码:1vyi

二、安装lighttpd

2.1 下载lighttpd

官网:https://download.lighttpd.net/lighttpd

2.2 解压

tar xzf lighttpd-1.4.59.tar.gz

2.3 创建lighttpd目录,后面用作lighttpd安装路径

2.4 安装

配置:

执行./configure -C --prefix=/home/liang/lighttpd/ --without-pcre --without-zlib

--without-pcre --without-zlib 附带这两个参数是因为例子中的ubuntu没有安装pcre和zlib,如果已经安装,或需要请自行安装,然后就不需要这两个参数了

执行make

执行make install

成功安装到指定的目录:

三、配置lighttpd

3.1 拷贝一份配置

3.2 创建相关目录,后面修改配置会使用到

mkdir cache log sockets vhosts www

log目录存放lighttpd相关日志

sockets目录存放的是与fcgi通信的本地域socket

www用作存放html相关,cgi程序相关

3.3 修改配置

修改lighttpd.conf

修改modules.conf

修改fastcgi.conf

fastcgi.server = ( "test.fcgi" => (("bin-path" => "/home/liang/lighttpd/www/test.fcgi","socket" => socket_dir + "/test.socket","min-procs" => 0,"max-procs" => 1,"bin-enviroment" => ("REAL_SCRIPT_NAME" => ""         ),"check-local" => "disable")))

修改cgi.conf使得可以使用cgi

3.4 启动lighttpd

执行sudo /home/liang/lighttpd/sbin/lighttpd -f /home/liang/lighttpd/config/lighttpd.conf

使用-f参数指定配置文件:/home/liang/lighttpd/config/lighttpd.conf


还没有编写test.fcgi, 暂时屏蔽fcgi,后面写好test.fcgi,再打开

成功运行

在 /home/liang/lighttpd/www/下放一个index.html以便启动lighttpd测试, 使用浏览器访问127.0.0.1/index.html即可看到如下页面

四、安装fastcgi

4.1 下载fcgi-2.4.1.tar.gz

链接1:resources/fastCGI安装包 at master · Seaworth/resources · GitHub

链接2:下载:https://wwa.lanzoui.com/b0c9czcbc 密码:1vyi

4.2 解压:tar xzf fcgi-2.4.1.tar.gz

4.3 添加头文件引用

修改fcgio.cpp,添加引用stdio.h头文件,不然后面make会报找不到EOF错误

4.4 编译

./configure(默认安装位置/usr/local/bin, /usr/local/lib/)

执行make

sudo make install

安装后可执行文件在/usr/local/bin, fcgi库文件在/usr/local/lib/ ,头文件在/usr/local/include/

编写fcgi程序需要使用到fcgi_stdio.h和libfcgi.so

五、测试fastcgi程序

简单的测试程序,如果需要更符合的使用场景,可以进行个性化配置。

5.1 测试代码

#include <stdio.h>
#include <stdlib.h>
#include "fcgi_stdio.h"int main(void)
{int count = 0;while(FCGI_Accept() >= 0) {printf("Content-type: text/html\r\n\r\n");printf("Hello Fastcgi. count=%d", ++count);}return 0;
}

5.2 编译

gcc fcgi.c -o test.fcgi -lfcgi

5.3 测试结果

注意:需要在配置中启用fcgi,并重新启动lighttpd服务器,如果还是不能访问fcgi程序,可以尝试重启ubuntu。

六、 测试传统cgi程序

测试代码:

#include <stdio.h>int main(void)
{//printf("Content-type: text/html\r\n");printf("hello cgi. %s\r\n", __DATE__);return 0;
}

编译:gcc cgi.c -o test.cgi

如果test.cgi没有执行权限就需要给权限,chmod a+x test.cgi

测试结果:

此时查看所有进程,是没有test.cgi进程的,因为它已经退出了,只有在被调用的瞬间启动,处理完成就退出,ps ef | grep test.fcgi

附:

1、结束lighttpd:

pkill lighttpd
killall lighttpd

2、关于503 Service Unavailable

通常是服务器不可访问。请尝试:

2.1 排查网络连通性,可能windows防火墙,ubuntu防火墙等;

2.2 请检查lighttpd服务器是否正常启动,启动的时候是否有报错,有报错信息请查看报错信息。

2.3 请检查FCGI程序是否正常启动: 通常可以使用该指令检查,ps -ef | grep xxx.fcgi

2.4 如果fcgi程序不能运行,请检查FCGI程序的执行权限,ls -l xxx.fcgi, 如果没有权限请添加,chmod a+x xxx.fcgi。

2.5 如果fcgi程序不能运行,请检查FCGI程序的动态库(fastcgi.so、fastcgi.so.0 fastcgi.so.0.0.0.0)是否放在动态库环境变量中。在终端执行export, 然后查看LD_LIBRARY_PATH这一行有没有FCGI程序的动态库(fastcgi.so、fastcgi.so.0 fastcgi.so.0.0.0.0)所在的路径,如果没有请添加, 执行:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:FCGI程序的动态库所在路径。

或者直接将FCGI程序的动态库拷贝到已经添加到LD_LIBRARY_PATH环境变量的路径之一。

2.6 lighttpd服务器启动报错是有日志的,在lighttpd.conf配置的日志路径,日志文件通常是error.log

2.7 lighttpd服务器启动报错: failed to start xxx.fcgi, 这个问题请检查fcgi程序的动态库,见附2.5

(log.c.166) server started
(mod_fastcgi.c.1104)  failed to start: xxx.fcgi
(mod_fastcgi.c.1108) child exited with status 255 
(mod_fastcgi.c.1111) If you're trying to run your app as a FastCGI backend, make sure you're using the FastCGI-enabled version.
If this is PHP on Gentoo, add 'fastcgi' to the USE flags.
(mod_fastcgi.c.1399) [ERROR]: spawning fcgi failed.
(server.c.938) Configuration of plugins failed. Going down

Lighttpd+fastcgi+C语言相关推荐

  1. lighttpd+fastcgi+C语言程序

    1.安装环境Ubuntu16.04 2.安装lighttpd apt install lighttpd 3.安装fastcgi 下载源码:fastcgi-2.4.1-SNAP-0910052249.t ...

  2. lighttpd+fastcgi嵌入式web交叉编译到arm

    文章目录 前提 lighttpd交叉编译安装 源码下载 交叉编译 简单测试 fastcgi编译配置 源码下载 交叉编译生成动态库 修改lighttpd配置 简单测试 c语言fcgi程序 c++ fcg ...

  3. lighttpd+fastcgi 返回500错误码_阿根廷著名电视减肥冠军去世 临终前体重达到500公斤...

    第一现场 [阿根廷著名电视减肥冠军去世 临终前体重达到500公斤]阿根廷著名电视减肥节目冠军马克西米里亚诺·奥利瓦6日在位于阿首都布宜诺斯艾利斯郊外的家中去世,享年34岁,临终前体重为500公斤.出于 ...

  4. 什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI?

    原文地址:http://www.mike.org.cn/articles/what-is-cgi-fastcgi-php-fpm-spawn-fcgi/ 什么是CGI CGI全称是"公共网关 ...

  5. php安装模式mod_php和Fastcgi的选择与对比

    安装php又面临到了模式的选择,以前都是选择mod_php模式,因为这样安装比较方便哈,今天突然关心起FastCGI这种模式,败毒了一把,找到了一些关于mod_php和Fastcgi的选择与对比这方面 ...

  6. Note:理解CGI、FastCGI、PHP-CGI和PHP-FPM

    CGI CGI全称是"公共网关接口"(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行"交谈"的一种工具,其程序须 ...

  7. 什么是CGI、FastCGI、PHP-CGI、PHP-FPM

    什么是CGI CGI全称是"公共网关接口"(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行"交谈"的一种工具,其 ...

  8. cgi web 调用多次启动_CGI、FastCGI和PHPFPM有什么关系呢?

    文章来自:php自学中心网站 链接:http://www.startphp.cn/front/php/0108111.html 作者:磊丰 商务合作:请加微信(QQ):2230304070 文章正文 ...

  9. (转)fastcgi简介

    来源:http://baike.baidu.com/view/641394.htm 百度百科 什么是CGI CGI全称是"公共网关接口"(Common Gateway Interf ...

最新文章

  1. jpa删除数据后数据库无修改_java – JPA不删除数据库行
  2. 网页加速系列(七)、 网页加速之异步加载
  3. Mirror--如何在主库上增加文件
  4. android布局优化方案,Android启动优化-布局优化
  5. xshell1分钟就会自动断_详解xshell远程连接自动断开的问题解决办法
  6. Asp.net开发中甩掉.ashx .asmx
  7. 解读新突破“中国量子计算机”,真比神威·太湖之光还厉害?
  8. 黄金分割圆怎么画matlab,黄金分割线画法图解(操作技巧)
  9. 可以做服务器操作系统的是,可以做服务器操作系统
  10. Q102:光线追踪场景(5)——驭龙台
  11. 循环控制体重C语言,减重名医王存川教授告诫:越早控制体重,肥胖导致身体的伤害越小...
  12. 磁盘已满,如何从 Mac 中删除大文件?
  13. 生产质量分析报告常用模板汇总,质量人必备!
  14. iOS 自动化——技术方案、环境配置
  15. BIGWORLD问题集
  16. python 提取百度网盘下载_百度网盘直链提取工具下载
  17. QThread如何优雅实现暂停(挂起)功能
  18. C#实现简单音乐播放器
  19. python实现嗅探
  20. Squid在Windows平台搭建代理服务器

热门文章

  1. !EP(EXE Pack)1.4.exe
  2. 笑话-加薪申请英文信
  3. js获取全国各省地区的经纬度
  4. 利用批处理bat批量处理word文档属性
  5. 京东京麦商家开放平台的消息推送架构演进之路
  6. C++learning
  7. #4:初学者之身——5
  8. 游戏网络通信数据解析_1
  9. 玩转图形学 (二)彩虹
  10. PMP二模知识点集锦