FastCGI与PHP,FastCGIPHP


什么是CGI

CGI全称"通用网关接口"(Common Gateway Interface),用于HTTP服务器与其它机器上的程序服务通信交流的一种工具,CGI程序须运行在网络服务器上。

传统CGI接口方式的主要缺点是性能较差,因为每次HTTP服务器遇到动态程序时都需要重启解析器来执行解析,然后结果被返回给HTTP服务器。这在处理高并发访问几乎是不可用的,因此就诞生了FastCGI。另外传统的CGI接口方式安全性也很差。

什么是FastCGI

FastCGI是一个可伸缩地、高速地在HTTP服务器和动态脚本语言间通信的接口(FastCGI接口在Linux下是socket(可以是文件socket,也可以是ip socket)),主要优点是把动态语言和HTTP服务器分离开来。多数流行的HTTP服务器都支持FastCGI,包括Apache、Nginx和lightpd。

同时,FastCGI也被许多脚本语言所支持,比较流行的脚本语言之一为PHP。FastCGI接口方式采用C/S架构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或多个脚本解析守护进程。当HTTP服务器每次遇到动态程序时,可以将其直接交付给FastCGI进程执行,然后将得到的结构返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。

FastCGI的重要特点:

1、FastCGI是HTTP服务器和动态脚本语言间通信的接口或者工具。

2、FastCGI优点是把动态语言解析和HTTP服务器分离开来。

3、Nginx、Apache、Lighttpd以及多数动态语言都支持FastCGI。

4、FastCGI接口方式采用C/S架构,分为客户端(HTTP服务器)和服务端(动态语言解析服务器)。

5、PHP动态语言服务端可以启动多个FastCGI的守护进程。

6、HTTP服务器通过FastCGI客户端和动态语言FastCGI服务端通信。

Nginx FastCGI的运行原理

Nginx不支持对外部动态程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。FastCGI接口在Linux下是socket(可以是文件socket,也可以是ip socket)。为了调用CGI程序,还需要一个FastCGI的wrapper,这个wrapper绑定在某个固定socket上,如端口或者文件socket。当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,wrapper接收到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通过FastCGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据发送给客户端,这就是Nginx+FastCGI的整个运作过程。

FastCGI的主要优点是把动态语言和HTTP服务器分离开来,是Nginx专一处理静态请求和向后转发动态请求,而PHP/PHP-FPM服务器专一解析PHP动态请求。

检查安装PHP所需lib库

php程序在开发及运行时会调用一些zlib、gb 函数库,因此需要安装下面的库。

安装yum无法安装的libiconv库

安装libmcrypt库

快速安装方法:

安装epel源

安装PHP依赖包

安装libicov

同上。

安装libmcrypt

安装mhash加密扩展库

Mhash是基于离散数学原理的不可逆向的php加密方式扩展库,其在默认情况下不开启。mhash可以用于创建校验数值、消息摘要、消息认证码,以及无需原文的关键信息保持(如密码)等。

安装mcrypt加密扩展库

PHP程序员在编写代码程序时,除了要保证代码的高性能之外,还有一点是非常重要的,那就是程序的安全性保障。PHP除了自带的几种加密函数外,还有功能更全面的PHP加密扩展库mcrypt和mhash。

安装PHP

lnmp服务器

编译安装

 

cannot find –lltdl解决办法,需要安装libltdl。

重新回到PHP的安装目录下进行查询编译PHP。

创建软连接

mysql服务器

编译安装

 

创建软连接

配置PHP引擎配置文件php.ini

配置PHP服务(FastCGI模式)配置文件php-fpm.conf

指定pid路径:pid = /app/logs/php-fpm.pid

进程管理的错误日志路径:error_log = /app/logs/php-fpm.log

错误日志级别:log_level = error

主进程文件描述符:rlimit_files = 32768

模型:events.mechanism = epoll

用户和组:

listen.owner = nginx

listen.group = nginx

最大进程数:pm.max_children = 1024

开始启动进程数:pm.start_servers = 16

最小空闲进程数:pm.min_spare_servers = 5

最大空闲进程数:pm.max_spare_servers = 20

超时时间:pm.process_idle_timeout = 15s;

每个进程最大请求:pm.max_requests = 2048

慢查询:slowlog = /app/logs/$pool.log.slow

超时时间:request_slowlog_timeout = 10

邮箱地址:php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f xxxxxxx@xxx.com

启动PHP

查看端口

配置PHP与Nginx

浏览器访问

配置PHP与MySQL

部署一个BLOG程序服务

https://cn.wordpress.org/

WordPress是一套利用PHP语言和MySQL数据库开发的开源免费的Blog(博客、网站)程序,用户可以在支持PHP环境和MySQL数据库的服务器上建立Blog站点。

WordPress是一个功能非常强大的博客系统,插件众多,易于扩展功能。安装和使用都非常方便。目前WordPress已经成为主流的Blog搭建平台,很多发布平台也是根据WordPress二次开发的。

创建一个专用的数据库WordPress用于存放blog数据。

创建一个管理的数据库WordPress的用户wordpress。

部署WordPress

权限设置

默认目录权限:dir 755 root root

默认文件权限:file 644 root root

用户目录权限:dir nginx nginx 755

用户文件权限:file nginx nginx 644

浏览器访问http://blog.etiantian.org/index.php

根据提示创建wp-config.php,然后点击"进行安装"。

数据库中查看安装结果

 

相关内容

    暂无相关文章