zoukankan      html  css  js  c++  java
  • 配置php-fpm识别php文件访问

    以前是装的集成环境,没有想到装完Nginx + PHP + MySQL 

    启动nginx 服务,出现页面:

     

    如果访问120.25.216.6/index.php 就会变成下载

    之所以会这样是因为2个原因:

    /etc/nginx/nginx.conf 或者 /etc/nginx/conf.d/120.25.216.6.conf 里面要设置

    让nginx fastcgi 监听端口127.0.0.1:9000,把用户请求发送给php.ini处理,所以还要设置 nginx配置+php配置

    以下是/etc/nginx/conf.d/120.25.216.6.conf 配置:

    server {
    listen 80;
    server_name 120.25.216.6;
      location ~ .php?.*$ {
        root /var/www/html;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
      }
    }
    

      

    下面是一个非常完整的配置,顺便写上了注释

    server {
      listen 80;  // 监听80 端口,也可以换成8080,但是要开启安全组端口
      server_name 39.108.82.69;  // 这个可以是你的域名或者ip  server_name www.conf.com;
      location / {
        root /var/www/html; // 项目的路径,我用的是yum install nginx ,所以默认选/var/www/html 当项目根目录
        index index.php index.html index.htm;  // 可以识别的文件 index.php 放在前面,输入域名 39.108.82.69 是可以直接找到 /var/www/html/index.php 的
    
       }
      // 下面这里的是配置让nginx 识别php的核心配置
      location ~ .php$ {
        root /var/www/html; // 这个地方不配,应该会访问不到
        fastcgi_pass 127.0.0.1:9000; // 这里使用的是9000端口监听,当然可以用sock方式,这里配置只是第一步,还要设置/usr/sbin/php-fpm  /etc/php-fpm/www.conf  监听127.0.0.1:9000 看后面介绍
        #fastcgi_pass unix:/dev/shm/php-cgi.sock;
        fastcgi_index index.php;
        #fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
      }
      error_page 404 /404.html;
      location = /404.html {
        root /usr/share/nginx/html;
      } 
      error_page 500 502 503 504 /50x.html;
      location = /50x.html {
        root /usr/share/nginx/html;
      } 
    
    }
    

    那么通过搜索 

    find / -name www.conf    

    配置php www.conf

     然后 vim /etc/php/7.2/fpm/pool.d/www.conf  

    配置如下:

    [www]
    user = www-data   //这里使用的是www-data 如果没有这个用户可以使用命令  useradd www-data
    group = www-data // 这里是组 可以使用命令groupadd www-data创建   这里要注意一下 nginx.conf 里面设置了用户组访问,建议改成相同
    ;## 以什么用户什么组的权限来运行池fpm
    
    listen = 127.0.0.1:9000   // 监听端口9000  
    ;listen = /apps/php/var/run/$pool-php-fpm.sock
    ;## 监听的ip和端口,可以 /path/to/unix/socket 来监听unix socket,性能更好。
    
    listen.backlog = 4096
    ;## 未accept处理的socket队列大小,-1 on FreeBSD and OpenBSD,其他平台默认65535,高并发时重要,不要用-1,建议1024以上,最好是2的幂值。
    ;## 一个池共用一个backlog队列,所有的池进程都去这个队列里accept连接。
    ;## 最大数量受限于系统配置 cat /proc/sys/net/core/somaxconn,
    ;## 系统配置修改:vim /etc/sysctl.conf,增加 net.core.somaxconn = 2000 则最大为2000,然后php最大的backlog可以到2000。
    
    listen.allowed_clients = 127.0.0.1
    ;## 设置允许连接fpm的地址,比如nginx就要来连,多个地址用逗号隔开,如果不配置,则默认任意地址都能来连。
    
    ;## 设置php-fpm进程,一般大于8G内存建议用 static 模式,max_children的计算方式,每个php-fpm进程约占 20~30M 的内存,
    ;## 根据预计给php-fpm的内存计算出合理值,例如预计给php-fpm 预留6G使用内存,那max_children 应设置为 200~300 之间
    pm = dynamic
    ;## 启动时子进程管理方式,可选值:static(启动时创建指定个数), dynamic(启动时根据情况创建,至少有一个),
    ;## ondemand(启动时不创建子进程,有需求才创建)
    
    pm.max_children = 2000
    ;## 该池同时最多存在n个进程, 三种管理方式都要配置
    
    pm.max_requests = 4
    ;## 子进程接收n个请求后,自动重启
    
    pm.start_servers = 2
    ;## fpm启动时创建2个子进程,只适用动态dynamic管理方式
    
    pm.min_spare_servers = 2
    ;## 服务器闲置时最少保持2个子进程,不够这个数就会创建,只适用动态dynamic管理方式
    
    pm.max_spare_servers = 6
    ;## 服务器闲置时最多要有几个,多了会kill,只适用动态dynamic管理方式
    
    listen.owner = www  // 如果这里权限不足,可能会导致php 无法正常访问
    listen.group = www
    listen.mode = 0660 // 这个必须要配置,很重要,如果权限不足,则创建权限访问
    ;##用socket连接方式时,指定拥有unix socket权限的用户,默认和运行的用户一样;用tcp连接可以注释掉
    
    ;pm.status_path = /status
    ;## FPM 状态页面的网址。如果没有设置,则无法访问状态页面,默认值:无
    
    ping.path = /ping
    ;## FPM 监控页面的 ping 网址。如果没有设置,则无法访问 ping 页面。该页面用于外部检测 FPM 是否存活并且可以响应请求。
    ;## 请注意必须以斜线开头(/)。
    
    ping.response = pong
    ;## 用于定义 ping 请求的返回响应。返回为 HTTP 200 的 text/plain 格式文本。默认值:pong。
    
    request_terminate_timeout = 3600s
    ;## 单个请求的超时时间,有时候php.ini设置的最大执行时间未生效,这个就会来干掉那个执行太久的请求。
    
    ;request_slowlog_timeout = 10s::;;;
    

      

    最后启动 Nginx + PHP

    Nginx 启动方式

    systemctl restart nginx.service  || service nginx restart

    nginx -t               查看nginx 配置是否报错

    nginx -s reload  重启nginx 重新加载配置

    php-fpm 启动命令

    sudo /usr/sbin/php-fpm // 加权限启动 启动后使用netstat -nltp 可以如果可以查看到9000 代表成功,如果9000端口存在要先 kill -9 端口 再重新启用 

    /usr/sbin/php-fpm -t   // 检查配置 跟 nginx -t 检查配置一样

    service php-fpm restart // 系统启动php-fpm

    查看状态

    ps -ef |grep nginx    ps -ef |grep php

    然后正常访问:

  • 相关阅读:
    禁止google浏览器强制跳转为https
    遍历打印文件目录结构
    添加忽略文件
    部署git服务器
    Location, History, Screen, Navigator对象
    Window 对象
    回调函数,setTimeout,Promise
    闭包
    this
    函数内部运作机制—上下文
  • 原文地址:https://www.cnblogs.com/leijiangsheng/p/12739058.html
Copyright © 2011-2022 走看看