nginx里集成php模块安装配置步骤详解

 更新时间:2023年08月06日 15:37:46   作者:SH沐瞳  
这篇文章主要为大家介绍了nginx里集成php模块安装配置步骤详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

nginx是一个高性能的web服务器,它可以处理静态文件和反向代理的请求,但是它不知道如何运行php脚本。为了让nginx能够支持php,我们需要使用一个php模块,比如php-fpm(FastCGI Process Manager),它可以在nginx外部创建自己的进程,然后通过FastCGI协议与nginx通信。这样,当用户请求一个php页面时,nginx就会把请求转发给php-fpm,然后把php-fpm返回的结果发送给用户。这种方式比传统的CGI或者mod_php更快更节省资源,也更方便管理和配置。

要在nginx里集成php模块,需要完成以下几个步骤:

第一步:安装php-fpm

我们假设已经安装了最新版本的php(>= 7.3),那么可以使用apt-get命令来安装php-fpm:

sudo apt-get install php7.3-fpm

安装完成后,php-fpm服务会自动启动,可以使用systemctl命令来查看它的状态:

systemctl status php7.3-fpm

应该看到类似这样的输出:

php7.3-fpm.service - The PHP 7.3 FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php7.3-fpm.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-02-17 06:29:31 UTC; 30s ago
     Docs: man:php-fpm7.3(8)
 Main PID: 32210 (php-fpm7.3)
   Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
    Tasks: 3 (limit: 1152)
   CGroup: /system.slice/php7.3-fpm.service
           ├─32210 php-fpm: master process (/etc/php/7.3/fpm/php-fpm.conf)
           ├─32235 php-fpm: pool www
           └─32236 php-fpm: pool www

第二步:配置php-fpm池

php-fpm服务会创建一个默认的池,它的配置文件(www.conf)可以在/etc/php/7.3/fpm/pool.d目录下找到。可以根据的需求来修改默认的池,或者创建新的池。一般来说,建议为每个网站或者应用创建单独的池,这样可以更好地控制每个php-fpm进程的资源分配和权限。

在这里,我们假设只有一个网站或者应用,那么可以使用默认的池。需要注意以下几个重要的参数:

  • user和group:指定运行php-fpm进程的用户和组,默认是www-data,可以根据的实际情况进行修改。
  • listen:指定监听请求的方式,可以是tcp端口(例如127.0.0.1:9000)或者unix套接字(例如/var/run/php/php7.3-fpm.sock)。一般来说,使用unix套接字会更快更安全。
  • pm:指定进程管理器的模式,可以是static(固定数量)、dynamic(动态调整)或者ondemand(按需启动)。一般来说,dynamic模式比较适合大多数场景。
  • pm.max_children:指定最大允许的子进程数量,这个值取决于的服务器性能和负载情况。
  • pm.start_servers:指定启动时创建的子进程数量,在dynamic模式下有效。
  • pm.min_spare_servers:指定最小空闲子进程数量,在dynamic模式下有效。
  • pm.max_spare_servers:指定最大空闲子进程数量,在dynamic模式下有效。
  • pm.max_requests:指定每个子进程处理的最大请求数,在达到该值后会重启子进程,防止内存泄漏。

可以根据的实际情况进行调整,或者使用默认的值。修改完配置文件后,需要重启php-fpm服务:

sudo systemctl restart php7.3-fpm

第三步:配置nginx

要让nginx能够与php-fpm通信,需要在nginx的配置文件中添加一些指令。可以在/etc/nginx/sites-available目录下创建一个新的配置文件,或者修改默认的配置文件(default)。在这里,我们假设创建了一个名为example.com的配置文件,它的内容如下:

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.php;
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    location ~ \.php$ {
        include fastcgi.conf;
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
    }
}

