phpfpm和apache_phpfpm 与 apache - CSDN
精华内容
参与话题
  • apachephp-fpm 几种处理方式

    千次阅读 2018-09-26 09:58:43
    原文地址: apachephp-fpm 几种处理方式 目录 1.SetHandler 2.ProxyPassMatch 3.ProxyPass 1.SetHandler 在apache配置文件只部署一次 需要Apache 2.4.9以上才行 ip:port配置 php-fpm配置 ...

     

    原文地址: apache 与 php-fpm 几种处理方式

    目录

    1.SetHandler

    1. 在apache配置文件只部署一次
    2. 需要Apache 2.4.9以上才行

    ip:port配置

    php-fpm配置

    listen = 127.0.0.1:9000
    

    httpd配置

    <FilesMatch \.php$>
    setHandler "proxy:fcgi://127.0.0.1:9000"
    </FilesMatch>
    

    UDS配置

    php-fpm配置

    listen = /var/run/php-fpm/php-fpm.sock
    

    httpd配置

    <FilesMatch \.php$>
        SetHandler:unix:///var/run/php-fpm/php-fpm.sock|fcgi://php-fpm
        SetHandler "proxy:unix:/var/run/php-fpm/php-fpm.sock|fcgi://localhost" # Apache 2.4.10设置
    </FilesMatch>
    

    2.ProxyPassMatch

    需要在每个 “VirtualHost” 里面加入

    ip:port配置

    <VirtualHost *:80>
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/path/to/your/documentroot/$1
    DirectoryIndex /index.php
    </VirtualHost>
    
    • ProxyPassMatch
      只有满足特定正则模式的内容才会匹配并执行此规则,这里的模式是,
      ^/(..php(/.)?)$
      从网站(虚拟主机 的根目录开始,匹配任何以 .php 结尾,或者在 .php 之后紧跟一个 / 再跟别的内容的路径。
    • ^ (caret) 和 $ (dollar)
      标志要匹配的路径的开始和结束
    • ( )
      括号里的内容可以用 $1 来表示,以方便后面引用它。
    • fcgi://127.0.0.1:9000
      通过 mod_proxy_fcgi 来转发的代理,使用 fastCGI 协议,转到 PHP-FPM 监听的端口。
      改变 IP 地址和/或端口号就可以要转到的不同的 pool。用这个可以实现服务器分流、均衡等。
    • /path/to/your/documentroot/
      非常重要!必须与虚拟主机的路径匹配,且必须是对应 php 文件在操作系统中的绝对路径。否则会找不到文件(PHP Script File)。这也是 URL 地址重写的目的所在:将 URL 地址转换成 fcgi://127.0.0.1:9000 后面紧跟着的 php 文件绝对路径。
    • 可以从原始请求扩展成整个请求路径的变量,这里指代前面外围 ( ) 里面匹配的那个路径(uri)

    我本机docker容器 httpd 和 php-fpm配置
    我的php-fpm在138.38.38.110 上,配置将有所不同

    
    <VirtualHost *:80>
        ServerAdmin shenyi@com.cn
        DocumentRoot "/usr/local/apache2/htdocs"
        ServerName localhost
        <Directory "/usr/local/apache2/htdocs">
         Options None
         Require all granted
        </Directory>
        ProxyRequests Off
        ProxyPassMatch ^/(.*\.php)$ fcgi://138.38.38.110:9000/var/www/htm/$1
    </VirtualHost>
    

    关于docker-compose 安装配置,看我docker compose 安装配置nginx 反向代理 httpd php-fpm

    3.ProxyPass

    跟ProxyPassMatch 类似 ,需要在每个 VirtualHost 中分别设置

    <LocationMatch ^(.*\.php)$>
    ProxyPass fcgi://127.0.0.1:9000/path/to/webroot/
    ProxyErrorOverride on
    </LocationMatch>
    

     

    展开全文
  • PHP最常用的方式是以模块的方式(mod_php)运行在Apache中,也是Apache运行PHP的默认方式。但是在Nginx中,Nginx又使用的是PHP-FPM。  这篇文章就对这些概念做个介绍,如有不对的地方,请多多批评指教。  什么是PHP...

    众所周知,PHP是跨平台、跨服务器的语言,这也是它如此流行的原因之一。但是,很少有人知道PHP解释器可以以不同的方式运行在Web服务器中。PHP最常用的方式是以模块的方式(mod_php)运行在Apache中,也是Apache运行PHP的默认方式。但是在Nginx中,Nginx又使用的是PHP-FPM。
      这篇文章就对这些概念做个介绍,如有不对的地方,请多多批评指教。
      什么是PHP处理器(PHP handlers)?
      首先需要记住的是,任何一种Web服务器(Apache、Nginx等)都是被设计成向用户发送html、图片等静态资源的,Web服务器自身并不能解释任何动态脚本(PHP、Python等)。PHP处理器就是用来解释Web应用中的PHP代码,并将它解释为HTML或其他静态资源,然后将解析的结果传给Web服务器,最后再由Web服务器发送给用户。大多数的Web服务器都不能解析PHP代码,因此它需要一个能解析PHP代码的程序,这就是PHP处理器。
      mod_php
      首先,来看一下以Apache模块方式运行PHP。mod_php现在在Linux各版本的软件仓库里都有,因此很容易被安装。
      当PHP以模块的方式运行在Apache中时,PHP解释器被“内嵌”在Apache的进程里。Apache不会调用任何外部的PHP进程,因此这种方式使Apache与PHP能更好的通信。但是,当以这种方式运行PHP的时候,哪怕Apache提供的仅仅是静态的资源(如HTML),Apache的每个子进程也都会载入 mod_php,导致了比正常情况下更多的内存开销。
      以这种方式运行的另一个缺点是,它仅能与Apache一起配合工作。另外,在小型的VPS和大型的网站中,这种方式也不合适,因为大型网站可能有很多静态资源,而这些静态资源是不需要PHP程序解释的。
      优点:
      1.易于安装和更新
      2.容配置
      缺点:
      1.仅能与Apache一起工作
      2.增加了Apache子进程内存开销
      3.当更改php.ini文件后,需要重启Apache
      FastCGI
      FastCGI是交互程序与Web服务器通用的协议接口,是早期CGI(Common Gateway Interface)的一个变种。相对于CGI来说,FastCGI减少了和Web服务器交互的开销,同时一次可以处理更多的请求。
      Apache可以以mod_fcgid的形式使用FastCGI。其他Web服务器,如lighttpd, nginx, Cherokee,甚至微软的IIS也都能使用FastCGI。使用FastCGI,可以同时设置多个版本的PHP,这在某些情况下非常有用。
      FastCGI还利用suexec来支持不同的用户用自己的PHP的实例。这个特性对于在共享环境下提高安全性尤其重要。FastCGI在保证性能的同时,也减少了Web服务器的内存开销。
      优点:
      1.兼容多数Web服务器
      2.比mod_php占内存小
      3.更多的配置项,包括多版本PHP和suexec
      缺点
      1.配置复杂
      2.不被大家所熟知
      PHP-FPM(FastCGI Process Manager)
      PHP-FPM是Web服务器使用PHP的一种最新方式,也是PHP FastCGI的另外一种实现。PHP-FPM对于运行在小型VPS和多服务器上的Web应用非常应用。同时,它也可以被兼容FastCGI的任何Web服务器所使用。
      PHP-FPM使管理员能够优雅地停止和启动PHP工作进程而不丢失任何查询。这允许我们逐步更新配置和二进制,而不会损失任何查询。它还允许我们在发生任何意外破坏的情况下,紧急重启进程。
      优点:
      1.兼容多数Web服务器
      2.比mod_php占内存小
      3.更多的配置项,包括多版本PHP和suexec
      缺点
      1.配置复杂
      2.不被大家所熟知
      补充:Apache运行PHP的四种方式
      mod_php (DSO,Dynamic Shared Object)
      CGI
      suPHP
      FastCGI
      总结
      内容相对抽象,理解的不深,记录下留作以后参考~:)

    展开全文
  • apache 启动 systemctl start httpd 停止 systemctl stop httpd 重启 systemctl restart httpd mysql 启动 systemctl start mysqld 停止 systemctl stop mysqld 重启 systemctl restart mysqld ...

    apache
    启动
    systemctl start httpd
    停止
    systemctl stop httpd
    重启
    systemctl restart httpd


    mysql
    启动
    systemctl start mysqld
    停止
    systemctl stop mysqld
    重启
    systemctl restart mysqld


    php-fpm
    启动
    systemctl start php-fpm
    停止
    systemctl stop php-fpm
    重启
    systemctl restart php-fpm


    nginx
    启动
    systemctl start nginx
    停止
    systemctl stop nginx
    重启
    systemctl restart nginx
    展开全文
  • GINX+PHP(FASTCGI)好,还是NGINX+APACHE+PHP好?  第一种是利用CGI让NGINX和PHP进行通信 第二种是静态NGINX 动态让APACHE里的MOD_PHP模块来实

    http://www.oschina.net/question/1047141_151910?sort=default&p=2#tags_nav


    GINX+PHP(FASTCGI)好,还是NGINX+APACHE+PHP好?




     第一种是利用CGI让NGINX和PHP进行通信

    第二种是静态NGINX  动态让APACHE里的MOD_PHP模块来实现PHP


    二种都是NGINX在前端80端口,作为一个反向代理服务器。

    这2种哪种效率高呢?

    引用来自“南湖船老大”的评论

    如果单台服务器的话,NGINX+APACHE+PHP 纯粹多此一举,多了一次请求转发,效率肯定低,而且现在FPM已经足够稳定。完全没必要。

    只有多台服务器集群的话,apache+nginx反代才有意义.NGINX+APACHE+PHP 这种架构存在的原因除了apache出现比较早外,还因为当时FPM不如module模式稳定。


    不见得。Nginx在前面实现动静分离,静态内容由Nginx负责,动态请求则交给后面的PHP应用服务器Apache(libphp5.so)处理。Apache专心处理PHP,这不挺好吗?

    Nginx+PHP-FPM相对Nginx+Apache(libphp5.so)来说,PHP-FPM更灵活,在php-fpm.conf里可以配置监听不同端口的多个pool,每个pool又可以自由配置PHP-FPM工人进程数pm.max_children,一个pool里的工人进程繁忙不会影响到另一个pool。在Nginx里可以配置应用的不同部分使用不同的pool,而且一台服务器上可以运行多个版本的PHP-FPM,借助Nginx的upstream功能,PHP-FPM非常容易横向扩展。

    新浪微博百度贴吧都在使用Nginx+PHP-FPM的架构,PHP-FPM已经足够稳定。


    ab同样并发数压力测试ZF下RPS(请求每秒)对比:

    --- 共有 6 条评论 ---
    • eechen回复 @ZhangKevin2 : PHP-FPM从5.3开始就集成到PHP核心,如果不稳定,你觉得新浪微博和百度贴吧会用吗?倒是PHP官方不推荐在生产环境中使用threaded MPM(worker/event)模式运行Apache2,仍建议使用老式prefork MPM.(2年前)  
    • ZhangKevin2回复 @eechen : 但是貌似没有APACHE+PHP组合稳定吧(2年前)  
    • eechen回复 @ZhangKevin2 : 你的意思是说Nginx+PHP-FPM存在FastCGI进程间通信,所以Apache2.4+MOD_PHP的性能要比前者好。但Nginx比Apache轻量高效是有目共睹的,处理静态文件和负载均衡都很强。另外PHP-FPM的可以通过php-fpm.conf和php.ini进行配置,拥有更高的可配置性。(2年前)  
    • ZhangKevin2回复 @eechen : apache不是出道2.4了么,听说提升了速度,另外 NGINX和PHP通信用到了CGI技术,而APACHE和PHP貌似用的是APACHE里一个MOD_PHP模块 好像原理有本质的区别(2年前)  
    • eechen回复 @yak : 差距虽然不大。但Nginx+FPM优于Apache+MOD_PHP是事实。(2年前)  


    不要人云亦云,有同学做benchmark test,参考详情http://www.zhihu.com/question/20049768/answer/33583461?group_id=517997974975029248

    如果是单P,apache的MOD_PHP的效率超过FPM(这里不考虑请求处理模式所产生的内存与CPU消耗,只测web server对动态内容并发请求的处理),

    还有国外某程序员做的并发测试,在纯PHP处理大量动态内容的测试条件下,Apache始终还是强过nginx

    http://www.eschrade.com/page/why-is-fastcgi-w-nginx-so-much-faster-than-apache-w-mod_php/

    如果你群P又有大量静态内容,用nginx反向+APACHE动态是最好选择

    不过国外一些VPS用户还是建议即使单P还是用nginx,因为服务器资源有限,nginx对于内存和CPU的消耗都低于apache很多。(小站刚开始就不考虑那么多并发了吧)


    我来插科打诨。

    现在流行nginx+hhvm(fastcgi),速度杠杠的,都开了挂,

    nginx比apache强10倍,hhvm比php-fpm强9倍。


    展开全文
  • mac下php-fpm配置

    千次阅读 2017-01-02 17:47:17
    mac上自带了php和apache,系统自带的php-fpm在/usr/sbin目录下,而通过brew安装的phpphp-fpm放到了/usr/local/sbin目录,默认启动PHP-fpm时系统会找到/usr/sbin目录的文件,他的默认php-fpm.conf为/priva
  • centos7 apache无法解析php

    万次阅读 2018-02-20 17:34:08
    操作系统:centos7.2 x64...我觉得可能是我安装lamp的顺序不对,然后以如下顺序安装:php7、mariadb、apache和apache、php7、mariadb,发现均无法解析php文件。上网搜索解决方案,说要安装mod_php模块,我试了半天,...
  • PHP判断服务器使用apache还是nginx的方法 &lt;?php echo PHP_SAPI;//结果为fpm-fcgi,使用nginx + php-fpm echo PHP_SAPI;//结果为cgi-fcgi,使用nginx + fastcgi echo PHP_SAPI;//结果为apache2handler,使用...
  • 很多时候会登录一台陌生的服务器;当需要调整环境的时候;那真是起步啥都没有;装备全靠打;两眼一抹黑到处找配置项;.../usr/bin/mysql --help | grep -A1 'Default options'BashCopywhich php /u...
  • php-fpm安装、配置与优化

    万次阅读 多人点赞 2017-02-10 14:44:59
    1、php中fastcgi和php-fpm是什么东西 最近在研究学习php的性能方面的知识,看到了factcgi以及php-fpm,发现我对他们是少之又少的理解,可以说几乎是一无所知,想想还是蛮可怕的。决定仔细的学习一下关于这方面...
  • linux下httpd配置支持php-fpm

    千次阅读 2016-12-13 16:33:16
    apache配置支持php-fpm
  • 阿里云目录与文件的权限问题

    千次阅读 2014-08-03 10:11:51
    这样你得为这些目录文件分配合适的权限,一般可以把它们的拥有者设置成 php nginx 使用的用户,默认 nginx 的用户就是 nginx ,而 php-fpm 使用的用户默认是 apache。我们可以把它们改成一个统一的用户,...
  • php+fastcgi+apache2+php-fpm配置

    千次阅读 2009-07-23 10:34:00
    1.安装apache2的mod_fastcgi?[Copy to clipboard]View Code BASH tar -zxvf mod_fastcgicd mod_fastcgicp Makefile.AP2 Makefilemake top_dir=/path/to/apache2#你的apache安装路径make install
  • 不建议碰到权限就777, 如果你是php-fpm的方式运行, 看php-fpm运行的用户是...比如apache用户,则用 chown -R apache.apache xxxx/ 查看php-fpm用户 ps -aux | grep php-fpm root 9737 0.0 0.6 575956 25488 ?
  • php-fpm添加service服务

    万次阅读 2016-02-13 22:32:34
    nginx通过FastCGI运行PHPApache包含PHP环境有明显的优势,最近有消息称,PHP5.4将很有可能把PHP-FPM补丁包含在内核里,nginx服务器平台上运行PHP将更加轻松,下面我们就来看一篇php-fpm平滑启动并配置服务例子。...
  • php-fpm的静态static动态dynamic执行方式比较前段时间配置php-fpm的时候,无意间发现原来他还有两种执行方式。与Apache一样,他的进程数也是可以根据设置分为动态静态的。而php-fpm也是同样存在两种方式,一种是...
  • Yii应用Apache的配置比较简单,nginx的配置主要需要处理单一入口文件的问题.
1 2 3 4 5 ... 20
收藏数 21,934
精华内容 8,773
关键字:

phpfpm和apache