php-fpm

什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI?

做~自己de王妃 提交于 2020-02-21 06:08:37
什么是CGI CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。 CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,python,tcl等 什么是FastCGI FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。 FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。 FastCGI与CGI特点 1、如CGI,FastCGI也具有语言无关性. 2、如CGI, FastCGI在进程中的应用程序,独立于核心web服务器运行,提供了一个比API更安全的环境。(APIs把应用程序的代码与核心的web服务器链接在一起

LNMP环境部署

*爱你&永不变心* 提交于 2020-02-21 02:03:35
说明: 操作系统:CentOS 5.6 32位 准备篇: 一、配置好IP、DNS 、网关,确保使用远程连接工具能够连接服务器 二、配置防火墙,开启80端口、3306端口 vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT #允许80端口通过防火墙 -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #允许3306端口通过防火墙 特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面 添加好之后防火墙规则如下所示: ######################################################### # Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A

mac重启php-fpm

≯℡__Kan透↙ 提交于 2020-02-17 11:39:37
查看php-fpm端口是否在被php-fpm使用 sudo lsof -i:9000 一般修改 php.ini 文件后经常需要重启php-fpm sudo killall php-fpm // 关闭 再输入 sudo lsof -i:9000 就会发现php-fpm没有打印对应端口 sudo php-fpm // 启动 来源: CSDN 作者: WXiangQian王先森 链接: https://blog.csdn.net/qq175023117/article/details/104353403

windows7+docker搭建nginx和php-fpm环境(官方镜像)

房东的猫 提交于 2020-02-15 04:26:01
win7安装docker见上一篇文章 准备工作:挂载本地磁盘到虚拟系统 本地文件夹结构 E:\docker nginx文件夹结构 conf文件夹结构 1、 docker pull nginx docker pull php:7.1-fpm 2、 启动php容器 docker run --name php7.1 -v /e/docker/html:/var/www/html -p 9000:9000 -d php:7.1-fpm 3、 启动nginx容器 docker run -d -p 8080:80 --name nginx1 -v /e/docker/html:/var/www/html -v /e/docker/nginx/conf/conf.d:/etc/nginx/conf.d -v /e/docker/nginx/logs:/var/log/nginx --link php7.1:php7.1 nginx 如果docker ps发现nginx未启动, 执行 su -c "setenforce 0" , 不要添加 --privileged=true(要不然可能有文件权限问题) 如果docker ps发现nginx未启动, 执行 su -c "setenforce 0" ( 临时方式关闭selinux,每次容器重启前都要执行 ),不要添加 --privileged=true

PHP FastCGI进程管理器PHP-FPM的架构

倾然丶 夕夏残阳落幕 提交于 2020-02-13 20:01:46
一个master进程,支持多个pool,每个pool由master进程监听不同的端口,pool中有多个worker进程. 每个worker进程都内置PHP解释器,并且进程常驻后台,支持prefork动态增加. 每个worker进程支持在运行时编译脚本并在内存中缓存生成的opcode来提升性能. 每个worker进程支持配置响应指定请求数后自动重启,master进程会重启挂掉的worker进程. 每个worker进程能保持一个到MySQL/Memcached/Redis的持久连接,实现"连接池",避免重复建立连接,对程序透明. 使用数据库持久连接时应该设置固定数量的worker进程数,不要使用动态的prefork模式. 经 @syaokun219 和 @IM鑫爷 纠正,以下两句有误: master进程采用epoll模型异步接收和分发请求,listen监听端口,epoll_wait等待连接. 然后分发给对应pool里的worker进程,worker进程accept请求后poll处理连接. 应该是: master进程并不接收和分发请求,而是worker进程直接accept请求后poll处理. master进程不断调用epoll_wait和getsockopt是用来异步处理信号事件和定时器事件. 这里提一下,Nginx也类似,master进程并不处理请求,而是worker进程直接处理,

nginx和php-fpm调用方式

喜你入骨 提交于 2020-02-13 14:35:34
nginx和php-fpm调用方式 一.背景: 在开发中碰到一个问题,项目以nginx+php-fpm形式访问交互,结果访问项目时报错如下图: 二.分析: 提示很明确嘛,去看error.log(在nginx.conf或者vhost里头配置的,找到你对应路径即可) 错误信息如下: 1 2 3 2017/09/18 10:46:21 [error] 3880#0: *92 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.33.10, server: local.helios.com, request: "GET /v1/room/detail.json HTTP/1.1" , upstream: "fastcgi://127.0.0.1:9000" , host: "local.helios.com" 或 1 2 3 2017 /09/18 14:30:42 [crit] 5375 #0: *43 connect() to unix:/tmp/php-cgi.sock failed (2: No such file or directory) while connecting to upstream, client: 192.168.33.10,

php-fpm,cgi,fast-cgi,nginx,php.ini,php-fpm.conf,nginx.conf

ⅰ亾dé卋堺 提交于 2020-02-13 07:46:42
php-fpm.conf 是PHP-FPM特有的配置文件。 php.ini 是所以php模式中必须的配置文件。 两者的区别是, php-fpm.conf 是PHP-FPM进程管理器的配置文件, php.ini 是PHP解析器的配置文件。 cgi、fast-cgi协议 早期的webserver只处理html等静态文件,但是随着技术的发展,出现了像php等动态语言。 webserver处理不了了,怎么办呢?那就交给php解释器来处理吧! 交给php解释器处理很好,但是,php解释器如何与webserver进行通信呢? 为了解决不同的语言解释器(如php、python解释器)与webserver的通信,于是出现了cgi协议。只要你按照cgi协议去编写程序,就能实现语言解释器与webwerver的通信。如php-cgi程序。 有了cgi协议,解决了php解释器与webserver通信的问题,webserver终于可以处理动态语言了。 但是,webserver每收到一个请求,都会去fork一个cgi进程,请求结束再kill掉这个进程。这样有10000个请求,就需要fork、kill php-cgi进程10000次。 有没有发现很浪费资源? 于是,出现了cgi的改良版本,fast-cgi。fast-cgi每次处理完请求后,不会kill掉这个进程,而是保留这个进程,使这个进程可以一次处理多个请求

PHP工作原理及五大运行模式:包括cgi 、fast-cgi、cli、isapi、Web模块模式

故事扮演 提交于 2020-02-05 01:54:54
PHP的五大运行模式 1)CGI( Common Gateway Interface):即通用网关接口, 2)FastCGI( Long-Live CGI):即常驻型通用网关接口 3)CLI( Command Line Interface):即命令行运行接口 4)Web模块模式(Apache等Web服务器运行的模式) 5)ISAPI(Internet Server Application Program Interface) 1.1 CGI是一种让客户端(web浏览器)与Web服务器(nginx等)程序进行通信(数据传输)的协议。 1)用来规范web服务器传输到php解释器中的数据类型以及数据格式,包括URL、查询字符串、POST数据、HTTP header等,也就是为了保证web server传递过来的数据是标准格式的。 2)CGI可以用任何一种具有标准输入、输出和环境变量的语言编写,如php、perl、tcl等。不同类型语言写的程序只要符合cgi标准,就能作为一个cgi程序与web服务器交互,早期的cgi大多都是c或c++编写的。 3)一般说的CGI指的是用各种语言编写的能实现该功能的程序。 1.2.CGI程序的工作原理 1)每次当web server收到index.php这种类型的动态请求后,会启动对应的CGI程序(PHP的解析器); 2)PHP解析器会解析php

