阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

FastCGI模式编译安装LAMP+XCache

148次阅读
没有评论

共计 7524 个字符,预计需要花费 19 分钟才能阅读完成。

一、php 的工作模式

php 在 lamp 环境下共有三种工作模式:CGI 模式、apache 模块、FastCGI 模式。CGI 模式下运行 PHP,性能不是很好。作为 apache 的模块方式运行,在上一篇日志中编译安装 lamp 已经介绍。FastCGI 的方式和 apache 模块的不同点在于:FastCGI 方式 PHP 是一处独立的进程,所有 PHP 子进程都由 PHP 的一个叫作 php-fpm 的组件负责管理;而 apache 模块化方式运行的 PHP,则是 apache 负责调用 PHP 完成工作。PHP 的 FastCGI 方式性能要比 apache 模块化方式强很多,今天我们以 FastCGI 方式编译安装 lamp。

推荐阅读

Ubuntu 13.04 安装 LAMP\Vsftpd\Webmin\phpMyAdmin 服务及设置 http://www.linuxidc.com/Linux/2013-06/86250.htm

CentOS 5.9 下编译安装 LAMP(Apache 2.2.44+MySQL 5.6.10+PHP 5.4.12) http://www.linuxidc.com/Linux/2013-03/80333p3.htm

RedHat 5.4 下 Web 服务器架构之源码构建 LAMP 环境及应用 PHPWind http://www.linuxidc.com/Linux/2012-10/72484p2.htm

LAMP 源码环境搭建 WEB 服务器 Linux+Apache+MySQL+PHP http://www.linuxidc.com/Linux/2013-05/84882.htm

二、编译环境及各软件版本

以下为本次编译环境及各软件版本:

linuxweb 服务器 phpmysqlxcache
CentOS 6.4httpd-2.4.9php-5.4.26mysql-5.5.33-linux2.6-x86_64xcache-3.0.3

xcache 是一款 PHP 的加速器,用于提高 PHP 的执行效率。

三、编译安装 LAMP

1、编译安装 apache(请参考上一篇文章)

2、编译安装 mysql(请参考上一篇文章)

3、FastCGI 方式安装 php

(1)、解决依赖关系

请配置好 yum 源后执行如下命令:

# yum -y groupinstall “Desktop Platform Development”

# yum -y install bzip2-devel libmcrypt-devel

# yum -y groupinstall “X Software Development”

如果想让编译的 php 支持 mcrypt 扩展,还需安装以下软件包:

libmcrypt-2.5.7-5.el5.i386.rpm

libmcrypt-devel-2.5.7-5.el5.i386.rpm

mhash-0.9.9-1.el5.centos.i386.rpm

mhash-devel-0.9.9-1.el5.centos.i386.rpm

(2)、编译安装 php-5.4.26

# tar xf php-5.4.26.tar.bz2

# cd php-5.4.26

# ./configure –prefix=/usr/local/php –with-mysql=/usr/local/mysql –with-openssl –with-mysqli=/usr/local/mysql/bin/mysql_config –enable-mbstring –with-freetype-dir –with-jpeg-dir –with-png-dir –with-zlib –with-libxml-dir=/usr –enable-xml  –enable-sockets –enable-fpm –with-mcrypt  –with-config-file-path=/etc –with-config-file-scan-dir=/etc/php.d –with-bz2

–enable-fpm:开启 php-fpm 组件用于管理 PHP

# make

# make intall

(4)、为 php 提供配置文件,配置文件在软件解压后的目录内:

cp php.ini-production /etc/php.ini

(5)、配置 php-fpm,为 php-fpm 提供 SysV init 脚本,并将其添加至服务列表:

# cp sapi/fpm/init.d.php-fpm  /etc/rc.d/init.d/php-fpm

# chmod +x /etc/rc.d/init.d/php-fpm

# chkconfig –add php-fpm

# chkconfig php-fpm on

(6)、为 php-fpm 提供配置文件:

# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

编辑 php-fpm 的配置文件:

# vim /usr/local/php/etc/php-fpm.conf

配置 fpm 的相关选项为你所需要的值,并启用 pid 文件(如下最后一行):

pm.max_children = 50

pm.start_servers = 5

pm.min_spare_servers = 2

pm.max_spare_servers = 8

pid = /usr/local/php/var/run/php-fpm.pid

(7)、接下来就可以启动 php-fpm 了:

# service php-fpm start

使用如下命令来验正(如果此命令输出有中几个 php-fpm 进程就说明启动成功了):

# ps aux | grep php-fpm

默认情况下,fpm 监听在 127.0.0.1 的 9000 端口,也可以使用如下命令验正其是否已经监听在相应的套接字:

# netstat -tnlp | grep php-fpm

FastCGI 模式编译安装 LAMP+XCache

