php-fpm

php后端模式,php-fpm以及php-cgi, fast-cgi,以及与nginx的关系

蹲街弑〆低调 提交于 2020-05-05 14:47:16
关于cgi是什么,fast-cgi是什么,php-cgi是什么,fast-cgi是什么,下面这篇讲的很清楚: https://segmentfault.com/q/1010000000256516 另外,nginx本身不处理php请求,它是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被nginx。 http://www.nginx.cn/231.html 先看第一篇 首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者。 web server(比如说nginx)只是内容的分发者。比如,如果请求 /index.html ,那么web server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。好了,如果现在请求的是 /index.php ,根据配置文件,nginx知道这个不是静态文件,需要去找PHP解析器来处理,那么他会把这个请求简单处理后交给PHP解析器。Nginx会传哪些数据给PHP解析器呢?url要有吧,查询字符串也得有吧,POST数据也要有,HTTP header不能少吧,好的,CGI就是规定要传哪些数据、以什么样的格式传递给后方处理这个请求的协议。仔细想想,你在PHP代码中使用的用户从哪里来的。 当web server收到 /index.php 这个请求后

Nginx + fastcgi + php 的原理与关系

风流意气都作罢 提交于 2020-05-05 14:46:35
CGI:Common Gateway Interface 公共网关接口,web服务器和脚本语言通信的一个标准、接口、协议【协议】 FastCGI:CGI协议的升级版【协议】 PHP-CGI: 实现了CGI接口协议的PHP脚本解析器【程序】 PHP-FPM: 管理和调度php-cgi进程,进而实现了FastCGI接口协议的程序【程序】 问题:CGI对每个请求会parse一遍对应脚本的配置文件(如php.ini), 加载配置和扩展,初始化执行环境,性能非常差,所有有了下面的流程: 那么实现Fastcgi协议的程序,如PHP-FPM是怎么做的呢?首先,Fastcgi会先启一个master进程,解析配置文件,初始化执行环境,然后再启动多个worker进程,这个worker就是php-cgi。当请求过来时,master会传递给一个worker,然后立即可以接受下一个请求。这样就避免了重复的劳动,效率自然是高。而且当worker不够用时,master可以根据配置预先启动几个worker等着,比如20worker,当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是fastcgi的对进程的管理。 结合 用户对动态PHP网页访问过程来理解 第一步:用户将http请求发送给nginx服务器 第二步:nginx会根据用户访问的URI和后缀对请求进行判断 1

Linux 笔记

我与影子孤独终老i 提交于 2020-05-04 00:09:48
博客地址: http://www.moonxy.com 一、前言 LNMP 中的 N 指 Nginx,在静态页面的处理上,Nginx 较 Apache 更胜一筹;但在动态页面的处理上,Nginx 并不比 Apache 有优势,目前有很多爱好者对 Nginx 比较热衷。 二、安装 LNMP LNMP 中 MySQL 的安装步骤和 LAMP 中的一样,前面的文章已经介绍,此处只讲解 PHP 和 Nginx 的安装。 2.1 安装 PHP 下载 PHP 的源码包 php-7.2.8.tar.gz 到 /usr/local/src 目录下,解压得到 php-7.2.8。 预编译 [root@ryan ~]# cd /usr/local/src/php- 7.2 . 8 [root@ryan php - 7.2 . 8 ]# useradd -s /sbin/nologin php- fpm [root@ryan php - 7.2 . 8 ]# ./configure --prefix=/usr/local/lnmp/php7 --with-config- file -path=/usr/local/lnmp/php7/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-libxml- dir -

Zabbix学习笔记(三)

与世无争的帅哥 提交于 2020-05-03 15:09:39
1、 环境介绍 操作系统: Centos7.3 Linux 版本: PHP5.6.34 镜像源:阿里镜像源 2、 安装依赖包 yum -y install gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel libxml2 libxml2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel openldap openldap-devel libmcrypt libmcrypt-devel 3、 编译安装 tar zxf php-5.6.34.tar.gz cd php-5.6.34 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-ctype --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml -

关于linux系统CPU篇--->不容易发现的占用CPU较高进程

≡放荡痞女 提交于 2020-05-02 18:37:24
1.系统的CPU使用率,不仅包括进程用户态和内核态的运行,还包括中断处理,等待IO以及内核线程等等。所以,当你发现系统的CPU使用率很高的时候,不一定能找到相对应的高CPU使用率的进程 2.案例分析,排查定位不容易发现的高消耗CPU的进程 (1).案例准备工作:两台装有linux系统的虚拟机,一台用作web服务器,一台用作web服务器的客户端 (2).预先安装docker,sysstat,perf,ab等工具,ab装在客户端机器上,其他的安装在web服务器端 (3).在第一台机器(web服务器),执行docker命令,运行nginx和PHP: docker run --name nginx -p 10000:80 -itd feisky/nginx:sp docker run --name phpfpm -itd --network container:nginx feisky/php-fpm:sp (4).在第二台机器上使用curl访问,确认nginx正常启动: # 192.168.0.10 是第一台虚拟机的 IP 地址 $ curl http://192.168.0.10:10000/ It works! (5).用ab测试nginx服务的性能,并发100个请求测试nginx性能,总共测试1000个请求: # 并发 100 个请求测试 Nginx 性能,总共测试 1000

Mac 多次killall php-fpm之后会php-fpm会自动启动 解决方法

