fastcgi

php cgi&fastcgi&php-fpm

只愿长相守 提交于 2020-10-03 05:27:49
CGI(Common Gateway Interface),通用网关接口。设置了web server的外部程序的规范。 简单理解,就类似于php的接口,定义了输入、环境变量、输出的规范。 interface Cgi { function input(); function env(); function output(); } 标准输入 STDIN (get方式的请求,不放在标准输入中。post可以。) 环境变量 系统环境变量+当有http请求时(http服务器+客户端+cgi传输过程的信息),如php的$_SERVER信息是从此处获取的 标准输出 STDOUT ((mime类型 / location / 状态码)作为第一行 + 空行 + 输出内容) cgi是运行在服务器上的,用于服务器与程序间的交互。 任何遵守cgi规范的程序都可以称为cgi程序。 php经常使用的服务器是nginx或Apache。 不过cgi有个硬伤,每次一个请求过来,都需要重新fork一个新的cgi进程,请求结束再kill掉该进程。若是有大量的请求过来,将直接搞摊服务器。 fastcgi就是为了处理这种情况而诞生的 ,每次fork一个cgi进程,请求结束并不会kill掉该进程,而是放回cgi池子,等待下一个请求。 有这么多的cgi进程,为了进一步管理这些cgi进程,php-fpm诞生了。 php

Prometheus监控PHP-FPM

可紊 提交于 2020-10-02 20:34:25
一、概述 启用php-fpm状态功能 php-fpm 和 nginx 一样内建了一个状态页,对于想了解php-fpm的状态以及监控php-fpm非常有帮助。为了后续的Prometheus监控,我们需要先了解php-fpm状态页是怎么回事。 在上一篇文章中,已经开启了php-fpm状态,链接 如下: https://www.cnblogs.com/xiao987334176/p/12918413.html pm.status_path = /fpm_status nginx配置 上篇文章中,也对nginx默认主机添加了配置 location ~ ^/(fpm_status| health)$ { fastcgi_pass 192.168 . 31.34 : 9000 ; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } 访问php-fpm状态页面 http://192.168.31.34/fpm_status 效果如下: php-fpm status详解 pool-fpm 池子名称,大多数为www process manager – 进程管理方式,值:static, dynamic or ondemand. dynamic start time –

Docker 搭建多容器组合服务 (nginx + PHP)

安稳与你 提交于 2020-10-02 08:27:29
Docker 搭建多容器组合服务 (nginx + php) 首先要确保本地 docker 环境已经安装成功 Docker 安装 Nginx docker pull nginx (拉取最新 nginx 镜像) docker images (查看本地 nginx 镜像是否安装成功) Docker 安装 PHP docker pull php:7.4-fpm (拉取指定版本的 php ) docker images (查看本地 php 镜像是否安装成功) 准备好一个本地目录用于容器挂载 (例如 E:\WWW 目录) 使用 docker 运行 php 、nginx 容器 1.运行 php 命令 “docker run –name myphp -p 9000:9000 -v E:\WWW:/var/www/html -d php:7.4-fpm” (注意: myphp 容器的 /var/www/html 目录 挂载了一个本地 E:\WWW 目录) 2.运行 nginx 命令 “docker run –name mynginx -p 80:80 -v E:\WWW:/usr/share/nginx/html –link=myphp:phpfpm -d nginx” (注意:mynginx 容器的 /usr/share/nginx/html 目录 挂载了一个本地 E:\WWW 目录,–link

docker搭建PHP开发环境

怎甘沉沦 提交于 2020-09-30 05:44:26
DNMP介绍 DNMP(Docker + Nginx + MySQL + PHP7/5 + Redis)是一款全功能的 LNMP一键安装程序 。支持的服务丰富、功能强大、使用简单、兼容多平台。是适用于多端的一款docker开发与生产环境的PHP环境全家桶。 DNMP项目特点: 100% 开源 100% 遵循Docker标准 支持 多版本PHP 共存,可任意切换(PHP5.4、PHP5.6、PHP7.1、PHP7.2、PHP7.3) 支持绑定 任意多个域名 支持 HTTPS和HTTP/2 PHP源代码、MySQL数据、配置文件、日志文件 都可在Host中直接修改查看 内置 完整PHP扩展安装 命令 默认支持 pdo_mysql 、 mysqli 、 mbstring 、 gd 、 curl 、 opcache 等常用热门扩展,根据环境灵活配置 可一键选配常用服务: 多PHP版本:PHP5.4、PHP5.6、PHP7.1-7.3 Web服务:Nginx、Openresty 数据库:MySQL5、MySQL8、Redis、memcached、MongoDB、ElasticSearch 消息队列:RabbitMQ 辅助工具:Kibana、Logstash、phpMyAdmin、phpRedisAdmin、AdminMongo 实际项目中应用,确保 100% 可用 所有镜像源于

PHP-FPM详解

China☆狼群 提交于 2020-08-19 23:18:48
作用 PHP-FPM(PHP FastCGI Process Manager)意:PHP FastCGI 进程管理器,用于管理PHP 进程池的软件,用于接受web服务器的请求。 PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。 (1). 为什么会出现php-fpm fpm的出现全部因为php-fastcgi出现。为了很好的管理php-fastcgi而实现的一个程序 (2). 什么是php-fastcgi php-fastcgi 只是一个cgi程序,只会解析php请求,并且返回结果,不会管理(因此才出现的php-fpm)。 (3)为什么不叫php-cgi 其实在php-fastcgi出现之前是有一个php-cgi存在的,只是它的执行效率低下,因此被php-fastcgi取代。 (4)那fastcgi和cgi有什么区别呢? 亲们,这区别就大了,当一个服务web-server(nginx)分发过来请求的时候,通过匹配后缀知道该请求是个动态的php请求,会把这个请求转给php。 在cgi的年代,思想比较保守,总是一个请求过来后,去读取php.ini里的基础配置信息,初始化执行环境,每次都要不停的去创建一个进程,读取配置,初始化环境,返回数据,退出进程,久而久之,启动进程的工作变的乏味无趣特别累。 当php来到了5的时代

nginx目录及配置(三)

醉酒当歌 提交于 2020-08-17 17:50:51
1.Nginx目录结构 日志切割目录: /etc/logrotate.d/nginx 日志切割文件 1)利用shell脚本+crontab mv nginx.log nginx.log_$(data +F) systemctl reload nginx 2)系统自带切割工具logrotate vim /etc/logrotate.conf nginx程序目录: /etc/nginx nginx程序扩展配置文件: /etc/nginx/conf.d /etc/nginx/conf.d/default.conf nginx主配置文件: /etc/nginx/nginx.conf fastcgi接口内置变量配置文件: /etc/nginx/fastcgi_params 和nginx程序字符集相关文件: /etc/nginx/koi-utf /etc/nginx/win-utf /etc/nginx/koi-win 媒体资源类型文件(识别请求信息类型): /etc/nginx/mime.types scgi接口内值变量配置文件 /etc/nginx/scgi_params uwcgi接口内值变量配置文件 /etc/nginx/uwsgi_params nginx程序模块文件保存目录: /etc/nginx/modules /etc/sysconfig/nginx /etc

