Mac下基于c++和spawn-fcgi开发nginx后台fastcgi应用程序

1,目的

在做后台开发的时候一直使用的语言就是go java js python。由于框架不多,很少有人尝试采用c++进行web后台开发。基于此,本文尝试在mac平台下采用c++开发nginx的fastcgi addon。

2,原理

nginx作为代理服务器,在nginx.conf配置文件的http块下的server子块中,添加一条新的location,将请求连接转移到后台进程中进行处理。

3,具体实施步骤

3.1 安装nginx

brew search nginx
brew install nginx

nginx安装之后的路径如下:

/usr/local/Cellar/nginx/nginx-version/bin 存放的是nginx的可执行文件
/usr/local/etc/nginx 存放的是nginx的配置文件,其中nginx.conf就在这个路径下

修改nginx.conf文件后,需要重新加载配置文件,命令为:

nginx -s reload
如果上述命令不行,可以重新启动nginx,命令如下:
nginx -s stop
nginx

3.2 安装fastcgi进程管理器spawn-fcgi。由于spawn-fcgi是作为lighttpd的一个分支发展出来的,所以要先安装lighttpd

brew search lighttpd
brew install lighttpd
brew search spawn-fcgi
bres install spawn-fcgi

3.3 安装fastcgi软件开发套件fcgi

考虑到很多同学都不能翻墙,再加上csdn下载收金币,现将下载地址放出:

链接:https://pan.baidu.com/s/1BlmtCFBq1uIWk23CT6y7Hw  密码:g74j

下载完成之后进行安装,安装命令如下:

./configure
make
make install

3.4 编写网络消息处理程序

#include <fcgi_stdio.h>
int main( int argc, char *argv[] )
{
    while( FCGI_Accept() >= 0 )
    {
        FCGI_printf( "Status: 200 OK\r\n" );
        FCGI_printf( "Content-Type: text/html\r\n\r\n" );
        FCGI_printf( "Hello, World\n" );
    }
    return 0;
}

该段代码的意思是当接收到浏览器请求时,回复Hello, World至浏览器。

采用如下命令进行编译、链接

g++ main.cpp -o helloworld -lfcgi

输出文件可以随便命名,本文命名为helloworld。

3.5 修改nginx.conf文件

在http->server中添加如下location

        location = /demo.cgi
        {
                fastcgi_pass 127.0.0.1:8081;
                fastcgi_index index.cgi;
                include fastcgi.conf;
        }

上述location的意思是所有到达/demo.cgi的请求都转移至运行在127.0.0.1:8081地址的程序中。

修改完毕后,重新加载配置文件,或者重启nginx

3.6 运行fastcgi进程

spawn-fcgi -a 127.0.0.1 -p 8081 -f path-to-helloworld/helloworld

3.7 浏览器中输入 本机ip:8080/demo,即可浏览器中显示“Hello, World”

ps:

1,通过ifconfig得到本机ip

2,输入localhost/demo会提示无法访问此网站,因为cgi程序不能使用环回地址,需要使用的是本机ip

3,运行在8081端口的程序可以随便命名,不必与浏览器输入、nginx.confg中配置保持一致

4,浏览器输入必须与nginx.config中配置的http->server中内容保持一致,要不然无法转发的相应后台程序,此时提示无法访问此网站

猜你喜欢

转载自blog.csdn.net/jigetage/article/details/84715692