博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ubuntu安装Nginx和fast-cgi( spawn-fcgi )以及第一个cgi程序
阅读量:3949 次
发布时间:2019-05-24

本文共 1980 字,大约阅读时间需要 6 分钟。

目录

Nginx是一个高性能web服务器,但是由于它不能直接调用cgi程序,所以需要cgi管理进程的帮助,使用反向代理,将客户端的请求转发给固定的ip与端口,通过cgi管理进程监听端口后,就可以实现使用Nginx服务器来处理cgi程序。
现在的网页后台交互cgi大多采用PHP语言编写,配合php-fpm来使用。但是如果想用C/C++完成一个cgi呢?作为编程语言的元老,C/C++自然是可以完成这项任务的,但需要的不是php-fpm,而是使用spawn-fcgi来实现。
spawn-fcgi是实现cgi的主要程序,由于Nginx不能处理动态请求,于是将动态请求转发给spawn-fcgi处理。
但是spawn-fcgi处理的是fast-cgi,这跟cgi有啥区别呢?他们是一个东西么?

cgi

首先了解cgi是何物,他的官方名称是公共网关接口(Common Gateway Interface,CGI)。按CGI 编写的程序可以扩展服务器功能。CGI 应用程序能与浏览器进行交互,还可通过数据API与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。

说人话就是可以配合前端的请求来实现与服务器的交互比如:数据库操作等。
每一次请求调用cgi时,都打开一个cgi进程,这样会浪费大量的创建、回收资源的时间与资源。访问少也就算了,一旦遇到一定规模的请求时,服务器简直想直接宕机,给它个痛快。

fast-cgi

由于每次请求cgi时都要创建进程,我直接给你开个进程或一堆进程,等你请求我就处理不就可以了?所以fast-cgi诞生了。他可以有效减少由于进程直接创建与销毁之间的资源浪费问题。

安装Nginx

使用ubuntu通过apt 默认安装

sudo apt install nginx -y

安装spawn-fcgi

使用ubuntu通过apt 默认安装

sudo apt install spawn-fcgi

fcgi开发环境

使用fcgi-2.4.1来开发,需要自行下载

解压之后,三板斧!

./configure

如果make出错需要在/include/fcgio.h文件中加一句#include

make
sudo make install

下面这几句分别执行。

如果/usr/目录下没有lib64,只有lib32,就将lib64改为lib32

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

配置Nginx

如果你使用默认配置,打开/etc/nginx/nginx.conf 在http{ }里添加如下代码

IP地址改成ubuntu的IP

server {
listen 80; # 访问的域名或IP地址 server_name 192.168.2.136; location /test{
#配置fastcgi模块 fastcgi_pass 127.0.0.1:9001; include fastcgi.conf; } }

编写fast-cgi程序

#include "fcgi_stdio.h"#include 
int main(){
while(FCGI_Accept() >= 0){
printf("Content-type: text/html\r\n""\r\n""""FastCGI Hello!");}return 0;}

编译

gcc test.c -o test.cgi -lfcgi

配置spawn-fcgi

sudo spawn-fcgi -a 127.0.0.1 -p 9001 -f ./test.cgi

成功返回进程pid

打开Nginx

启动并使用配置文件(默认位置)

sudo nginx -c /etc/nginx/nginx.conf

试试

在浏览器打开

http://192.168.2.136/test

在这里插入图片描述

转载地址:http://puewi.baihongyu.com/

你可能感兴趣的文章
GPS数据解析
查看>>
The top 6 programming languages for IoT projects
查看>>
67 open source tools and resources for IoT
查看>>
蓝牙低功耗(BLE)应用领域
查看>>
nRF51822低功耗睡眠函数应用
查看>>
Android 语言码_国家码
查看>>
从iphone和android应用来看公司
查看>>
android 修改代码怎样编译
查看>>
领导者如何增强说服力
查看>>
比金钱更好的十样东西
查看>>
凡事必定不少于三个以上的解决方法
查看>>
带团队的点滴心经
查看>>
五种力量让你如虎添翼
查看>>
你害怕创新吗
查看>>
创新服务的七要素
查看>>
虚伪的奉承也有效
查看>>
蒂姆·库克的五项核心领导力
查看>>
你为何没有成为领导者
查看>>
一切悲剧都源于不当激励
查看>>
别把用户的高期望混同于好体验
查看>>