在Linux上搭建apache+fastcgi环境,说多了都是泪啊. 花费我几天时间,开源软件虽说好用,但是版本众多,文档缺乏,什么都只能自己摸索. 终于成功运行起来,特此记录.

一. apache 安装

此处下载 apache-2.2.27 版本,常规的 configure make 命令,安装非常方便

wget http://mirrors.cnnic.cn/apache//httpd/httpd-2.2.27.tar.bz2tar -xjzf httpd-2.2.27.tar.bz2cd httpd-2.2.27./configure --prefix=/usr/local/apache2make && make install

二. apache 配置

<Directory "/usr/local/apache2/cgi-bin">AllowOverride NoneOptions Indexes ExecCGI # 执行CGIOrder allow,denyAllow from all</Directory>#添加文件映射AddHandler cgi-script .cgi .py

运行服务: ./apachectl start

打开 http://localhost, 成功会显示 It works!

三. 编译安装 fastcgi模块

fastcgi有多个分支版本, mod_fastcgi 官方地址: http://www.fastcgi.com/,这个是官方提供的扩展模块,已经很久没维护了; 而且下载链接已失效了

mod_fcgid 是apache官方维护的版本,与mod_fastcgi二进制兼容,原来的fastcgi程序不用重新编译就能工作. 其在mod_fastcgi基础上做了大量的代化

这里选择mod_fastcgi测试,生产环境不建议使用:

wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.6.tar.gztar -xzvf mod_fastcgi-2.4.6.tar.gzcd mod_fastcgi-2.4.6cp Makefile.AP2 Makefilemake top_dir=/usr/local/apache2make top_dir=/usr/local/apache install

编译完成后编辑httpd.conf, 加入fastcgi模块

LoadModule fastcgi_module modules/mod_fastcgi.so

四. 测试运行

下载安装 jnopy , fastcgi的python模块

cd jonpy-2.2.27

python setup.py install

#!/usr/bin/pythonimport jon.cgi as cgiimport jon.fcgi as fcgiclass Handler(cgi.Handler):def process(self, req):req.set_header("Content-Type", "text/plain")req.write("Hello, world!\n")fcgi.Server({fcgi.FCGI_RESPONDER: Handler}).run()

运行再一次出现500错误,查看日志:  [error]  No such file or directory exec of '/usr/local/apach2/cg-bin/hello_fcgi.py' failed

这就奇怪了,明明在/cgi-bin目录,打印的路径也是正常,怎么可能找不到呢? 难道是这脚本有猫腻,手动运行看看,报错:  ./hello_fcgi.py: /usr/bin/python^M: bad interpreter: 没有那个文件或目录

原来这个文件有特殊字符,从windows下拷贝过来的文件很容易出现这个问题, vi 打开文件,直接 :set ff=unix 保存退出即可

五. 安装fastcgi开发库

如果顺序进行上面几步,表明环境都已经搭建好,下面部署c++程序

5.1 安装fastcgi开发库

wget http://www.fastcgi.com/dist/fcgi.tar.gzcd fcgi-2.4.1./configuremakemake install

make时出错, error: 'EOF' was not declared in this scope ,这EOF不是stdio.h中的吗, libfcgi/fcgio.cpp 中添加代码 #include <stdio.h> ,再次make,一切正常

5.2 编码测试

#include "fcgi_stdio.h"#include <stdlib.h>void main(void){int count = 0;while(FCGI_Accept() >= 0)printf("Content-type: text/html\r\n""\r\n""<title>FastCGI Hello!</title>""<h1>FastCGI Hello!</h1>""Request number %d running on host <i>%s</i>\n",++count, getenv("SERVER_NAME"));}

编译: gcc -o fcgi_test.fcgi cgi_test.c -I/usr/local/include -L/usr/local/lib -lfcgi

大小: 13.6 KB大小: 15.8

