设为首页 收藏本站
查看: 601|回复: 0

[经验分享] CentOS上配置lighttpd/fastcgi环境(2)

[复制链接]

尚未签到

发表于 2016-5-10 12:45:57 | 显示全部楼层 |阅读模式
在lighttpd上开发fastcgi程序需要安装两个库
一、安装开发库
1) fcgi
   http://fastcgi.com/dist/fcgi-2.4.0.tar.gz
   fcgi用于处理fastCGI请求
2) rudeCGI
   http://rudeserver.com/cgiparser/download/rudecgi-5.0.0.tar.bz2
   rudeCGI用于解析http request参数的KVP对
   例如:一个WMS的GetCapabilities请求(http://www.opengeospatial.org/standards/wms)
http://10.0.0.136:2087/world/wms?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities
http request参数为:SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities
通过rudeCGI可以这样方位KVP对
rude::CGI cgi;
cgi["SERVICE"];
cgi["VERSION"];
cgi["REQUEST"];
值分别是:
WMS
1.3.0
GetCapabilities
并且rudecgi可以从接受从stdin传输的字符串,从而可以在命令行下调试fastcgi程序
rudecgi-5.0.0.tar.bz2源码本身有点问题,需要做一点修改。
修改AbstractImplementation.cpp文件的instance()函数为

AbstractImplementation* AbstractImplementation::instance()
{
if(!s_instance)
{
finished=false;
s_instance = new Implementation();
}
return s_instance;
}

1、安装fcgi
#tar zxvf fcgi-2.4.0.tar.gz
#cd fcgi-2.4.0
#./configure
#make
#make install
2、安装rudecgi-5.0.0.tar.bz2
修该rudecgi的源码后,安装rudecgi
#tar jxvf rudecgi-5.0.0.tar.bz2
#./configure
#make
#make install
二、编写fastcgi程序
安装完rudecgi和fcgi以后就可以用C/C++写fastcgi程序了,下面是个fastcgi的小程序
#vi fcgitest.cpp

#include <rude/cgi.h>
#include <fcgi_stdio.h>
#include <fcgi_config.h>
#include "stdlib.h"
#include "stdio.h"
int main(int argc, char* argv[])
{
int count = 0;
while(FCGI_Accept_t() >= 0)
{
rude::CGI cgi();
//输出http头
//mime type是text/plain类型
//http head和body之间要有一个空行,所以输出两个\r\n
printf("ContentType: text/plain \r\n" "\r\n");
//输入计数器
printf("count:%d ", count++);
printf("<br>");
//输出http requst的kvp的值
printf("Service:%s", cgi["SERVICE"]);
printf("<br>");
printf("Version:%s", cgi["VERSION"]);
printf("<br>");
printf("Request:%s", cgi["REQUEST"]);
printf("<br>");
//http response结束
printf("\n\n");
cgi.finish();
}
return 0;
}

编译fcgitest.cpp
#g++ -o fcgitest.cgi fcgitest.cpp -lfcgi++ -lrudecgi
生成fcgitest.cgi程序
在命令行下就可以运行fcgitest.cgi程序
#./fcgitest.cgi
就可以运行
三、将fcgitest.cgi程序配置到lighttpd中
在lighttpd中配置fastcgi需要打开fastcgi的mod
打开lighttpd的配置文件lighttpd.conf
去掉server.modules下面的"mod_fastcgi"模块的注释符“#”。
在lighttpd.conf中找到
#fastcgi.server = (
一行,我这里是在225行,这里就是lighttpd配置fastcgi的部分。默认有一个php的配置。
现在就把刚才写的fcgitest.cgi程序配置到lighttpd中去。
配置文件如下:

"/fastcgi" =>
( "localhost" =>
(
#unix socket的路径
"socket" => "/tmp/fcgitest-fcgi.socket",
"check-local" => "disable",
#fastcgi应用程序的路径
"bin-path" => "/opt/fcgitest/fcgitest.fcgi",
"idle-timeout" => 10,
#当访问量增大的时候lighttpd启动的最小和最大进程数的设置
#这里设置最少启动一个进程,最多启动10个进程
"min-procs" => 1,
"max-procs" => 10
)
)

配置完以后的fastcgi.server节点为:

#fastcgi.server= (
#   ".php" =>
#     ( "localhost" =>
#       (
#         "socket" => "/var/run/lighttpd/php-fastcgi.socket",
#         "bin-path" => "/usr/local/bin/php-cgi"
#       )
#     )
#     ,
"/fastcgi" =>
( "localhost" =>
(
"socket" => "/tmp/fcgitest-fcgi.socket",
"check-local" => "disable",
"bin-path" => "/opt/fcgitest/fcgitest.fcgi",
"idle-timeout" => 10,
"min-procs" => 1,
"max-procs" => 10
)
)
)

配置完以后重新启动lighttpd
#/etc/init.d/lighttpd restart
然后就可以在浏览器里面访问fcgitest服务了
URL:

http://10.0.0.136:2087/fcgitest?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-215211-1-1.html 上篇帖子: CentOS上配置lighttpd/fastcgi环境(1) 下篇帖子: Centos下安装php的mbstring扩展
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表