这个配置文件的含义如下:

  • listen 80:指定监听80端口。
  • server_name example.com www.example.com:指定处理example.com和www.example.com域名的请求。
  • root /var/www/example.com:指定网站的根目录。
  • index index.php:指定默认的索引文件。
  • location /:匹配所有的请求,使用try_files指令来检查请求的文件是否存在,如果不存在,则重写到index.php文件。
  • location ~ .php$:匹配所有以.php结尾的请求,使用include指令来引入fastcgi.conf文件,它包含了一些通用的FastCGI参数。然后使用fastcgi_pass指令来指定php-fpm监听的unix套接字。最后使用fastcgi_buffers和fastcgi_buffer_size指令来调整缓冲区的大小。

修改完配置文件后,需要创建一个软链接到/etc/nginx/sites-enabled目录,以便nginx能够读取它:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

然后需要测试nginx的配置是否正确:

sudo nginx -t

如果没有错误,应该看到类似这样的输出:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

最后,需要重启nginx服务:

sudo systemctl restart nginx

第四步:测试nginx和php-fpm

要测试nginx和php-fpm是否正常工作,可以在网站根目录下创建一个名为info.php的文件,它的内容如下:

<?php
phpinfo();
?>

然后可以通过浏览器访问example.com/info.php,应该看到类似这样的页面:

这个页面显示了php的一些信息,证明了nginx和php-fpm已经成功集成了。

以上就是nginx里集成php模块安装配置步骤详解的详细内容,更多关于nginx集成php模块的资料请关注脚本之家其它相关文章!

相关文章

  • nginx实现ip限流的具体示例

    nginx实现ip限流的具体示例

    限流的方式油很多种,本文主要介绍了nginx实现ip限流的具体示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • Nginx监控模块(vts模块)详解

    Nginx监控模块(vts模块)详解

    国内用Nginx的比较多,下面这篇文章主要给大家介绍了关于Nginx监控模块(vts模块)的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • nginx通过nginx_upstream_check_module实现后端健康检查

    nginx通过nginx_upstream_check_module实现后端健康检查

    nginx的健康检查有两种,一种是被动健康检查,也就是nginx自带健康检查模块ngx_http_upstream_module,另一种就是主动健康检查,使用第三方模块nginx_upstream_check_module,下面就来介绍一下,感兴趣的可以了解一下
    2024-08-08
  • nginx安装完成无法解析php解决方法

    nginx安装完成无法解析php解决方法

    大家好,本篇文章主要讲的是nginx安装完成无法解析php解决方法,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • 通过浏览器查看nginx服务器状态配置方法

    通过浏览器查看nginx服务器状态配置方法

    这篇文章主要介绍了通过浏览器查看nginx服务器状态配置方法,本文讲解开启nginx-status的配置方法,并对服务器的参数做了详细讲解,需要的朋友可以参考下
    2015-04-04
  • nginx server_name配置多个域名时的坑

    nginx server_name配置多个域名时的坑

    Nginx配置多个server_name时,$server_name默认取第一个值,导致PHP获取错误,下面就来介绍一下该问题的解决,感兴趣的可以了解一下
    2025-05-05
  • nginx转载到多个服务器实例代码

    nginx转载到多个服务器实例代码

    本文主要介绍了nginx转载到多个服务器实例代码,通过修改nginx.conf文件实现前端路由转发和后端服务器实例添加,具有一定的参考价值,感兴趣的可以了解一下
    2025-09-09
  • nginx 多站点配置方法集合

    nginx 多站点配置方法集合

    关于nginx的多站设置,其实和apache很相似,假设我们已经有两个域名,分别是:www.websuitA.com和www.websuitB.com。并且这两个域名已经映射给了IP为192.168.1.1的服务器。
    2011-06-06
  • Nginx location静态文件映射配置过程

    Nginx location静态文件映射配置过程

    文章介绍了Nginx配置中root和alias指令的使用场景和区别,并通过实际问题分析,指出路径拼接逻辑错误导致静态文件无法访问,最终解决方案是将root改为alias,并确保路径正确
    2025-12-12
  • Nginx 禁止IP访问如何实现

    Nginx 禁止IP访问如何实现

    这篇文章主要介绍了Nginx 禁止IP访问如何实现的相关资料,需要的朋友可以参考下
    2017-02-02

最新评论