Linux平台FastCGI安装及使用

fastCGI和spawn-fcgi安装

本文编写时候的测试平台:腾讯云轻量应用服务器
操作系统:ubuntu18.4

安装fastCGI

./configure
make

  • fcgio.cpp:50:14: error: ‘EOF’ was not declared in this scope
  • 没有包含对应的头文件:
  • stdio.h - c
  • cstdio -> c++
    find ./ -name fcgio.cpp
    sudo vim fcgio.cpp
    sudo make install

安装spawn-fcgi

spawn-fcgi是一个通用的FastCGI进程管理器

下载地址: http://redmine.lighttpd.net/projects/spawn-fcgi/wiki
./configure
make
sudo make install

nginx 和 fastCGI的通信流程

http://localhost/login?user=zhang3&passwd=123456&age=12&sex=man

  1. 客户端访问, 发送请求,如上诉url
  2. nginx web服务器, 无法处理用户提交的数据
  3. spawn-fcgi - 通信过程中的服务器角色
    被动接收数据
    在spawn-fcgi启动的时候给其绑定IP和端口
  4. fastCGI程序
    程序猿写的 -> login.c -> 可执行程序( login )
    使用 spawn-fcgi 进程管理器启动 login 程序, 得到一进程

1.配置Nginx的数据转发,需要修改nginx的配置文件nginx.conf
通过请求的url http://localhost/login?user=zhang3&passwd=123456&age=12&sex=man 转换为一个
指令:

  • 去掉协议

  • 去掉域名/IP + 端口

  • 如果尾部有文件名 去掉

  • 去掉 ? + 后边的字符串

  • 剩下的就是服务器要处理的指令: /login

    location /login
    {
    	# 转发这个数据, fastCGI进程
    	fastcgi_pass 地址信息:端口;
    	# fastcgi.conf 和nginx.conf在同一级目录: /usr/local/nginx/conf
    	# 这个文件中定义了一些http通信的时候用到环境变量, nginx赋值的,从中可以获取到本次通信的http请求数据
    	include fastcgi.conf;
    }
    
  • 地址信息:

  • localhost

  • 127.0.0.1

  • 端口: 找一个空闲的没有被占用的端口即可

spawn-fcgi如何启动

前提条件: 程序猿的fastCGI程序已经编写完毕 -> 可执行文件 login

spawn-fcgi -a IP地址 -p 端口 -f fastcgi可执行程序
  • IP地址: 应该和nginx的 fastcgi_pass 配置项对应
    • nginx: localhost -> IP: 127.0.0.1
    • nginx: 127.0.0.1 -> IP: 127.0.0.1
    • nginx: 192.168.1.100 -> IP: 192.168.1.100
  • 端口:
    应该和nginx的 fastcgi_pass 中的端口一致

编写fastCGI程序的思路

首先spawn-fcgi和程序员的cgi程序的关系是父子进程
然后spawn-fcgi重定向了程序员的CGI程序的标准输出和输入
dup2(fd,stdin_fileno);
dup2(fd,stdout_fileno);
这种方式可以隐藏通信的细节.

常用的fastCGI环境变量

QUERY_STRING 请求的参数;如?app=123
REQUEST_METHOD 请求的动作(GET,POST)
CONTENT_TYPE 请求头中的Content-Type字段
CONTENT_LENGTH 请求头中的Content-length字段

使用get和post提交数据的区别

使用get提交

数据会出现在QUERY_STRING中
REQUEST_METHOD = GET
CONTENT_TYPE 空
CONTENT_LENGTH 空

使用post提交数据

数据出现在提交的数据中
QUERY_STRING 空
REQUEST_METHOD = POST
CONTENT_TYPE 上传数据的格式.取决于文件的后缀名字
CONTENT_LENGTH 提交数据的长度

POST有常用的4种上传数据的格式
1.application/x-www-form-urlencoded
2.application/json
3.text/xml
4.multipart/form-data

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值