(8)、启用 httpd 的相关模块。在 Apache httpd 2.4 以后已经专门有一个模块针对 FastCGI 的实现,此模块为 mod_proxy_fcgi.so,它其实是作为 mod_proxy.so 模块的扩充,因此,这两个模块都要加载:

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

(9)、配置虚拟主机支持使用 fcgi,在相应的虚拟主机中添加类似如下两行。

ProxyRequests Off

ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1

ProxyRequests Off:关闭正向代理

ProxyPassMatch:把以.php 结尾的文件请求发送到 php-fpm 进程,php-fpm 至少需要知道运行的目录和 URI,所以这里直接在 fcgi://127.0.0.1:9000 后指明了这两个参数,其它的参数的传递已经被 mod_proxy_fcgi.so 进行了封装,不需要手动指定。

例如,你在地址栏上输入的地址为,http://www.linuxidc.com/blog/admin/index.php,其实它是指向了另一个地址,fcgi://127.0.0.1:9000/blog/admin/index.php。

(10)、编辑 apache 配置文件 httpd.conf,让 apache 能识别 php 格式的页面,并支持 php 格式的主页。

添加如下二行:

AddType application/x-httpd-php  .php

AddType application/x-httpd-php-source  .phps

定位至 DirectoryIndex index.html 修改为:

DirectoryIndex  index.php  index.html

4、编译安装 xcache

(1)、解压软件包

# tar xf xcache-3.0.3.tar.gz

# cd xcache-3.0.3

 (2)、执行 phpize,给 PHP 编译一个新的模块

# /usr/local/php/bin/phpize

 (3)、编译安装

# ./configure –enable-xcache –with-php-config=/usr/local/php/bin/php-config

# make && make install

注意:编译完成后,会有一个类似于下图所示的路径,请把此路径复制保存,配置文件里要用到此项:

FastCGI 模式编译安装 LAMP+XCache

/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/

 (4)、将 xcache 提供的样例配置导入 php.ini,xcache.ini 文件在 xcache 的源码目录中:

# mkdir /etc/php.d

# cp xcache.ini /etc/php.d

(5)、接下来编辑 /etc/php.d/xcache.ini,找到 extension 开头的行,修改为如下行,使用刚才复制的路径:

extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so

注意:如果 php.ini 文件中有多条 extension 指令行,要确保此新增的行排在第一位。

 (6)、新增虚拟主机测试:

 <VirtualHost *:80>

    ServerAdmin admin@linuxidc.com

    DocumentRoot “/var/www/html/linuxidc.com”

    ServerName www.linuxidc.com

    ServerAlias www.linuxidc.com

    ErrorLog “logs/linuxidc.com.error_log”

    CustomLog “logs/linuxidc.com.access_log” common

    ProxyRequests Off

    ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/linuxidc.com/$1

</VirtualHost>

FastCGI 模式编译安装 LAMP+XCache

四、环境测试

    lamp 的安装已经完成了,我们弄个网站测试一下吧!

(1)、编辑虚拟主机:

FastCGI 模式编译安装 LAMP+XCache

(2)、新建 joomla 网站数据库及用户

(3)、安装网站程序

FastCGI 模式编译安装 LAMP+XCache 

(4)、使用 httpd 自带的性能测试工具 ab,测试一下服务器性能,参数和上次一样:

ab -c 5 -n 50 http://www.linuxidc.com /index.php

 FastCGI 模式编译安装 LAMP+XCache

上次是 2,这次是 9,性能翻了 4 倍多,性能很强,有木有!!

一、php 的工作模式

php 在 lamp 环境下共有三种工作模式:CGI 模式、apache 模块、FastCGI 模式。CGI 模式下运行 PHP,性能不是很好。作为 apache 的模块方式运行,在上一篇日志中编译安装 lamp 已经介绍。FastCGI 的方式和 apache 模块的不同点在于:FastCGI 方式 PHP 是一处独立的进程,所有 PHP 子进程都由 PHP 的一个叫作 php-fpm 的组件负责管理;而 apache 模块化方式运行的 PHP,则是 apache 负责调用 PHP 完成工作。PHP 的 FastCGI 方式性能要比 apache 模块化方式强很多,今天我们以 FastCGI 方式编译安装 lamp。

推荐阅读

Ubuntu 13.04 安装 LAMP\Vsftpd\Webmin\phpMyAdmin 服务及设置 http://www.linuxidc.com/Linux/2013-06/86250.htm

CentOS 5.9 下编译安装 LAMP(Apache 2.2.44+MySQL 5.6.10+PHP 5.4.12) http://www.linuxidc.com/Linux/2013-03/80333p3.htm

RedHat 5.4 下 Web 服务器架构之源码构建 LAMP 环境及应用 PHPWind http://www.linuxidc.com/Linux/2012-10/72484p2.htm

