nginx+fastcgi+c/cpp

参考:http://github.tiankonguse.com/blog/2015/01/19/cgi-nginx-three/

跟着做了一遍,然后根据记忆写的,不清楚有没错漏步骤,希望多多评论多多交流。。。

搭建环境

安装:nginx、spawn-fcgi、fastcgi、fcgiwrap

nginx

sudo apt-get install nginx-full

spawn-fcgi

git clone https://github.com/lighttpd/spawn-fcgi.git./autogen.sh./configuremake
sudo make install

fastcgi

安装fastcgi的时候报EOF错误可以在include/fcgio.h中包含头文件cstdio

wget http://www.fastcgi.com/dist/fcgi.tar.gz
tar -zxvf fcgi.tar.gz
./configure
make
sudo make install

fcgiwrap

git clone https://github.com/gnosek/fcgiwrap.git
./configure
make
sudo make install

配置环境

配置nginx

vim /etc/nginx/sites-enabled/default

整个文件改成这样

server {

    listen 80 ;
    server_name nextbin.com;

    location / {
        root /home/zebin/nginx/htdoc/;
        index index.html index.htm;
        try_files $uri $uri/ =404;
    }

    location ~ ^/cgi-bin/.*$ {
        #cgi path: /home/zebin/nginx/cgi-bin/
        root /home/zebin/nginx/;
        fastcgi_pass 127.0.0.1:9000;
        #configure path: /etc/nginx/fastcgi.conf
        #include fastcgi.conf;
        include fastcgi_params;
    } 

}

配置hosts

vim /etc/hosts

追加

127.0.0.1 nextbin.com

配置库文件链接

sudo ln -s /usr/local/lib/libfcgi.so.0.0.0 /usr/local/lib/libfcgi.so.0
sudo ln -s /usr/local/lib/libfcgi.so.0.0.0 /usr/lib/libfcgi.so.0
sudo ln -s /usr/local/lib/libfcgi.so.0.0.0 /usr/lib64/libfcgi.so.0

测试cgi

编写cgi程序编译后将可执行程序放在相应目录(如/home/zebin/nginx/cgi-bin/demo)

#include "fcgi_stdio.h"
#include <stdlib.h>

int main(int argc, char* argv[]){
    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"));
    }
    return 0;
}

demo.cpp

编译:g++ demo.cpp -lfcgi -o demo

加载fcgi-application

spawn-fcgi -p 9000 -C 10  -f  /usr/local/sbin/fcgiwrap

浏览器访问 nextbin.com/cgi-bin/demo 都成功

=========小结=========

一些用得上的命令

ps -aux | grep cgi
nginx -t
ln --help

折腾了一天终于搭建好了。之前只试过LNMP。

1. 还没用上数据库,有待补充

2. 对spawn-fcgi、fcgiwrap、fastcgi的关系不清晰,有待理解

3. 对信息传输交互没接触,有待构建

时间: 2024-08-06 09:28:29

nginx+fastcgi+c/cpp的相关文章

[转] Nginx + CGI/FastCGI + C/Cpp

接着上篇<Nginx安装与使用>,本篇介绍CGI/FASTCGI的原理.及如何使用C/C++编写简单的CGI/FastCGI,最后将CGI/FASTCGI部署到nginx.内容大纲如下: 1.     CGI 1.1.     环境变量 1.2.     标准输入 2.     FastCGI 3. nginx cgi/fastcgi 3.1. nginx + fastcgi 3.1.1. spawn-fcgi 3.1.2. 编写fastcgi应用程序 3.1.3. nginx fastcgi

Nginx + CGI/FastCGI + C/Cpp

http://www.cnblogs.com/skynet/p/4173450.html Nginx + CGI/FastCGI + C/Cpp 2014-12-19 11:05 by 吴秦, 19794 阅读, 6 评论, 收藏, 编辑 接着上篇<Nginx安装与使用>,本篇介绍CGI/FASTCGI的原理.及如何使用C/C++编写简单的CGI/FastCGI,最后将CGI/FASTCGI部署到nginx.内容大纲如下: 1.     CGI 1.1.     环境变量 1.2.     标

【入门篇】Nginx + FastCGI 程序(C/C++) 搭建高性能web service的Demo及部署发布

http://blog.csdn.net/allenlinrui/article/details/19419721 1.介绍 Nginx - 高性能web server,这个不用多说了,大家都知道. FastCGI程序 - 常驻型CGI程序,它是语言无关的.可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能. Nginx要调用FastCGI程序,需要用到FastCGI进程管理程序(因为nginx不能直接执行外部的cgi程序,我们可使用lighttpd中的s

Nginx + FastCGI 程序(C/C++)搭建高性能web service的demo

http://blog.csdn.net/chdhust/article/details/42645313 Nginx + FastCGI 程序(C/C++)搭建高性能web service的Demo 1.介绍 Nginx - 高性能web server,这个不用多说了,大家都知道. FastCGI程序 - 常驻型CGI程序,它是语言无关的.可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能. Nginx要调用FastCGI程序,需要用到FastCGI进程

Nginx FastCGI的运行原理

一.FastCGI 1.介绍 CGI全称通用网关接口 Commmon Gateway Interface 用于HTTP服务上的程序服务通信交流的一种工具,CGI程序须运行在网络服务器上. 传统CGI接口方式性能较差,由于每次HTTP服务器遇到动态程序需要重启解析器来执行解析,然后结果被返回给HTTP服务器.这在处理高并发时,几乎是不可能的,因此诞生了FastCGI.另外传统的CGI接口方式安全性也很差 一个可伸缩地.高速地在HTTP服务器和动态脚本语言间通信的接口 接口在linux下是socke

nginx FastCGI中的概念区分

之前总没有把FastCGI的概念理解的很清楚,看到一段话,感觉说的很清楚了. nginx是支持fastcgi的.然而我们需要下一个fastcgi进程管理器,启动它才能执行fastcgi程序.(这里有几个概念要搞清楚:nginx是nginx,fastcgi是fastcgi,前者支持后者,但是前者本身没有集成后者(/的功能).对于ngingx,我们要配置conf.nginx来设置如何支持fastcgi.而对于fastcgi,我们写的fastcgi程序需要一个调度者:fastcgi进程管理器. 其实也

Nginx+FastCGI+Django请求静态(css,js,img等)

之前写了一个简易的运维管理系统,奈何一直都是用的开发者模式启动django,现想用ngxin代理,参照<<The Django Book>>,上面提供了Apache+mod_python(mod_wsgi|FastCGI)等方式,而我选择了Nginx+FastCGI的方式(机器上本来就有nginx了,并且我平时用nginx也比较多). Django通过FastCGI启动的方式有如下几种: 在tcp端口上运行一个线程服务器: ./manage.py runfcgi method=th

nginx fastcgi php-fpm的关系梳理

CGI(Common Gateway Interface)CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上.CGI可以用任何一种语言编写,只要这种语言具有标准输入.输出和环境变量.如php,perl,tcl等. FastCGIFastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fo

Nginx+FastCGI运行原理

转自  http://book.51cto.com/art/201202/314840.htm Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用.FastCGI接口在Linux下是socket(这个socket可以是文件socket,也可以是ip socket).为了调用CGI程序,还需要一个FastCGI的wrapper(wrapper可以理解为用于启动另一个程序的程序),这个wrapper绑定在某个固定socket上,如端口或者文件s