LNMP编译安装三、php-7.1.3

▼魔方 西西 提交于 2020-02-04 05:46:10
1.依赖包和编译工具的 yum安装 对于 CentOS ,yum 向来是用作安装大批量依赖的工具,所以,一股脑安装这些依赖库吧。 yum install -y gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel pcre-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel curl gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel readline-devel libxslt-devel expat-devel xmlrpc-c xmlrpc-c-devel 2.编译安装re2c/bison/limcrypt 之前我们已经安装了 gcc 、 automake 、 autoconf 等,还需要 re2c 和 bison 这两个。这两个都是 PHP 的语法分析器,两者的下载地址: RE2C http://sourceforge.net/projects/re2c/files/0.15.3/re2c-0.15.3.tar.gz BSION http://ftp.gnu.org

Linux下编译、安装php

戏子无情 提交于 2020-02-04 05:44:55
一、apache环境下php的安装步骤如下: 【 注意:编译安装php前,应先安装好apache,因为编译php时要用到apache的路径 】 1. 在http://www.php.net/downloads.php下载php源代码,并存至/usr/local/src下 2. 切换至/usr/local/src下,解压php源码,并切换至解压后的php目录下 3. ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/httpd/bin/apxs --enable-mysqlnd 【配置时,可能会报错configure: error: xml2-config not found. Please check your libxml2 installation.--------解决方法: 需安装libxml2作为依赖(centos和ubuntu上安装libxml2的方式不太一样)】 4. make 5. make install 6. 配置http.conf,主要是整合php作为apache的模块出现(有时会自动帮我们配置好),在http.conf里加一句 AddType application/x-httpd-php .php 7. 复制php源码包中的 php.ini-development到指定目录(此处为: