当前位置: 首页>>技术问答>>正文


如何配置Apache通过终端在Ubuntu 12.04上运行PHP作为FastCGI?

, , ,

问题描述

我是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端口或如何为单个虚拟主机而不是所有虚拟主机配置此更多信息,请参阅顶部链接的源教程。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2551.html,未经允许,请勿转载。