LAMP组合 PHP以FPM模式工作

fastcgi:php-5.3.3 之后的版本自带了fpm组件,

fpm组件能把PHP解释器工作为守护进程,并提供类似prefork模式的应用,它能够接收来自前端httpd,http-proxy-fcgi反向代理用户对动态内容请求至后端的fastcgi server

构建分离式LAMP需要注意的地方:

1、动态资源部署在应用程序服务器上(php-fpm),静态资源部署在Web服务器上

2、php以fpm工作方式时,它不会被编译成httpd模块,因此,编译时无须使用--with-apxs2=/PATH

参数,httpd的主配置文件中也无须再 LoadModule php5_module

把php编译为fpm工作模式时需要开启的重要的参数 --enable-fpm

3、编译php时,需连接mysql或其他数据库管理系统时,需要启用其相关的驱动模块。

4、php与mysql不在同一节点,连接mysql的用户账号需要有远程访问权限。

编译安装php

#tar xf php-5.4.0.tar.bz2

#cd php-5.4.0

#./configure --prefix=/usr/local/php --with-config-file-path=/etc/php/php.ini --with-config-file-scan-dir=/etc/php.d/ --enable-mbstring --with-freetype-dir--with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml--with-mcrypt --with-bz2 --with-openssl --with-curl --with-xsl --with-iconv=/usr/local/libiconv --enable-sockets --enable-short-tags --enable-static --enable-gd-native-ttf --enable-ftp --enable-maintainer-zts --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-fpm

#make && make install

为php提供配置文件

#mkdir /etc/{php,php.d} –pv

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

配置php-fpm

#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

为php-fpm提供配置文件

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

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

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

listen = 192.168.100.114:9000

pm.max_children = 50   ###静态方式下开启的php-fpm进程数量

pm.start_servers = 5   ###动态方式下的起始php-fpm进程数量

pm.min_spare_servers = 2   ###动态方式下的最小php-fpm进程数量

pm.max_spare_servers = 8   ###动态方式下的最大php-fpm进程数量

pid = /usr/local/php/var/run/php-fpm.pid    ###PID文件路径

说明:如果dm设置为static,那么其实只有pm.max_children这个参数生效。系统会开启设置数量的php-fpm进程。

如果dm设置为 dynamic,那么pm.max_children参数失效,后面3个参数生效。

系统会在php-fpm运行开始的时候启动pm.start_servers个php-fpm进程,然后根据系统的

需求动态在pm.min_spare_servers 和pm.max_spare_servers之间调整php-fpm进程数。

当php-fpm工作为独立守护进程时,默认监听在127.0.0.1:9000 端口上,即默认至允许本机上的

httpd进程访问,当前环境是httpd和php分别在不同服务器安装,因此要修改监听端口,让其他主机

能够访问。

各自以fast-cgi方式工作时,前端的Web服务器必须以fcgi模块跟后端主机进行通信。

启动php-fpm

#service php-fpm start

验证是否启动成功

#netstat –tnlp|grep php-fpm

tcp        0      0 192.168.100.114:9000        0.0.0.0:*                   LISTEN      32873/php-fpm

httpd相关配置

1、启用httpd的相关模块

在Apache httpd2.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

开启虚拟主机开关

Include /etc/httpd/extra/httpd-vhosts.conf

2、配置虚拟主机支持使用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进行了封装,不需要手动指定。

需要注意的问题:

动态资源需要放在PHP服务器上,当httpd服务器接收到客户端浏览器请求的是动态页面内容时,

会把请求发往指定的PHP服务器上处理,但是静态页面例如:html、jpg等还是会在httpd服务器上

处理,不然图片等信息可能就无法显示,因此在部署网站时,需要把网站的资源分开部署在两边。

分别在HTTPD服务器和PHP服务器上各自创建同样路径的目录,不然启动httpd服务时会报错。

编辑虚拟主机配置文件:

# vim /etc/httpd/extra/httpd-vhosts.conf

<VirtualHost *:80>

ServerAdmin [email protected]

DocumentRoot "/data/web/www/"

ServerName phpinfo.luanyh.com

ServerAlias luanyh.com

ProxyRequests Off

ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.100.114:9000/data/web/www/$1

ErrorLog "/usr/local/apache/logs/phpinfo-error_log"

CustomLog"/usr/local/apache/logs/phpinfo-access_log" common

</VirtualHost>

<Directory "/data/web/www/">

AllowOverride None

Options None

Require all granted

</Directory>

<IfModule dir_module>

DirectoryIndex index.php index.html

</IfModule>

创建虚拟主机主页(在PHP Server上),测试httpd能否支持php

# vim /data/web/www/index.php

编辑如下内容:

<?php

phpinfo();

?>

客户端浏览器上测试:

此时,Server API 工作模式为:FPM/FastCGI

时间: 2024-11-05 06:44:01

LAMP组合 PHP以FPM模式工作的相关文章

