1.http解释
在使用fastCGI之前需要先了解什么是http,以及静态请求和动态请求。
1.什么是http
HTTP是超文本传输协议,它定义了客户端和服务器端之间文本传输的规范。HTTP通常运行在TCP之上,使用80端口。HTTP是一种简单的请求-响应协议,客户端向服务器发送请求,服务器返回相应的文件或数据作为应答。HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。HTTP是一种面向对象的协议,允许传送任意类型的数据对象。
2.静态请求和动态请求
静态请求和动态请求是指客户端向服务器请求的资源类型不同。
静态请求是指请求的资源是固定的,不需要后台程序处理,如html、css、js、图片等文件。
动态请求是指请求的资源是根据用户的不同需求而动态生成的,需要后台程序处理,如php、jsp、asp等文件。
静态请求和动态请求的区别在于:
静态请求的响应速度快,动态请求的响应速度慢。
静态请求的交互性差,动态请求的交互性好。
静态请求的内容存在于页面上,动态请求的内容存在于数据库中。
静态请求的网址一般以.html结尾,动态请求的网址一般带有?或&符号。
3.请求头和响应头
请求头和响应头是HTTP消息中的一部分,用于在请求和响应中传递附加信息。
请求头是客户端向服务器发送的标头,包含有关请求、客户端或请求资源的信息。
响应头是服务器向客户端发送的标头,包含有关响应、服务器或响应资源的信息。
请求头和响应头都由标头名称和标头值组成,中间用冒号分隔,如Content-Type: text/html。不同的标头有不同的作用,例如:
Allow:标头表示服务器支持哪些请求方法(如GET、POST等)。
Content:Type 标头表示响应的内容类型(如text/html、image/jpeg等)。
Location:标头表示客户端应该重定向到哪个URL。
Cookie 标头表示客户端发送给服务器的Cookie。
Set-Cookie 标头表示服务器发送给客户端的Cookie。
2.fastCGI
概念:快速通用网关接口,FastCGI是一种二进制协议,用于将交互式程序与web服务器接口连接。它是早期的通用网关接口(CGI)的变体之一。FastCGI主要的目的是减少与web服务器和CGI程序接口相关的开销,使服务器能够处理更多的网页请求。在Internet Information Services7中包括了FastCGI组件,它提供了更高的可靠性和更好的性能,并允许您在IIS 7上运行PHP应用程序框架以及其他Web应用程序框架。(本质上就是把服务器处理不了的请求处理,并且转发给客户端)
作用:
1. 减少进程启动时间:由于CGI在每个请求时都需要启动新的进程,在高并发的情况下,进程的启动时间将成为性能瓶颈。FastCGI通过保持应用程序进程的状态来避免这种情况。
2. 改善资源利用率:由于FastCGI可以使用工作进程或线程来处理请求,因此它可以更有效地利用系统资源,从而提高系统的性能。
3. 提高服务器负载能力:由于FastCGI所需的系统资源较少,一个Web服务器可以处理更多的客户端请求。
4. 支持多种编程语言:FastCGI是一种通用的协议,它可以支持多种编程语言,包括PHP、Perl、Python等。
5. 提供更好的安全性和可靠性:FastCGI可以通过SSL协议进行数据加密,从而提高Web应用程序的安全性;同时,FastCGI提供了可靠的错误处理,防止应用程序出现严重问题时无法正常工作。
6. 提供更好的安全性和可靠性:FastCGI可以通过SSL协议进行数据加密,从而提高Web应用程序的安全性;同时,FastCGI提供了可靠的错误处理,防止应用程序出现严重问题时无法正常工作。
FastCGI的工作流程如下:
1. Web服务器启动FastCGI主进程,该进程会等待Web服务器的请求。
2. 当有请求到达Web服务器时,Web服务器将该请求采用socket方式转发给FastCGI主进程。
3. FastCGI主进程选择并连接到一个CGI解释器(关联FastCGI子进程),然后将CGI环境变量和标准输入发送到FastCGI子进程中。
4. FastCGI子进程执行具体的CGI程序,并将CGI程序产生的输出返回给FastCGI主进程。
5. FastCGI主进程将CGI程序的输出发送回Web服务器。
6. Web服务器将FastCGI返回的HTML结果返回给客户端。
1.工具下载
fastCGI安装包下载网址:这里
spawn-fcgi安装包下载:这里
2.安装
在这里使用了 fcgi-2.4.1-SNAP-0910052249.tar.gz以及spawn-fcgi-1.6.4.tar.gz 这两个包
使用命令解压安装
解压
tar -zxvf fcgi-2.4.1-SNAP-0910052249.tar.gz
tar -zxvf spawn-fcgi-1.6.4.tar.gz
进入到解压出来的文件夹安装
1.make
2.sudo make install
3.fastcgi的使用
1.部署静态网页
网页可以在网上下载,并且安装我之前发布的文章部署,可参考这篇文章
2.部署nginx配置
在这里fastcgi是处理nginx服务器处理不了的请求,需要在nginx配置文件中增加一些内容
location /Myupload #/Myupload这里需要和客户端提交的处理指令一致
{
fastcgi_pass 127.0.0.1:10000; #指定转发的服务器IP以及端口
include fastcgi.conf #表示添加的启动配置文件
}
3.启动fastcgi程序
在这里需要编写一个fastcgi的程序,这里fastcgi的软件包提供了一个测试程序,进入到上面解压出来的目录,如图,在examples目录中有echo.c程序,这是一个测试程序
编译该程序命令
gcc echo.c -o app -lfascgi
使用 ldd app 命令可以查看是否找到了所有的动态库
如果没有找到需要的动态库可以进入到 usr/local/lib 目录下查看是否存在
启动该程序命令
# 命令
spawn-fcgi -a 需要和nginx.conf配置的ip地址一致 -p 需要和nginx.conf配置的端口号一致 -f 可执行程序
# 样例
spawn-fcgi -a 127.0.0.1 -p 10000 -f ./app
如果出现下面的提示,表示启动成功
客户端(即浏览器)发送来的处理请求可以在日志目录logs中的错误日志文档查看