本文介绍如何在Debian 7系统上配置和安装使用Apache mod_fastcgi和PHP-FPM。 Apache的默认配置使用mod_php而不是mod_fastcgi,mod_php使用大量的系统资源。
mod_php使用更多资源的主要原因是因为它即使为非PHP文件(如纯HTML和JavaScript文件)也加载。 FastCGI进程管理器(PHP-FPM)通过强制Web服务器充当代理并且仅将以php文件扩展名结尾的文件传递给PHP-FPM来帮助减少所使用的系统资源量。
此外,使用PHP-FPM允许将每个虚拟主机配置为作为单独用户运行PHP代码。 以前,这只能通过使用suPHP。
安装mod_fastcgi和PHP-FPM
mod_fastcgi和PHP-FPM都在Debian 7官方软件库,安装方法如下:
1.更新软件库
- sudo apt-get update && sudo apt-get upgrade --show-upgraded
2.看看mod_fastcgi是否可用。 默认情况下,Debian 7不包括安装mod_fastcgi所需的软件库,因为它是一个contrib模块,并且是non-free的(就Debian的许可限制而言)。
- sudo apt-cache search libapache2-mod-fastcgi
3.如果不可用,您需要编辑/etc/apt/sources.list文件,以允许将contrib和non-free软件加载到软件库列表中。 您的源文件应如下所示:
/etc/apt/sources.list:
- deb http://ftp.es.debian.org/debian stable main contrib non-free
- deb-src http://ftp.es.debian.org/debian stable main contrib non-free
-
- deb http://ftp.debian.org/debian/ wheezy-updates main contrib non-free
- deb-src http://ftp.debian.org/debian/ wheezy-updates main contrib non-free
-
- deb http://security.debian.org/ wheezy/updates main contrib non-free
- deb-src http://security.debian.org/ wheezy/updates main contrib non-free
4.更新apt-get软件库
- sudo apt-get update && sudo apt-get upgrade --show-upgraded
5.安装mod_fastcgi和PHP-FPM
- sudo apt-get install libapache2-mod-fastcgi php5-fpm
配置Apache使用PHP-FPM
我们现在将配置Apache将PHP文件的所有请求(带有PHP文件扩展名)通过FastCGI传递给PHP wrapper。
1.激活mod_actions模块
2.配置PHP-FPM使用UNIX套接字而不是TCP。 在这个命令中,我们将使用grep来确定套接字是否已被使用。
- sudo grep -E '^\s*listen\s*=\s*[a-zA-Z/]+' /etc/php5/fpm/pool.d/www.conf
你会看到如下输出:
listen = /var/run/php5-fpm.sock
如果你看到如上输出,请跳到第6步。
3.如果没有看到以上输出,更改如下文件:
etc/php5/fpm/pool.d/www.conf
- listen = /var/run/php5-fpm.sock
4.找到如下行并删除
/etc/php5/fpm/pool.d/www.conf:
5.重启php5-fpm生效配置
- sudo service php5-fpm restart
6.检查Apache版本
7.根据Apache版本,编辑对应的文件
Apache 2.2或更早版本
/etc/apache2/mods-enabled/fastcgi.conf:
- <IfModule mod_fastcgi.c>
- AddType application/x-httpd-fastphp5 .php
- Action application/x-httpd-fastphp5 /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
- </IfModule>
Apache 2.4或更高版本
/etc/apache2/mods-enabled/fastcgi.conf
- <IfModule mod_fastcgi.c>
- AddType application/x-httpd-fastphp5 .php
- Action application/x-httpd-fastphp5 /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
- <Directory /usr/lib/cgi-bin>
- Require all granted
- </Directory>
- </IfModule>
8.保存文件并检查配置错误
- sudo apache2ctl configtest
9.只要你看到Syntax OK输出,重启Apache服务
- sudo service apache2 restart
如果没有看到Syntax OK,检查下配置哪里出错了
10.通过创建和访问具有phpinfo()显示的页面来检查PHP是否正常工作。 以下命令将在/var/www(Apache中网站的默认目录)中创建info.php:
- sudo echo "<?php phpinfo(); ?>" > /var/www/info.php