现在我要使用 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
vHost:
<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
和之间有什么区别?
SetHandler 和 FastCgiExternalServer 和 ProxyPassMatch ^ /(。 .php(/.)?)$ fcgi://127.0 .0.1:9000 / path / to / your / documentroot / $ 1
?
我有种感觉,每个教程都在告诉我一些不同的东西,我真的无法弄清楚Ubuntu2018在2018年的最佳实践是什么。
答案 0 :(得分:0)
这是我的vhost
for Apache使用FPM
连接到mod_proxy_fcgi
(显然是推荐的设置,尽管不要求我提供详细信息!):
<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,则由于现在已获取9000,因此需要将其端口更改为9001。
如果您需要查看更多配置,请在https://github.com/delboy1978uk/lamp
处查看我的Docker LAMP堆栈配置。答案 1 :(得分:0)
我知道这是一个老问题,但我想提供更新的回复。 随着 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。
详细说明:
基本上有 3 种不同的服务器 API 可以与 PHP 一起安装: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_fcgid
是 mod_cgi
或 mod_cgid
的高性能替代品
它还将取代 Apache 插件或 PHP-FPM 中的 php.ini
。
要找到您需要在网站根目录中的 create a phpinfo() 文件的所有配置文件。
同样,它带有自己的 apache 模块和配置:mods-enabled/fcgid.conf
mods-enabled/fcgid
apt install libapache2-mod-fcgid
a2enmod fcgid