• 青蛙学Linux—Nginx配置PHP支持


    1、安装PHP

    PHP可以使用YUM安装,也可以通过源码包自行编译安装。使用YUM安装PHP可能会存在版本过低的问题,所以这里我们使用从PHP官网(www.php.net)上下载的源码包进行安装,版本为7.1.25(随机选择的版本)。

    1.1、安装依赖环境

    安装PHP前必须先安装以下依赖包,依赖包可以通过YUM进行安装:

    [root@localhost apps]# yum install php-mcrypt libmcrypt libmcrypt-devel  autoconf  freetype freetype-devel gd libmcrypt libpng libpng-devel openjpeg openjpeg-devel  libjpeg libjpeg-devel  libxml2 libxml2-devel zlib curl curl-devel

    1.2、编译安装PHP

    将下载的PHP源码包解压后,进入PHP目录,运行(将PHP安装到/usr/local/php7目录下):

    [root@localhost php-7.1.25]# ./configure 
    > --prefix=/usr/local/php7 
    > --enable-fpm                 # 开启PHP-FPM,Nginx通过FPM与PHP集成
    > --with-fpm-user=nginx        # 定义启动FPM的用户
    > --with-fpm-group=nginx       # 定义启动FPM的组
    > --with-pdo-mysql=mysqlnd     # 定义PHP连接MySQL的驱动组件
    > --with-mysqli=mysqlnd        # 定义PHP连接MySQL的驱动组件
    > --with-zlib                  # 开启zlib支持
    > --with-curl                  # 开启curl支持
    > --with-gd                    # 开启gd库支持
    > --with-jpeg-dir              # 开启jpeg图片支持
    > --with-png-dir               # 开启png图片支持
    > --with-freetype-dir          # 开启freetype字体库支持
    > --with-openssl               # 开启openssl支持
    > --enable-mbstring            # 开启mbstring扩展
    > --enable-xml                 # 开启XML支持
    > --enable-session             # 开启session
    > --enable-ftp                 # 开启FTP支持
    > --enable-pdo                 # 开启PDO
    > --enable-tokenizer           # 开启tokenizer扩展
    > --enable-zip                  # 开启ZIP支持

    更多的./configure参数可以使用./configure --help命令查看。

    在configure进行完毕无报错后,使用以下命令进行安装:

    [root@localhost php-7.1.25]# make && make install

    安装完成后,接下来需要复制PHP的配置文件到安装目录。PHP的配置文件位于源码包中,有以下两个文件:

    php.ini-development    # 开发环境
    php.ini-production     # 生产环境

    这里将PHP用于生产环境的配置文件复制到安装目录:

    [root@localhost php-7.1.25]# cp php.ini-production /usr/local/php7/lib/php.ini

    因为我们需要使用PHP-FPM与Nginx进行集成,这里可以将PHP-FPM的服务文件加入系统服务中,以便进行管理:

    CentOS 6.x(init)

    [root@localhost php-7.1.25]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
    [root@localhost php-7.1.25]# chmod 755 /etc/init.d/php-fpm

    CentOS 7.x(systemd)

    [root@localhost php-7.1.25]# cp sapi/fpm/php-fpm.service /usr/lib/systemd/system

    1.3、额外的:pdo和mysqlnd

    configure中的参数--with-pdo-mysql=mysqlnd表示在连接MySQL时使用的时mysqlnd驱动。这里涉及了两个概念,pdo和mysqlnd。

    PDO,PHP Data Objects,是PHP应用中的一个数据库抽象层规范。PDO提供了一个统一的API接口使得PHP应用可以不用去关心具体连接的是什么数据库。PDO的使用使得可以在任意需要的时候无缝切换后端数据库。

    mysqlnd,MySQL Native Driver,是由PHP官方提供的用于连接MySQL数据库的驱动,用于替换由MySQL官方开发的libmysql。从PHP 5.3版本开始已经不推荐使用libmysql,在PHP 7.x的版本中libmysql已经被移除了,所以在PHP 7.x中,--with-mysql=mysqlnd的写法已经被废除了。另外,由于mysqlnd内置于PHP源码中,所以在编译安装PHP时不需要先安装好MySQL。

    --with-mysqli=mysqlnd中的mysqli是MySQL增强扩展,也是PHP连接MySQL的一种方式,这里也使用mysqlnd驱动。

    2、PHP-FPM

    PHP-FPM是一个第三方的FastCGI进程管理器,最先是作为PHP的一个补丁来开发的,现在PHP-FPM已经集成在PHP源码中,用于替换PHP FastCGI的大部分附加功能,对于高负载网站是非常有用的。

    PHP-FPM包含一个master和多个worker进程(worker进程数量在配置文件中定义)。master主要负责监听端口,接收来自Web server的请求;而worker进程内部拥有一个PHP解释器,是PHP代码真正执行的地方。

    PHP-FPM的配置文件位于PHP安装目录下的etc目录中,文件名为php-fpm.conf.default,要使用时去掉.default即可:

    [root@localhost etc]# cp php-fpm.conf.default php-fpm.conf

    该配置文件中的内容大部分都被注释掉了,仅有下面一句生效:

    include=/usr/local/php7/etc/php-fpm.d/*.conf

    表示加载PHP安装目录下的/etc目录下的子目录php-fpm.d中的.conf配置文件。我们进入该目录,默认该目录下有一个名为www.conf.default的文件,我们首先启用该文件:

    [root@localhost php-fpm.d]# cp www.conf.default www.conf

    我们来看下该文件中的内容,该文件中的大部分内容也被注释掉了,生效的部分如下:

    [www]
    user = nginx             # 启动PHP-FPM的用户
    group = nginx            # 启动PHP-FPM的组
    listen = 127.0.0.1:9000  # PHP-FPM监听的IP和端口
    pm = dynamic             # 定义PHP-FPM进程池开启进程的方式,有静态static和动态dynamic
    pm.max_children = 5      # 在static方式下表示开启的进程数,dynamic方式下表示开启的最大进程数
    pm.start_servers = 2     # dynamic方式下初始开启的进程数
    pm.min_spare_servers = 1 # dynamic方式下在空闲状态中开启的最小进程数
    pm.max_spare_servers = 3 # dynamic方式下在空闲状态中开启的最大进程数,这个值只能小于等于pm.max_children

    启动PHP-FPM

    当前系统为CentOS 7.6.1810,且已经将PHP-FPM添加到系统服务管理中了,所以使用以下命令启动PHP-FPM:

    [root@localhost php-fpm.d]# systemctl start php-fpm

    3、Nginx使用PHP-FPM

    Nginx要通过PHP-FPM使用PHP,同样是通过反向代理来进行的,只是这里的反向代理使用的是FastCGI协议。

    打开Nginx的配置文件,里面默认有一段关于PHP-FPM的配置:

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ .php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    该段配置默认是注释状态,只要取消注释即可使用。这里需要注意的是fastcgi_param,定义的是PHP文件的路径。

    我们把这段配置取消注释,并将fastcgi_param的路径修改为$document_root$fastcgi_script_name,然后在html目录下创建一个文件名为info.php的PHP文件,文件内容为:

    <?php phpinfo(); ?>

    访问http://192.168.0.110/info.php:

    1

    至此,Nginx支持PHP环境配置成功。

  • 相关阅读:
    Autofac 学习简易教程随笔(一)
    实现Entity Framework SQLite Code First 开发
    Entity Framework SQLite 开发及实现简单的自定义Migration Engine
    MSSQLServer和SQL Server Express、LocalDB的区别
    .gitignore文件
    Entity Framework MSSQL Code First 开发
    页面为要加<!DOCTYPE html>
    数字图像处理(下)
    数字图像处理(上)
    列表
  • 原文地址:https://www.cnblogs.com/yu2006070-01/p/10231796.html
Copyright © 2020-2023  润新知