`
tcspecial
  • 浏览: 906622 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Linux apache + fastcgi 运行c/c++

阅读更多

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

 

一. apache 安装

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

wget http://mirrors.cnnic.cn/apache//httpd/httpd-2.2.27.tar.bz2
tar -xjzf httpd-2.2.27.tar.bz2
cd httpd-2.2.27
./configure --prefix=/usr/local/apache2
make && make install

 

  二. apache 配置

<Directory "/usr/local/apache2/cgi-bin">
    AllowOverride None
    Options Indexes ExecCGI  # 执行CGI
    Order allow,deny
    Allow 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.gz
tar -xzvf mod_fastcgi-2.4.6.tar.gz
cd mod_fastcgi-2.4.6
cp Makefile.AP2 Makefile
make top_dir=/usr/local/apache2
make top_dir=/usr/local/apache install

    

    编辑httpd.conf, 加入fastcgi模块

LoadModule fastcgi_module modules/mod_fastcgi.so
  
<IfModule fastcgi_module>
     AddHandler fastcgi-script .fcgi .py .pl
</IfModule>

 

四. 测试运行

     下载安装 jnopy , fastcgi的python模块

      cd jonpy-2.2.27

      python setup.py install

   

#!/usr/bin/python
import jon.cgi as cgi
import jon.fcgi as fcgi

class 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 保存退出即可

 

    python with fastcgi

 

  五. 安装fastcgi开发库

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

      5.1 安装fastcgi开发库

wget http://www.fastcgi.com/dist/fcgi.tar.gz
cd fcgi-2.4.1
./configure
make 
make 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

  

   fast cgi

 

 

 

 

  • 大小: 13.6 KB
  • 大小: 15.8 KB
分享到:
评论

相关推荐

    fastcgipp:fastcgi ++:一个C ++ FastCGI和Web开发平台:

    《FastCGI++:C++实现的FastCGI与Web开发框架详解》 FastCGI++,又称为fastcgipp,是一个基于C++语言的FastCGI开发库,旨在为Web开发者提供一个高效、灵活的框架,用于构建高性能的Web应用程序。FastCGI是一种通信...

    Linux下mysql+php+apache环境的搭建借鉴.pdf

    sudo -s LANG=C yum -y install gcc gcc-c++ cmake autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ...

    Linux下mysql+php+apache环境的搭建.pdf

    首先,确保你的系统满足最低要求,即运行Linux 2.6+内核。在开始之前,你需要拥有超级用户权限,可以通过`sudo -s LANG=C`命令获取。接下来,我们将使用`yum`命令来安装和升级必要的程序库: 1. 对于CentOS系统,...

    Linux下mysql+php+apache环境的搭建归类.pdf

    sudo -s LANG=C yum -y install gcc gcc-c++ cmake autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ...

    FastCGI手册

    FastCGI技术广泛支持多种编程语言,包括但不限于C/C++、Java、Perl、Tcl、Python、SmallTalk、Ruby等。同时,大多数主流Web服务器都提供了FastCGI的支持,例如Apache、IIS、Pi3Web、Zeus等。 #### 五、Apache服务器...

    Linux安装nginx/mysql/php/zabbix

    yum -y install wget openssl* gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip...

    我的CGI框架,基于apache的

    mod_fcgid已在Windows和Linux上测试通过,而mod_fastcgi适用于Linux环境。这两个模块的配置文档分别位于它们的官方文档中。 - **FastCGI优势**:FastCGI支持分布式计算,允许应用程序运行在不同服务器上,同时减少...

    linux+nginx+php+mysql环境配置指南.pdf

    在Linux环境中搭建一个高效稳定的LAMP(Linux、Nginx、Apache、PHP、MySQL)架构是许多开发者和系统管理员的基本技能。本指南将详细介绍如何在Red Hat Linux上配置Linux、Nginx、PHP和MySQL环境。 一、安装Red Hat ...

    Linux下apache支持PHP配置文件的方法

    为了在Apache上运行PHP程序,需要进行一系列的配置步骤。以下是详细的Linux下Apache支持PHP配置的过程: 首先,确保系统已经安装了Apache。在大多数Linux发行版中,你可以使用包管理器来安装Apache。对于基于Red ...

    windows2012安装iis8.5+php(FastCGI)+MySQL环境搭建教程

    这个环境是许多网站和应用程序的基础,尤其是那些基于LAMP(Linux、Apache、MySQL、PHP)架构但需要在Windows服务器上运行的场景。 首先,我们需要明确一下环境的配置: - 操作系统:Windows Server 2012 R2 - PHP ...

    C++ Linux WebServer服务器.zip

    标题 "C++ Linux WebServer服务器.zip" 暗示了一个使用C++编程语言在Linux操作系统上构建的Web服务器项目。这个压缩包可能包含了实现Web服务器所需的所有源代码、配置文件和其他相关资源。以下是对这个主题的详细...

    Linux下nginx的安装及配置负载均衡

    Linux下nginx的安装及配置负载均衡 Linux下nginx的安装及配置负载均衡是指在Linux操作系统中安装和配置nginx服务器,以实现负载均衡的功能。nginx是一款轻量级的Web服务器软件,支持反向代理、负载均衡、缓存等功能...

    apache访问cgi文件时,显示的内容是以ELF开头的乱码文字,如何解决.zip

    在Linux环境下,这些外部程序通常是用C、C++等语言编译成ELF格式的二进制可执行文件。 2. "ELF"乱码原因: 当Apache看到CGI文件时,如果它不正确地配置为以CGI方式处理该文件,而是直接尝试将其作为文本内容发送到...

    mod-mono-master

    2. **源码文件**:C/C++ 代码,实现 mod_mono 的核心功能。 3. **头文件**:接口定义和公共函数声明,供其他模块使用。 4. **示例和测试**:可能包含一些示例 ASP.NET 应用程序或者测试用例,用于验证 mod_mono 的...

    php安装包(for linux)

    2. **Traits**:这是一种代码重用机制,类似于Java的接口或C++的混入类,可以解决单一继承的限制。 3. **短数组语法**:使用`[]`代替`array()`创建数组,使得代码更加简洁。 4. **新函数**:包括`array_column()`,...

    linux服务器常用操作

    - **作用**:GCC是GNU编译器集合的一部分,包括C和C++语言的编译器。 - **示例**: ```bash yum install gcc-c++ ``` - **安装pcre** - **命令**:`yum install -y pcre pcre-devel` - **作用**:Perl ...

    php-src-master

    1. **GCC**(GNU Compiler Collection):用于编译C和C++代码。 2. **Make**:构建工具,用于管理项目构建过程。 3. **Autoconf** 和 **Automake**:自动化配置工具,帮助处理源代码的编译和安装步骤。 4. **Libtool...

Global site tag (gtag.js) - Google Analytics