nginx简介(二)

ε祈祈猫儿з 提交于 2020-08-17 17:47:51
1.Nginx优点: A、高并发、高性能 高并发往往只需要每个连接所使用的内存尽量的少就能做到,而再高并发的同时达到高性能往往需要很好的设计。Nginx使主流服务器可以轻松达到数千万的并发连接,如果是处理简单的静态资源请求,可以达到一百万的RPS这种级别。 B、可扩展性好 主要体现再它的模块化设计,模块设计得非常稳定,使得nginx的第三方模块生态圈非常丰富,甚至有Tengine、OpenResty这样独立门户出来,又生成新的生态圈的插件。丰富的生态圈为Nginx丰富的功能提供了保证。 C、可靠性高 Nginx可以在服务器上持续不间断地运行数年,而很多web服务器往往运行几周或几个月就需要进行一次重启。对于Nginx这样的高并发、高性能的反向代理服务器而言,它往往运行在企业内网的边缘节点上,这个时候如果我们企业想要提供4个9、5个9、甚至更高的高可用性时,Nginx就能满足此需求。 D、热部署 Nginx可以在不停止服务的情况下进行升级。这可以避免操作系统向客户端发送大部分客户端难以处理的复位请求。 E、BSD许可证 Nginx不只是开源的、免费的,而且我们在有定制需求的场景下,去修改Nginx的源代码,应用在我们的商业场景下,这是合法的。 功能强大: 1)可以实现网站服务功能 替代:apache 2)可以实现负载功能 t替代 L:VS haproxy 3)可以实现缓存功能 替代:

docker完整配置nginx+php+mysql

拈花ヽ惹草 提交于 2020-08-17 11:49:54
首先了解一个方法: 使用docker exec进入Docker容器   docker在1.3.X版本之后还提供了一个新的命令exec用于进入容器,这种方式相对更简单一些,下面我们来看一下该命令的使用: sudo docker exec --help 接下来我们使用该命令进入一个已经在运行的容器 $ sudo docker ps $ sudo docker exec -it 775c7c9ee1e1 /bin/bash 一. 配置nginx 查找 Docker Hub 上的 nginx 镜像 runoob@runoob :~/ nginx$ docker search nginx NAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx Official build of Nginx . 3260 [ OK ] jwilder / nginx - proxy Automated Nginx reverse proxy for docker c ... 674 [ OK ] richarvey / nginx - php - fpm Container running Nginx + PHP - FPM capable ... 207 [ OK ] million12 / nginx - php Nginx + PHP - FPM 5.5 , 5

yum部署nginx

最后都变了- 提交于 2020-08-16 06:49:12
操作系统:RHEL/CentOS 实战任务:yum部署nginx [root@sky9899 yum.repos.d]# vi nginx.repo [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [root@sky9899 /]# yum-config-manager --enable nginx-mainline 已加载插件:fastestmirror ==================== repo: nginx-mainline =====

docker部署netcore项目 nginx负载均衡

和自甴很熟 提交于 2020-08-15 15:48:56
前言: 本文主要内容是docker部署netcore应用以及docker运行nginx实现负载均衡。到目前为止感觉微软在跨平台的方面虽然有较大的进步,但是和linux比还是有一定的差距,在学习docker,nginx以及Netcore 过程中网上能查找参考的资料还是比较有限的,所以在此记录下遇到的问题以及踩到的各种坑,希望避免再次走弯路。 一. 新建NET Core应用程序; 1.添加Docker支持,由于到目前为止,nginx还不支持windows容器,为了便于本机测试所以选用Linux容器,如下图: 2.输出请求处理,显示当前请求IP以及端口号: 3.编辑Dockerfile文件   dockerfile文件指令说明:   FROM -指定基础镜像(FROM是必备的指令,并且必须为第一条指令)   WORKDIR-配置工作目录   EXPOSE-声明镜像内服务监听的端口   COPY-复制内容到镜像   ENTRYPOINT-启动镜像的默认人口命令   ENV -设置环境变量 编辑后的dockerfile文件如下: FROM microsoft/dotnet: 2.2 -aspnetcore-runtime AS base WORKDIR / app EXPOSE 8005 EXPOSE 443 ENV ASPNETCORE_URLS http: // +:8005 COPY