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服务器抵御CC攻击的相关配置讲解

    Nginx服务器抵御CC攻击的相关配置讲解

    这篇文章主要介绍了Nginx服务器抵御CC攻击的相关配置讲解,CC攻击原理与DDoS基本相似而且技术含量低,注意防范即可,需要的朋友可以参考下
    2016-01-01
  • 解决Nginx网关超时出现504 GATEWAY TIMEOUT的问题

    解决Nginx网关超时出现504 GATEWAY TIMEOUT的问题

    这篇文章主要给大家介绍了如何解决Nginx网关超时出现504 GATEWAY TIMEOUT的问题,文章通过代码示例和图文结合介绍的非常详细,有遇到相同问题的朋友可以参考阅读本文
    2023-11-11
  • nginx location优先级的深入讲解

    nginx location优先级的深入讲解

    这篇文章主要给大家介绍了关于nginx location优先级的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Nginx URL重写rewrite机制原理及使用实例

    Nginx URL重写rewrite机制原理及使用实例

    这篇文章主要介绍了Nginx URL重写(rewrite)机制原理及使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 详解nginx过滤url实现前台js的配置问题

    详解nginx过滤url实现前台js的配置问题

    本篇文章主要介绍了nginx过滤url实现前台js的配置问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • 使用nginx.exe时闪退的原因和解决方法

    使用nginx.exe时闪退的原因和解决方法

    最近使用老师给的nginx.exe时,点击nginx.exe突然屏幕就闪一下,经过一番排查,发现是端口被占用所导致的,所以本文就给大家讲讲端口被占用时的解决方法详细步骤,需要的朋友可以参考下
    2023-07-07
  • 深入理解Nginx中的sites-enabled目录

    深入理解Nginx中的sites-enabled目录

    Nginx是高性能的HTTP服务器和反向代理,其中sites-enabled目录对于配置管理非常关键,该目录存放已启用站点的符号链接,使得启用或禁用站点配置变得简单高效,下面就来介绍一下
    2024-09-09
  • Nginx的mirror指令示例配置

    Nginx的mirror指令示例配置

    这篇文章主要介绍了Nginx的mirror指令能干啥?mirror 指令提供的核心功能就是流量复制, 至于流量复制要用来干嘛,这个就各取所需了,需要的朋友可以参考下
    2022-05-05
  • Nginx禁止ip访问或非法域名访问

    Nginx禁止ip访问或非法域名访问

    这篇文章主要介绍了Nginx禁止ip访问或非法域名访问,需要的朋友可以参考下
    2022-04-04
  • nginx 关闭默认站点的方法

    nginx 关闭默认站点的方法

    国内机房一般都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦
    2012-09-09

最新评论