Lighttpd+fastcgi+C语言
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语言相关推荐
- lighttpd+fastcgi+C语言程序
1.安装环境Ubuntu16.04 2.安装lighttpd apt install lighttpd 3.安装fastcgi 下载源码:fastcgi-2.4.1-SNAP-0910052249.t ...
- lighttpd+fastcgi嵌入式web交叉编译到arm
文章目录 前提 lighttpd交叉编译安装 源码下载 交叉编译 简单测试 fastcgi编译配置 源码下载 交叉编译生成动态库 修改lighttpd配置 简单测试 c语言fcgi程序 c++ fcg ...
- lighttpd+fastcgi 返回500错误码_阿根廷著名电视减肥冠军去世 临终前体重达到500公斤...
第一现场 [阿根廷著名电视减肥冠军去世 临终前体重达到500公斤]阿根廷著名电视减肥节目冠军马克西米里亚诺·奥利瓦6日在位于阿首都布宜诺斯艾利斯郊外的家中去世,享年34岁,临终前体重为500公斤.出于 ...
- 什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI?
原文地址:http://www.mike.org.cn/articles/what-is-cgi-fastcgi-php-fpm-spawn-fcgi/ 什么是CGI CGI全称是"公共网关 ...
- php安装模式mod_php和Fastcgi的选择与对比
安装php又面临到了模式的选择,以前都是选择mod_php模式,因为这样安装比较方便哈,今天突然关心起FastCGI这种模式,败毒了一把,找到了一些关于mod_php和Fastcgi的选择与对比这方面 ...
- Note:理解CGI、FastCGI、PHP-CGI和PHP-FPM
CGI CGI全称是"公共网关接口"(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行"交谈"的一种工具,其程序须 ...
- 什么是CGI、FastCGI、PHP-CGI、PHP-FPM
什么是CGI CGI全称是"公共网关接口"(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行"交谈"的一种工具,其 ...
- cgi web 调用多次启动_CGI、FastCGI和PHPFPM有什么关系呢?
文章来自:php自学中心网站 链接:http://www.startphp.cn/front/php/0108111.html 作者:磊丰 商务合作:请加微信(QQ):2230304070 文章正文 ...
- (转)fastcgi简介
来源:http://baike.baidu.com/view/641394.htm 百度百科 什么是CGI CGI全称是"公共网关接口"(Common Gateway Interf ...
最新文章
- jpa删除数据后数据库无修改_java – JPA不删除数据库行
- 网页加速系列(七)、 网页加速之异步加载
- Mirror--如何在主库上增加文件
- android布局优化方案,Android启动优化-布局优化
- xshell1分钟就会自动断_详解xshell远程连接自动断开的问题解决办法
- Asp.net开发中甩掉.ashx .asmx
- 解读新突破“中国量子计算机”,真比神威·太湖之光还厉害?
- 黄金分割圆怎么画matlab,黄金分割线画法图解(操作技巧)
- 可以做服务器操作系统的是,可以做服务器操作系统
- Q102:光线追踪场景(5)——驭龙台
- 循环控制体重C语言,减重名医王存川教授告诫:越早控制体重,肥胖导致身体的伤害越小...
- 磁盘已满,如何从 Mac 中删除大文件?
- 生产质量分析报告常用模板汇总,质量人必备!
- iOS 自动化——技术方案、环境配置
- BIGWORLD问题集
- python 提取百度网盘下载_百度网盘直链提取工具下载
- QThread如何优雅实现暂停(挂起)功能
- C#实现简单音乐播放器
- python实现嗅探
- Squid在Windows平台搭建代理服务器