LAMP 源码环境搭建 WEB 服务器 Linux+Apache+MySQL+PHP http://www.linuxidc.com/Linux/2013-05/84882.htm

二、编译环境及各软件版本

以下为本次编译环境及各软件版本:

linuxweb 服务器 phpmysqlxcache
CentOS 6.4httpd-2.4.9php-5.4.26mysql-5.5.33-linux2.6-x86_64xcache-3.0.3

xcache 是一款 PHP 的加速器,用于提高 PHP 的执行效率。

三、编译安装 LAMP

1、编译安装 apache(请参考上一篇文章)

2、编译安装 mysql(请参考上一篇文章)

3、FastCGI 方式安装 php

(1)、解决依赖关系

请配置好 yum 源后执行如下命令:

# yum -y groupinstall “Desktop Platform Development”

# yum -y install bzip2-devel libmcrypt-devel

# yum -y groupinstall “X Software Development”

如果想让编译的 php 支持 mcrypt 扩展,还需安装以下软件包:

libmcrypt-2.5.7-5.el5.i386.rpm

libmcrypt-devel-2.5.7-5.el5.i386.rpm

mhash-0.9.9-1.el5.centos.i386.rpm

mhash-devel-0.9.9-1.el5.centos.i386.rpm

(2)、编译安装 php-5.4.26

# tar xf php-5.4.26.tar.bz2

# cd php-5.4.26

# ./configure –prefix=/usr/local/php –with-mysql=/usr/local/mysql –with-openssl –with-mysqli=/usr/local/mysql/bin/mysql_config –enable-mbstring –with-freetype-dir –with-jpeg-dir –with-png-dir –with-zlib –with-libxml-dir=/usr –enable-xml  –enable-sockets –enable-fpm –with-mcrypt  –with-config-file-path=/etc –with-config-file-scan-dir=/etc/php.d –with-bz2

–enable-fpm:开启 php-fpm 组件用于管理 PHP

# make

# make intall

(4)、为 php 提供配置文件,配置文件在软件解压后的目录内:

cp php.ini-production /etc/php.ini

(5)、配置 php-fpm,为 php-fpm 提供 SysV init 脚本,并将其添加至服务列表:

# cp sapi/fpm/init.d.php-fpm  /etc/rc.d/init.d/php-fpm

# chmod +x /etc/rc.d/init.d/php-fpm

# chkconfig –add php-fpm

# chkconfig php-fpm on

(6)、为 php-fpm 提供配置文件:

# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

编辑 php-fpm 的配置文件:

# vim /usr/local/php/etc/php-fpm.conf

配置 fpm 的相关选项为你所需要的值,并启用 pid 文件(如下最后一行):

pm.max_children = 50

pm.start_servers = 5

pm.min_spare_servers = 2

pm.max_spare_servers = 8

pid = /usr/local/php/var/run/php-fpm.pid

(7)、接下来就可以启动 php-fpm 了:

# service php-fpm start

使用如下命令来验正(如果此命令输出有中几个 php-fpm 进程就说明启动成功了):

# ps aux | grep php-fpm

默认情况下,fpm 监听在 127.0.0.1 的 9000 端口,也可以使用如下命令验正其是否已经监听在相应的套接字:

# netstat -tnlp | grep php-fpm

FastCGI 模式编译安装 LAMP+XCache

(8)、启用 httpd 的相关模块。在 Apache httpd 2.4 以后已经专门有一个模块针对 FastCGI 的实现,此模块为 mod_proxy_fcgi.so,它其实是作为 mod_proxy.so 模块的扩充,因此,这两个模块都要加载:

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

(9)、配置虚拟主机支持使用 fcgi,在相应的虚拟主机中添加类似如下两行。

ProxyRequests Off

ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1

ProxyRequests Off:关闭正向代理

ProxyPassMatch:把以.php 结尾的文件请求发送到 php-fpm 进程,php-fpm 至少需要知道运行的目录和 URI,所以这里直接在 fcgi://127.0.0.1:9000 后指明了这两个参数,其它的参数的传递已经被 mod_proxy_fcgi.so 进行了封装,不需要手动指定。

例如,你在地址栏上输入的地址为,http://www.linuxidc.com/blog/admin/index.php,其实它是指向了另一个地址,fcgi://127.0.0.1:9000/blog/admin/index.php。

(10)、编辑 apache 配置文件 httpd.conf,让 apache 能识别 php 格式的页面,并支持 php 格式的主页。

添加如下二行:

AddType application/x-httpd-php  .php

AddType application/x-httpd-php-source  .phps

定位至 DirectoryIndex index.html 修改为:

DirectoryIndex  index.php  index.html

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计7524字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中