基于端口号实现 php-fpm 的LAMP

实现php-fpm模式
对于php请求,httpd可以用模块和fastcgi两种方式实现动态程序的支持。

fastcgi模式:php处理请求,不再由http服务器自身进行管理,http服务器把http协议转化为factcgi协议,通过socket发送给fastcgi专用进程处理php程序
从稳定性上看,fastcgi是以独立的进程池运行来程序,如果单独一个进程死掉,系统可以很轻易的丢弃,然后重新分配新的进程来运行逻辑。从安全性上看,fastcgi和http的server完全独立, fastcgi怎么down也不会把server搞垮。
从性能上看,fastcgi把动态逻辑的处理从http server中分离出来,大负荷的IO处理还是留给宿主server,这样hpttd server可以一心一意作IO,对于一个普通的动态网页来说,逻辑处理可能只有一小部分,大量的图片等静态IO处理完全不需要逻辑程序的参与。从扩展性上讲,fastcgi是一个中立的技术标准,完全可以支持任何语言写的处理程序,如php,java,python等。而php-fpm就是用来支持php的fastcgi服务器。


httpd+php结合的方式:
module:   php   基于模块,apache换成nginx就不支持。
fastcgi:  php-fpm 基于软件

各种OS版本对fastcgi的支持
CentOS 8: 默认使用fpm模式
	httpd-2.4:默认rpm包支持fcgi模块
	php包默认使用fpm模式
	php-fpm包:专用于将php运行于fpm模式
CentOS 7:
	httpd-2.4:默认rpm包支持fcgi模块
	php-fpm包:专用于将php运行于fpm模式
CentOS 6:
	PHP-5.3.2之前:默认不支持fpm机制;需要自行打补丁并编译安装
	httpd-2.2:默认不支持fcgi协议,需要自行编译此模块
	解决方案:编译安装httpd-2.4, php-5.3.3+



实验:基于端口号实现 php-fpm 的LAMP

两台主机:一台A apache+php-fpm, ip:100
         一台B mariadb  ip:110
         项目: wordpress

1 A 安装httpd 
	yum install httpd  php-fpm php-mysql 
	useradd -s /sbin/nologin apache 
	
2 A 设置站点ACL权限,主要是用于生成wordpress/wp-config.php文件。
	tar xvf wordpress-5.0.4-zh_CN.tar.gz -C /var/www/html/
	setfacl -Rm u:apache:rwx /var/www/html/wordpress 
	  
3 B 安装数据库并账号授权
	yum install mariadb-server
	mysql> create database wpdb;
	mysql> grant all on wpdb.* to wpuser@'192.168.80.%' identified by '123456';
	
4.  A 配置php-rpm配置文件(基本不用设置)
    fcgi服务配置文件:/etc/php-fpm.conf, /etc/php-fpm.d/*.conf	
  vim /etc/php-fpm.d/www.conf
		连接池: pm = static|dynamic
		static:固定数量的子进程;pm.max_children
		dynamic:子进程数量以动态模式管理,默认值
		pm.max_children = 50
		pm.start_servers =5
		pm.min_spare_servers =5
		pm.max_spare_servers =35
		pm.max_requests = 500 每个进程可以处理的请求数
	确保运行php-fpm进程的用户对session目录有读写权限(测试没有此文件)
		mkdir /var/lib/php/session
		chown apache.apache /var/lib/php/session

5. A配置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
	

5. 方法1.设置:添加对php页面的支持
配置httpd,添加/etc/httpd/conf.d/fcgi.conf配置文件,
		DirectoryIndex index.php
		ProxyRequests Off
		ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
			
方法2.直接方式
vim /app/httpd/conf/httpd.conf 
	User apache      #关键,如果是 Daemon启动不了,而虚拟主机可以
	Group apache
	ProxyRequests Off
	ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
	<IfModule dir_module>
		DirectoryIndex  index.php index.html
	</IfModule>
	
方法3.虚拟主机方式
vim /app/httpd/conf.d/fcgi.conf 
<VirtualHost *:80>
        DocumentRoot  "/var/www/html/"
        #ServerName www.abc.com
		ProxyRequests Off
		ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
        <Directory "/var/www/html/">
            Options none
            AllowOverride none
            Require all granted
        </Directory>
</VirtualHost>

<IfModule dir_module>
    DirectoryIndex  index.php index.html
</IfModule>


6.在 var/www/html下写一个index.php 用最简单的phpinfo()函数。
<?php 
 phpinfo();
?>		

7.客户端192.168.80.100/wordpress/浏览器登录,使用账号登录生成wp-config.php文件和数据库文件。

  

posted @ 2022-08-22 20:41  yuanbangchen  阅读(35)  评论(0编辑  收藏  举报