基于端口号实现 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文件和数据库文件。