【问题标题】:Difference between php-fpm with libapache2-mod-fcgid and/or libapache2-mod-fastcgiphp-fpm 与 libapache2-mod-fcgid 和/或 libapache2-mod-fastcgi 之间的区别
【发布时间】:2019-04-03 15:39:30
【问题描述】:

现在我正在使用 PHP-FPM 安装或新的 apache2 网络服务器,因为旧的网络服务器正在使用 mod_php 运行。

我在互联网上找到了不同的教程,其中大多数不太可能是 1-2 岁。他们中的大多数人使用:

libapache2-mod-fastcgi 与 Apache 和 PHP-FPM 结合使用。

在 Ubuntu 18.04 存储库中,此软件包不可用,只有以下软件包:

libapache2-mod-fcgid

我现在可以使用其中哪些?或者两者有什么区别?不幸的是,我在互联网上真的找不到很好的解释。

此外,我经常阅读有关

mod_proxy_fcgi

这是否意味着我不再需要 libaapche2-mod-f... 软件包了? ?

现在我安装了这样的所有东西并且它可以工作,但我不确定这是否是正确的方法:

a2enmod actions fastcgi alias proxy_fcgi
apt install php-7.2 php7.2-fpm php7.2-gd php7.2-mysql php7.2-curl php7.2-xml php7.2-zip php7.2-intl php7.2-mbstring php7.2-bz2 php7.2-json php7.2-apcu php7.2-imagick
a2enmod actions fastcgi alias proxy_fcgi

虚拟主机:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    <FilesMatch \.php$>
         SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
    </FilesMatch>

    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>

PHP-FPM 正在运行(参见 info.php 的图片): PHP-FPM Working

和有什么区别:

SetHandlerFastCgiExternalServerProxyPassMatch ^/(..php(/.)?)$ fcgi://127.0 .0.1:9000/path/to/your/documentroot/$1

?

我有一种感觉,每个教程都在告诉我一些不同的东西,我真的无法弄清楚 2018 年 Ubuntu2018 的最佳实践是什么。

【问题讨论】:

    标签: php


    【解决方案1】:

    这是我的vhost,用于 Apache 使用 mod_proxy_fcgi 连接到 FPM(显然是推荐的设置,尽管不要问我具体的细节!):

    <VirtualHost *:80>
        ServerName awesome.scot
        ServerAlias localhost
        DocumentRoot /var/www/html/public
    
        <Directory "/var/www/html">
                DirectoryIndex index.php
                FallbackResource /index.php
                Options -Indexes +FollowSymLinks
                AllowOverride FileInfo All
                Require all granted
        </Directory>
        ProxyPassMatch ^/(.*\.php)$ fcgi://php:9000/var/www/html/public/$1
    </VirtualHost>
    

    在 conf 中,我也有这些:

    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
    

    如果您使用 XDebug,则需要将其端口更改为 9001,因为现在使用的是 9000。

    如果您需要查看更多配置,请在此处查看我的 Docker LAMP 堆栈配置https://github.com/delboy1978uk/lamp

    【讨论】:

      【解决方案2】:

      我知道这是一个老问题,但我想给出一个更新的答复。 自 php5.3.3(2010 年)发布以来,发生了很多变化。 可以在Apache HTTP Server Wiki 上找到一些重要信息

      关于如何在 Ubuntu apache2 服务器上仅安装 PHP-FPM 的简短回答 (注意:将 php7.2 替换为您已安装的版本)

      # Install php-fpm:
      apt install php-fpm
      
      # Disable mod_php (Apache Handler API):
      a2dismod php*
      
      # Enable Apache Modules/Configs required by fpm:
      a2enmod proxy_fcgi setenvif
      a2enconf php7.2-fpm.conf
      
      # Restart the services:
      systemctl restart php7.2-fpm.service systemctl restart apache2.service
      

      如果您要运行 PHP-FPM,您还需要改变使用 Pre-fork 作为您的多处理模块 (MPM)。这里有一些instructions

      详细说明: 基本上可以使用 PHP 安装 3 种不同的服务器 API:Apache Handler、FPM 或 CGI。 查看不同的配置文件有助于了解您可能在系统上安装了什么。 目前在带有 php7.x 的 Ubuntu 18.x 上,会根据您安装的内容创建以下 php.ini 文件:

      /etc/php/7.2/cli/php.ini

      这是用于在命令行上运行 php 的 PHP-CLI 程序。 每当您安装 FPM、CGI 或 Apache 处理程序时,都会包含此内容。 你可以直接安装它:

      apt install php-cli
      

      要查找用于 PHP-CLI 的所有配置文件,您可以运行:

      php --ini
      

      /etc/php/7.2/apache2/php.ini

      这是 Apache 使用的 PHP 插件。可以在/etc/apache2/mods-available/php7.2找到 如果您尚未安装 PHP-FPM 或 PHP-CGI,那么这是包含您的网络服务器设置的文件。 要查找所有需要的配置文件,您需要在网站根目录中的create a phpinfo() 文件。

      要安装,您还必须在 Apache 中启用 mod_php。

      apt install libapache2-mod-php
      a2enmod php7.2
      

      /etc/php/7.2/fpm/php.ini

      这是 FastCGI 进程管理器。它是 PHP 处理的包装器,并在系统上作为独立进程运行(与 Apache PHP 插件不同)。 如果您安装了 PHP-FPM,您将只有这个目录。 在这种情况下,它将是为您的网络服务器进行配置更改并取代 apache2/php.ini 文件的地方。 要查找所有配置文件,您需要在网站根目录中的create a phpinfo() 文件中找到。 使用 PHP-FPM 将 PHP 作为 fastCGI 进程服务器运行需要使用 apache 模块 mods-enabled/mod_proxy_fcgi,它与 php-fpm 一起启用。 安装 php-fpm 还将使用 conf-enabled/php7.2-fpm.conf 配置 apache,它将 FPM 设置为作为 unix 域套接字运行。

      apt install php-fpm
      a2enmod mod_proxy_fcgi
      

      /etc/php/7.2/cgi/php.ini

      这是安装 PHP 的第三种方式。它是运行基于 PHP 的应用程序的传统方式,而不是较新的 PHP-FPM。 mod_fcgidmod_cgimod_cgid 的高性能替代品 它还将取代 Apache 插件或 PHP-FPM 中的 php.ini。 要查找所有配置文件,您需要在网站根目录中的create a phpinfo() 文件中找到。 同样,它带有自己的 apache 模块和配置:mods-enabled/fcgid.confmods-enabled/fcgid

      apt install libapache2-mod-fcgid
      a2enmod fcgid
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-27
        • 2023-03-24
        • 2017-12-29
        • 2015-10-10
        • 2011-01-06
        • 1970-01-01
        • 1970-01-01
        • 2017-02-03
        相关资源
        最近更新 更多