LNMP架构三(php-fpm的安装)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sj349781478/article/details/84879828

三、PHP的安装

     nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。
     nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被nginx。

php-fpm工作流程

php-fpm全名是PHP FastCGI进程管理器

php-fpm启动后会先读php.ini,然后再读相应的conf配置文件,conf配置可以覆盖php.ini的配置。

启动php-fpm之后,会创建一个master进程,监听9000端口(可配置),master进程又会根据www.conf去创建若干子进程,子进程用于处理实际的业务。

当有客户端(比如nginx)来连接9000端口时,空闲子进程会自己去accept,如果子进程全部处于忙碌状态,新进的待accept的连接会被master放进队列里,等待fpm子进程空闲;

这个存放待accept的半连接的队列有多长,由 listen.backlog 配置。

1、安装前准备

yum -y install gcc automake autoconf libtool make libicu-devel  mysql-devel

yum -y install gcc gcc-c++ glibc  curl curl-devel  openssl* freetype-devel

yum -y install libmcrypt-devel mhash-devel libxslt-devel  libjpeg-devel  libpng libpng-devel

yum -y install  bzip2 bzip2-devel  openldap openldap-devel

cp -frp /usr/lib64/libldap* /usr/lib/

2、下载安装php,这里安装5.6版本的php

[root@Global src]#wget http://cn2.php.net/distributions/php-5.6.34.tar.gz

[root@Global src]#tar zvxf php-5.6.34.tar.gz

[root@Global src]#cd php-5.6.34

[root@Global src]#./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc  --enable-fpm  --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir  --with-bz2 --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 --with-curl --enable-bcmath --enable-sockets --with-iconv-dir=/usr/local --enable-xml --enable-dom  --enable-calendar --with-gettext --with-pdo-mysql=/usr/local/mysql --disable-fileinfo --with-ldap=shared

#make

#make test

#make install

PEAR是PHP扩展与应用库(the PHP Extension and Application Repository)的缩写。它是一个PHP扩展及应用的一个代码仓库。

3、配置环境变量

#vi /etc/profile

export PATH=$PATH:/usr/local/php-fpm/bin:$PATH

4、执行命令使得改动立即生效

# source /etc/profile

5、配置php-fpm

cp /usr/local/src/php-5.6.34/php.ini-production   /usr/local/php-fpm/etc/php.ini

php.ini 文件是php.ini是php运行核心配置文件,PHP 在启动时自动读取的配置文件,它是一个ASCLL 文本文件,分为多个部分,每一部分包括相关的参数。

php.ini 是PHP 的配置文件,用于加载各种函数库、设置错误级别和设置服务器的时间等。

cp /usr/local/php-fpm/etc/php-fpm.conf.default /usr/local/php-fpm/etc/php-fpm.conf

php-fpm.conf是php-fpm进程服务的配置文件
cp /usr/local/src/php-5.6.34/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod 755  /etc/init.d/php-fpm
 

6、启动php-fpm

fpm测试php配置  /usr/local/php-fpm/sbin/php-fpm -t

/etc/init.d/php-fpm start

放在最后:

先说说web服务器,php是为web而生的一门后端语言。那么它就必须借助于web服务器,才能提供web功能。当然其他的后端语言如果做web应用,也必须借助于web服务器。好,由php引出了web服务器。

那么常见的web服务器有哪些呢?

  • apache
  • nginx
  • IIS
  • lighttpd
  • tomcat

上面几种,与php相关联起来用的最多的就是Apache和Nginx了。

我们先举例用apache当作web服务器,来说明一次完整的php访问的情况: 

mod_php模式

本质是用LoadModule来加载php5_module,就是把php作为apache的一个子模块来运行。当通过web访问php文件时,apache就会调用php5_module来解析php代码。那么php5_module是怎么来将数据传给php解析器来解析php代码的呢?答案是通过sapi

所以,以上的apache调用php执行的过程如下:

apache -> httpd -> php5_module -> sapi -> php

mod_fastcgi模式

php的sapi的另一种方式就是提供cgi模式,由于cgi比较老所以就出现了fastcgi来取代它。

简单的说,就是:cgi就是专门用来和web 服务器打交道的。web服务器收到用户请求,就会把请求提交给cgi程序(php的fastcgi),cgi程序根据请求提交的参数作应处理(解析php),然后输出标准的html语句返回给web服服务器,再返回给客户端,这就是普通cgi的工作原理。

cgi的好处就是完全独立于任何服务器,仅仅是做为中间分子。提供接口给apache和php。他们通过cgi搭线来完成。这样做的好处了尽量减少两者的关联,使他们两者变得更独立。

总结一下:php 与 apache 或者 ngix 结合, 会用sapi 提供两种连接方法:mod_php和mod_fastcgimod_php 模式会将php模块安装到apache下面来运行,两者结合度较大。mod_fastcgi模式则是作为一个中间过程,apache介绍用户请求后,就发送给fastcgi, 再连接php来完成访问。

猜你喜欢

转载自blog.csdn.net/sj349781478/article/details/84879828