问题描述
我是unix命令行Web服务器管理/管理世界的新手。
许多具有控制面板管理选项的主机允许您使用简单选项更改PHP的运行方式。
最常见的选择是:
-
apache模块
-
CGI申请
-
FastCGI应用程序
我的问题很简单,你如何通过命令行改变它?我知道apache有很多配置文件。
我发现最接近的是this question,但目录结构似乎与我的操作系统(Ubuntu 12.04)不匹配。
我很困惑,似乎没有一个明确的指南,我可以找到这个过程的细节似乎是如此常见的事情。如果存在,请原谅我……如果是这样,请指出我正确的方向。
最佳解决思路
感谢以前的答案,他们大部分都得到了我,但为了让事情有效,我不得不结合几个地方的指令,所以我想我会编写一套完整的命令。
仅供参考我正在运行Ubuntu 14.04,Apache 2.4,并且默认运行modphp,之前的说明也省去了禁用modphp的需要。
我还发现http://blog.starcklin.com/2013/08/install-mod-fastcgi-and-php5-fpm-on-ubuntu/非常有用且直截了当。
只需在终端中依次运行以下命令即可。
首先安装必要的软件包(我省略了php5,因为它假定它已经安装,首次安装时重新添加)。另请注意,从Apache 2.4开始,您可以使用event-mpm而不是worker查看http://www.vps.net/blog/2013/04/08/apache-mpms-prefork-worker-and-event/。我的例子显示了worker,但是如果您更愿意使用它,只需用worker替换单词worker。
sudo apt-get install apache2-mpm-worker
sudo apt-get install libapache2-mod-fastcgi php5-fpm
现在启用所需的mod,并禁用不需要的mod。
sudo a2dismod php5 mpm_prefork
sudo a2enmod actions fastcgi alias mpm_worker
创建php5.fcgi文件并授予webserver使用它的权限。
sudo touch /usr/lib/cgi-bin/php5.fcgi
sudo chown -R www-data:www-data /usr/lib/cgi-bin
为php5-fpm创建一个全局配置
sudo nano /etc/apache2/conf-available/php5-fpm.conf
粘贴在下面(我们将使用套接字而不是IP地址)
<IfModule mod_fastcgi.c>
AddHandler php5.fcgi .php
Action php5.fcgi /php5.fcgi
Alias /php5.fcgi /usr/lib/cgi-bin/php5.fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5.fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization -idle-timeout 3600
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</IfModule>
启用php5-fpm conf
sudo a2enconf php5-fpm
重启apache和fpm
sudo service apache2 restart && sudo service php5-fpm restart
根据其他说明,将以下内容粘贴到Web服务器上的新可浏览php文件中。
<?php phpinfo();
在Web浏览器中打开刚刚编辑的文件,如果在Server API旁边看到”FPM/FastCGI”,那么现在使用FastCGI为PHP服务!
次佳解决思路
我终于找到了一个很好的教程,专门做这个。我将概述我已经安装了LAMP堆栈的步骤,但完整的教程可以找到here。
注意新的:
在本教程中,首先切换到root用户:
sudo su
在我的情况下,我简单地为这些命令添加了前缀sudo
而不是切换用户,所以我将以这种方式记录我的步骤。
开始
第一步:安装Apache Worker MPM(Multi-Procesing模块)
sudo apt-get install apache2-mpm-worker
这取代了我安装的prefork,这是安装Apache时的默认设置。
第2步:安装PHP5和必要的模块
sudo apt-get install libapache2-mod-fastcgi php5-fpm php5
此时,您可能会在安装’libapache2-mod-fastcgi’时遇到错误:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package libapache2-mod-fastcgi is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or is only available from another source
E: Package 'libapache2-mod-fastcgi' has no installation candidate
这部分不在上面的教程中
要协调这一点,必须将multiverse
存储库添加到apt源。
去做这个:
sudo nano /etc/apt/sources.list
我附加了以下几行:
deb http://archive.ubuntu.com/ubuntu precise multiverse
deb http://archive.ubuntu.com/ubuntu precise-updates multiverse
deb http://security.ubuntu.com/ubuntu precise-security multiverse
在这种情况下,precise
指的是我的Ubuntu版本“Precise Pangolin”。
所以现在,保存这些更改并返回终端:
sudo apt-get update
然后再次:
sudo apt-get install libapache2-mod-fastcgi php5-fpm php5
这应该(应该)现在有效。
现在启用这些Apache模块:
sudo a2enmod actions fastcgi alias
重启apache
sudo service apache2 restart
第3步:Apache配置
要使Apache与PHP-FPM一起使用,我们需要以下配置:
<IfModule mod_fastcgi.c>
AddHandler php5-fcgi .php
Action php5-fcgi /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
#directory statement mult be on multiple lines
</IfModule>
Note:
If you’re using an older version of Apache (2.3.x or older), leave out the line
<Directory /usr/lib/cgi-bin> Require all granted </Directory>
You can check your installed version with the command
apache2 -version
您可以将其置于全局Apache配置中(因此它为所有vhost启用),例如在/etc/apache2/conf.d/php5-fpm.conf
中(此文件不存在,因此您必须创建它),或者您可以将它放在应使用PHP-FPM的每个vhost中。
我选择走全球路线,所以:
sudo nano /etc/apache2/conf.d/php5-fpm.conf
粘贴在上面的代码块中,然后保存,退出。这个新文件将由Apache的默认配置自动加载,该配置加载/etc/apache2/conf.d/
目录中的所有文件。
重启Apache:
sudo service apache2 restart
现在在文档根/var/www
中创建以下PHP文件:
sudo nano /var/www/info.php
加:
<?php phpinfo();
保存&出口。
现在我们在浏览器中调用该文件(例如http://your-server-ip/info.php
)
在顶部的Server API下,您应该看到FPM/FastCGI
。
成功!
有关如何更改PHP-FPM以使用unix套接字而不是默认TCP端口或如何为单个虚拟主机而不是所有虚拟主机配置此更多信息,请参阅顶部链接的源教程。