夙愿已清 提交于 2020-05-01 03:15:47
问题:Mac,php7.2,nginx 重启php-fpm,多次运行killall php-fpm,或者一个一个的kill -9之后,再查看进程ps aux | grep php-fpm,php-fpm进程还在…… 参考网址: http://blog.haohtml.com/archives/18977 解决方法: 找到了上面的网址,原来是php-fpm配置文件和 ~/Library/LaunchAgents/homebrew.mxcl.php@7.2.plist 有关。 因为我是用homebrew安装的php7.2,所以自动加入了开机自启; ~/Library/LaunchAgents 针对当前用户的启动项目录,可以通过launchctl 命令来操作,常用的命令: 1.检查plist语法是否正确 $ plutil ~/Library/LaunchAgents/test.plist 2.加载plist文件,是配置生效 $ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php@ 7.2 .plist 3.卸载配置 $ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.php@ 7.2 .plist 4.查看所有启动任务 $ launchctl list

源码编译配置lnmp部署zabbix

只谈情不闲聊 提交于 2020-04-28 06:32:51
环境说明: [root@wcy ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@wcy ~]# uname -a Linux wcy.admin 2.6.32-696.30.1.el6.x86_64 #1 SMP Tue May 22 03:28:18 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux [root@wcy ~]# ip a | grep inet inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host inet 192.168.233.10/24 brd 192.168.233.255 scope global eth0 inet6 fe80::20c:29ff:fe79:1b0f/64 scope link 下载文件: mysql-5.6.40.tar.gz http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-5.6/ nginx-1.10.2.tar.gz https://nginx.org/en/download.html php-5.6.36.tar.gz https://secure.php.net/downloads.php 安装nginx: [root@wcy

CentOS 7.2下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1

拜拜、爱过 提交于 2020-04-27 21:23:42
一、安装前的准备工作 1、yum update #更新系统 2、yum install gcc gcc-c++ autoconf automake cmake bison m4 libxml2 libxml2-devel libcurl-devel libjpeg-devel libpng-devel libicu-devel #安装php、MySQL、Nngix所依赖的包 3、下载以下包 #我把所有源文件都下载在root目录,读者可自行修改源文件存放目录 3.1 libmcrypt-2.5.8.tar.gz 3.2 mcrypt-2.6.8.tar.gz 3.3 mhash-0.9.9.9.tar.gz 3.4 zlib-1.2.8.tar.gz 解压并安装如: #tar -zvxf libmcrypt-2.5.8.tar.gz #cd libmcrypt-2.5.8 #./configure #make && make insatll 4、在安装软件时如果提示有什么依赖包没有安装的可以再执行yum install * -y (*表示相关包) 二、编译安装Nginx 1、去官网 http://nginx.org/en/download.html 下载最nginx-1.10.1.tar.gz的稳定版本 2、编译步骤如下   1、通过winSCP上传nginx-1.10.1.tar

Zabbix监控平台(三)生产环境案例

时间秒杀一切 提交于 2020-04-27 07:06:31
一,Zabbix生产环境监测案例概述 1.1 项目规划 主机分组 交换机 Nginx Tomcat MySQL Apache PHP-fpm redis(也有状态页,自己研究) memcache(也有状态页,自己研究) 监控对象识别: 使用SNMP监控交换(监控交换机或路由器) 使用IPMI监控服务器硬件 使用Agent监控服务器(监控操作系统和软件服务) 使用JMX监控JAVA(监控tomcat等java服务) 监控MySQL 监控Web状态 监控Nginx状态 监控Apache状态 监控Tomcat状态 1.2 SNMP监控流程(监控交换机或路由器) 交换机上开启snmp 在zabbix上添加监控(设置SNMP interfaces) 关联监控模版 1.3 IPMI(监控服务器硬件) 建议使用自定义item监控服务器硬件,在本地执行ipmitool命令来获取数据(虚拟机上没有远程控制卡,所以无法测试) 可以在本地执行ipmitool命令获取数据(命令需要安装) 1.4 JMX(使用Zabbix Java Gateway代理) 用来获取java数据,本次的实战内容 1.5 实战监控Nginx,Apache,MySQL,PHP-fpm 今天的实战内容,注意总结过程 1.6 Zabbix的Web监测 今天的实战内容,注意总结过程 所有zabbix模板包和源码包 链接: https:/

zabbix生产环境案例(三)

百般思念 提交于 2020-04-27 06:38:09
#生产环境案例(三) 链接: https://pan.baidu.com/s/1q5YwJMTcZLcS5OQ0iOu44A 提取码:8gdi 复制这段内容后打开百度网盘手机App,操作更方便哦 ##1. Zabbix生产环境监测案例概述 ###1.1 项目规划 主机分组 交换机 Nginx Tomcat MySQL Apache PHP-fpm redis memcache 监控对象识别: 使用SNMP监控交换 使用IPMI监控服务器硬件 使用Agent监控服务器 使用JMX监控JAVA 监控MySQL 监控Web状态 监控Nginx状态 监控Apache状态 监控Tomcat状态 ###1.2 SNMP监控流程 交换机上开启snmp 在zabbix上添加监控(设置SNMP interfaces) 关联监控模版 ###1.3 IPMI 建议使用自定义item监控服务器硬件,在本地执行ipmitool命令来获取数据 可以在本地执行ipmitool命令获取数据(命令需要安装) ###1.4 JMX(使用Zabbix Java Gateway代理) 用来获取java数据,本次的实战内容 ###1.5 实战监控Nginx,Apache,MySQL,PHP-fpm 今天的实战内容,请同学们注意总结过程 ###1.6 Zabbix的Web监测 今天的实战内容,请同学们注意总结过程 ##2.