在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 保存退出即可
五. 安装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
相关推荐
《FastCGI++:C++实现的FastCGI与Web开发框架详解》 FastCGI++,又称为fastcgipp,是一个基于C++语言的FastCGI开发库,旨在为Web开发者提供一个高效、灵活的框架,用于构建高性能的Web应用程序。FastCGI是一种通信...
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 2.6+内核。在开始之前,你需要拥有超级用户权限,可以通过`sudo -s LANG=C`命令获取。接下来,我们将使用`yum`命令来安装和升级必要的程序库: 1. 对于CentOS系统,...
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技术广泛支持多种编程语言,包括但不限于C/C++、Java、Perl、Tcl、Python、SmallTalk、Ruby等。同时,大多数主流Web服务器都提供了FastCGI的支持,例如Apache、IIS、Pi3Web、Zeus等。 #### 五、Apache服务器...
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...
在安装过程中,可能会需要编译依赖的库和模块,如gcc、gcc-c++、zlib等。具体的编译安装指令涉及到命令行操作,需要一定的Linux操作技能。 在配置Nginx时,我们主要关注如何将PHP动态请求通过fastcgi传递给Apache...
mod_fcgid已在Windows和Linux上测试通过,而mod_fastcgi适用于Linux环境。这两个模块的配置文档分别位于它们的官方文档中。 - **FastCGI优势**:FastCGI支持分布式计算,允许应用程序运行在不同服务器上,同时减少...
在Linux环境中搭建一个高效稳定的LAMP(Linux、Nginx、Apache、PHP、MySQL)架构是许多开发者和系统管理员的基本技能。本指南将详细介绍如何在Red Hat Linux上配置Linux、Nginx、PHP和MySQL环境。 一、安装Red Hat ...
为了在Apache上运行PHP程序,需要进行一系列的配置步骤。以下是详细的Linux下Apache支持PHP配置的过程: 首先,确保系统已经安装了Apache。在大多数Linux发行版中,你可以使用包管理器来安装Apache。对于基于Red ...
这个环境是许多网站和应用程序的基础,尤其是那些基于LAMP(Linux、Apache、MySQL、PHP)架构但需要在Windows服务器上运行的场景。 首先,我们需要明确一下环境的配置: - 操作系统:Windows Server 2012 R2 - PHP ...
标题 "C++ Linux WebServer服务器.zip" 暗示了一个使用C++编程语言在Linux操作系统上构建的Web服务器项目。这个压缩包可能包含了实现Web服务器所需的所有源代码、配置文件和其他相关资源。以下是对这个主题的详细...
Linux下nginx的安装及配置负载均衡 Linux下nginx的安装及配置负载均衡是指在Linux操作系统中安装和配置nginx服务器,以实现负载均衡的功能。nginx是一款轻量级的Web服务器软件,支持反向代理、负载均衡、缓存等功能...
在Linux环境下,这些外部程序通常是用C、C++等语言编译成ELF格式的二进制可执行文件。 2. "ELF"乱码原因: 当Apache看到CGI文件时,如果它不正确地配置为以CGI方式处理该文件,而是直接尝试将其作为文本内容发送到...
2. **源码文件**:C/C++ 代码,实现 mod_mono 的核心功能。 3. **头文件**:接口定义和公共函数声明,供其他模块使用。 4. **示例和测试**:可能包含一些示例 ASP.NET 应用程序或者测试用例,用于验证 mod_mono 的...
2. **Traits**:这是一种代码重用机制,类似于Java的接口或C++的混入类,可以解决单一继承的限制。 3. **短数组语法**:使用`[]`代替`array()`创建数组,使得代码更加简洁。 4. **新函数**:包括`array_column()`,...
- **作用**:GCC是GNU编译器集合的一部分,包括C和C++语言的编译器。 - **示例**: ```bash yum install gcc-c++ ``` - **安装pcre** - **命令**:`yum install -y pcre pcre-devel` - **作用**:Perl ...
1. **GCC**(GNU Compiler Collection):用于编译C和C++代码。 2. **Make**:构建工具,用于管理项目构建过程。 3. **Autoconf** 和 **Automake**:自动化配置工具,帮助处理源代码的编译和安装步骤。 4. **Libtool...