centos7部署LAMP+xcache (php fpm模式)

centos7通过RPM包部署分离式LAMP+xcache (php-fpm) 要求: rpm包部署LAMP,并且需要将LAMP环境进行分离式的部署 (1)一个虚拟主机提供wordpress 一个虚拟主机提供phpMyadmin (2)利用xcache来加速页面速度 环境: 此处用三台主机分别分离提供不同服务: 192.168.1.104------->提供httpd服务 192.168.1.110------->提供mariadb-server服务 192.168.1.113-------&

LAMP组合基础知识 WordPress、phpmyadmin安装

一.LAMP组合基础知识 二.WordPress.phpmyadmin安装 LAMP linux Apache(httpd) MySQL php.Python.perl.ruby等 A与P的组合: CGI:common gateway interface 通用网关接口,可以理解为一个简化版的http协议,用于web服务器与php应用进程之间的通讯     client -->web server-->php-->web server--client:php进程生成和销毁都是由web se

通过LAMP组合,基于heartbeat v2 crm实现HA

Heartbeat的定义  Heartbeat 项目是 Linux-HA 工程的一个组成部分,也是目前开源HA项目中最成功的一个例子,Linux-HA的全称是High-Availability Linux,这个开源项目的目标是:通过社区开发者的共同努力,提供一个增强linux可靠性(reliability).可用性 (availability)和可服务性(serviceability)(RAS)的群集解决方案,它实现了一个高可用集群系统.心跳服务和集群通信是 高可用集群的两个关键组件,在 Hea

设计模式的征途—9.组合(Composite)模式

树形结构在软件中随处可见,比如操作系统中的目录结构,公司组织结构等等,如何运用面向对象的方式来处理这种树形结构是组合模式需要解决的问题.组合模式通过一种巧妙的设计方案来使得用户可以一致性地处理整个树形结构或者树形结构的一部分,也可以一致地处理树形结构中的叶子节点(不包含子节点的节点)和容器节点(包含子节点的节点),本次我们就将学习一下用来处理树形结构的组合模式. 组合模式(Composite) 学习难度:★★★☆☆ 使用频率:★★★★☆ 一.杀毒软件的框架设计 1.1 需求介绍 M公司开发部想要

深入理解PHP之:Nginx 与 FPM 的工作机制

完全转载(算是一个收藏了) https://zhuanlan.zhihu.com/p/20694204 网络上有很多关于如何配置 Nginx + FPM 的文章,但它们更多从操作的角度出发,告诉我们怎么做,但却没有告诉我们为什么要这么做,本文从 Nginx 与 FPM 的工作机制出发,探讨配置背后的原理,让我们真正理解 Nginx 与 PHP 是如何协同工作的. 要说 Nginx 与 PHP 是如何协同工作的,首先得说 CGI (Common Gateway Interface) 和 FastC

组合(Composite)模式 *

组合(Composite)模式:将对象组合树形结构以表示‘部分-整体’的层次结构. 组合模式使得用户对单个对象和组合对象具有一致性 /* * 抽象构件(Component)角色:这是一个抽象角色,它给参与组合的对象规定一个接口.这个角色给出共有接口及其默认行为. * 树叶构件(Leaf)角色:代表参加组合的树叶对象.一个树叶对象没有下级子对象. * 树枝构件(Composite)角色:代表参加组合的有子对象的对象,并给出树枝构件对象的行为. */ 基础代码: // 创建一个树结构 Composi

Centos6部署lamp: httpd2.4+fpm模式

系统: Centos6 httpd版本: 2.4 使用event工作模式 php版本: 5.4.26 mariadb版本: 5.5.46 xcache版本: 3.0.3 httpd:     192.168.1.101 mariadb:  192.168.1.102 php:      192.168.1.103 安装顺序: php最后安装 注意事项: 1.在httpd2.2上使用fcgi功能,需要额外打补丁 一.安装httpd2.4: 在192.168.1.101上操作   1.    准备源

Centos7部署lamp: httpd2.4+fpm模式

httpd:      192.168.1.200 mariadb:  192.168.1.202 php:      192.168.1.203 使用yum安装 一.安装并配置httpd: 在192.168.1.200上操作 yum install -y httpd vim /etc/httpd/conf.modules.d/00-mpm.conf    //启用event模式   vim /etc/httpd/conf/httpd.conf      //配置httpd       http

函数组合的 N 种模式

随着以函数即服务(Function as a Service)为代表的无服务器计算(Serverless)的广泛使用,很多用户遇到了涉及多个函数的场景,需要组合多个函数来共同完成一个业务目标,这正是微服务"分而治之,合而用之"的精髓所在.本文以阿里云函数计算为例,试图全面介绍函数组合的常见模式和使用场景,希望有助于选择合适的解决方案. 虽然本文主要介绍的是函数组合,但是基本思想也可用于服务组合. 函数同步调用函数 在这种模式里,函数直接调用 InvokeFunction 同步 API