Linux +apache+fastcgi运行c/c++的更多相关文章

  1. Linux apache的运行用户和用户组

    我们在安装apache后,有时在上传文件的时候,提示没有权限或者是不可写,我们都会去查文件夹的权限. 通过ls -l /var/www/html/website可以很直观的看出我们文件和文件夹的权限, ...

  2. Linux apache的运行用户和用户组

    我们在安装apache后,有时在上传文件的时候,提示没有权限或者是不可写,我们都会去查文件夹的权限. 通过ls -l /var/www/html/website可以很直观的看出我们文件和文件夹的权限, ...

  3. Nginx+FastCGI运行原理(一)

    1 实战Nginx与PHP(FastCGI)的安装.配置与优化 1.1 什么是 FastCGI FastCGI是一个可伸缩地.高速地在HTTP server和动态脚本语言间通信的接口.多数流行的HTT ...

  4. Linux+apache+mono+asp.net安装教程

    Linux+apache+mono+asp.net安装教程(CentOS上测试的) 一.准备工作: 1.安装linux系统(CentOS,这个就不多讲了) 2.下载所需软件 http-2.4.4.ta ...

  5. Atitit linux获取项目运行环境版本

    Atitit linux获取项目运行环境版本 1.1. Nginx版本1 1.2. Php版本1 1.3. Mysql版本2 1.4. Redis版本2 1.1. Nginx版本 [root@iZ25 ...

  6. CentOS 6.3下源码安装LAMP(Linux+Apache+Mysql+Php)环境

    一.简介 什么是LAMP    LAMP是一种Web网络应用和开发环境,是Linux, Apache, MySQL, Php/Perl的缩写,每一个字母代表了一个组件,每个组件就其本身而言都是在它所代 ...

  7. CentOS 6.3 源码安装LAMP(Linux+Apache+Mysql+Php)环境

    一.简介 什么是LAMP LAMP是一种Web网络应用和开发环境,是Linux, Apache, MySQL, Php/Perl的缩写,每一个字母代表了一个组件,每个组件就其本身而>言都是在它所 ...

  8. Centos下安装配置LAMP(Linux+Apache+MySQL+PHP)

    Centos下安装配置LAMP(Linux+Apache+MySQL+PHP)   关于LAMP的各种知识,还请大家自行百度谷歌,在这里就不详细的介绍了,今天主要是介绍一下在Centos下安装,搭建一 ...

  9. [转] Ubuntu 12.04下LAMP安装配置 (Linux+Apache+Mysql+PHP)

    我是一个Linux新手,想要安装一台Ubuntu 12.04版的Linux服务器,用这台服务器上的LAMP套件来运行我自己的个人网站.LAMP套件就是 “Linux+Apache+Mysql+PHP这 ...

随机推荐

  1. uiautomator的坑和AAPT命令方式启动一个应用程序

    最近在使用UIautomator完成公司的一个主流程的自动化,因为不适用H5和IOS所以会放弃这个工具的使用,现在记录在使用uiautomator的一些问题: 案列1:使用命令去启动要运用的apk包 ...

  2. PHP Fatal error: Cannot pass parameter 2 by reference

    PHP Fatal error:  Cannot pass parameter 2 by reference in 这个错误的意思是:不能按引用传递第2个参数 我的理解是: 方法的第2个参数 需要传递 ...

  3. Error:(6, 0) No such property: outputDir for class: org.gradle.api.internal.project.DefaultProject_Decorated

    在学习greenDao过程中build.gradle文件中出现这个错误,找了半天不知道为什么.代码我是在git上下载的Demo,按理说应该是没问题的.到最后发现缺少了一个关键字Def // 这样有问题 ...

  4. 12天学好C语言——记录我的C语言学习之路(Day 2)

    12天学好C语言--记录我的C语言学习之路 Day 2: 我建议大家每一天学习之前都仅凭记忆去敲前一天敲过的最后一个程序,或者敲前一天你认为最难最长的一个程序,如果一晚上的睡眠之后不看书还能敲的出来, ...

  5. ios专题 - objc runtime 动态增加属性

    objective-c中,有类别可以在不修改源码的基础上增加方法:近排在看别人的开源代码时,发现还可以动态增加属性.而且是在运行时,太牛B了. 使用运行时库,必须要先引入 objc/runtime.h ...

  6. 检测PC端和移动端的方法总结

    正在苦逼的实习中,昨天公司让做一个页面,涉及到检测终端的问题,如果是手机设备,就跳转到指定的网页上,以前写响应式布局只要用@media screen来实现布局的差异化适应,但是现在不仅仅是布局,还要针 ...

  7. [翻译][MVC 5 + EF 6] 12[完结]:高级场景

    原文:Advanced Entity Framework 6 Scenarios for an MVC 5 Web Application 1.执行原生SQL查询: EF Code First API ...

  8. jQuery 扩展 【ajax实例】

    先前写工具类都是自定义类,直接prototype,jQuery扩展这一块儿,一直也没写过,刚好今天有空,写个试试. 已经有很多人对jQuery,jQuery.fn,jQuery.fn.extend详细 ...

  9. preg_match_all, preg_match

    int preg_match(string $pattern, string $subject[, $arr][, int $flags]);$pattern 正则表达式$subject: 要搜索的字 ...

  10. memcached 在windows下安装及启动

    memcached 在windows下安装及启动   Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数, ...