php-fpm

lamp架构编译安装

ぃ、小莉子 提交于 2020-10-30 08:03:09
实验环境:RHEL 7.5 ip:192.168.10.205 LAMP: Linux+Apache+Maridb(Mysql)+PHP,常用来搭建动态网站或者服务器的开源软件。习惯上,apache一般是指httpd,当然Apache还有很多的其他软件。 apache(httpd)、mariadb、php可以安装在同一台机子,也可以安装在不同的机子。这里演示的是在一台机子上部署lamp。 如果想分别安装在不同的机子,请参考我的另一博文: https://www.logmm.com/lamp-distributed/ 一、安装相关依赖包 [root@node5 ~]#yum install expat-devel pcre-devel libxml2-devel openssl-devel gcc -y [root@node5 ~]# yum install -y libcurl-devel gd-devel bzip2-devel 二、编译安装httpd.2.4.33 httpd2.4开始要依赖apr、apr-util包,所以编译安装httpd之前先编译安装apr、apr-util。 1、编译安装apr 下载apr-1.6.3包 [root@node5 ~]#curl -O http://mirrors.hust.edu.cn/apache/apr/apr-1.6.3.tar.gz

nginx的403 Forbidden问题

一曲冷凌霜 提交于 2020-10-28 11:51:45
今天帮同事解决一个 nginx 的问题; 问题描述: 文件地址在浏览器中无法下载, http://10.60.1.66:9082/upload/doc/20190510165337.docx nginx 在页面上报错信息 : 403 Forbidden 报 Forbidden, 第一反应是该文件没有读权限,查看该文件,妹子已经给整个目录 777 权限了; [root@localhost doc]# ll total 72 -rwxrwxrwx. 1 www www 8414 May 10 16:26 20190510162651.docx -rwxrwxrwx. 1 www www 8291 May 10 16:50 20190510165002.docx -rwxrwxrwx. 1 www www 8413 May 10 16:50 20190510165005.docx -rwxrwxrwx. 1 www www 8292 May 10 16:53 20190510165337.docx -rwxrwxrwx. 1 www www 8292 May 10 16:55 20190510165553.docx -rwxrwxrwx. 1 www www 8292 May 10 16:56 20190510165652.docx [root@localhost doc]#

基于华为云轻松搭建属于自己的网站 (Linux,Apache,MySQL,PHP)

倾然丶 夕夏残阳落幕 提交于 2020-10-26 12:49:35
前言 本文使用华为云服务,向大家搭建属于自己的网站,搭建过程会详细介绍。搭建网站的过程亲自走了3遍,确认没问题才写这篇博客的,大家放心地根据步骤流程一步一步。如果大家担心自己能不能搭建成功,本文有网站搭建时每个过程步骤的截图,大家看着流程步骤和图片引导,是能成功的。💪💪 网页效果 本人没做炫酷的网页,比较朴素些;(~ ̄▽ ̄)~ 这是文章的内容( •̀ ω •́ )✧ 简介 本篇博客主要和大家介绍属于自己的 WordPress网站(博客平台) ;可能会问什么是WordPress网站呀? WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统(CMS)来使用。 核心的要点 :LAMP(Linux,Apache,MySQL,PHP) Linux系统、ApacheHTTP 服务器、MySQL 数据库软件、PHP语言。一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。 思路流程 1.登录华为云 2.创建共享带宽 3.创建安全组 4.创建虚拟私有云(VPC) 5.创建弹性云服务器(ECS) 6.搭建LAMP(Linux,Apache,MySQL,PHP)环境 7

PHP FastCGI nginx 超时时间

痞子三分冷 提交于 2020-10-06 01:26:42
背景 在一次项目开发过程中,因为测试机性能较低,某个请求的处理与响应在测试机跑大概需要 1.7 min,因为一开始各种超时间都是默认配置,所以在测试接口的时候出现了一些问题。 1、404 Not Found 如果出现 404错误,并且确认URL没有问题,这个错误原因一般是 http 请求时间超过了 nginx 所配置的最大连接时间,服务器自动断开连接,并返回 404 资源未找到的错误。 解决办法是 更改 nginx.conf 配置文件中的 keepalive_timeout 的值(默认65秒)使浏览器和服务器连接时长增大。为了方便测试,可以改成 600s 即10分钟, keepalive_timeout 600; 注意: 这里 nginx 主动断开和客户端的连接后,在 php所配置的最大执行时间允许的范围内,本次请求所调用的脚本会在服务端继续执行。直到脚本执行结束,或者超过php最大执行时间后停止。 如果 nginx 日志里面的状态码是 499,则为客户端主动断开连接。可能客户端ajax请求设置了超时时间。 2、502 Bad Gateway 简单介绍一下 502 错误: 502 Bad Gateway是指错误网关,无效网关;在互联网中表示一种网络错误。表现在WEB浏览器中给出的页面反馈。这通常并不意味着上游服务器已关闭(无响应网关/代理) ,而是上游服务器和网关

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 –

API返回延迟,FPM重启后恢复之后又重现 问题解决方案

泪湿孤枕 提交于 2020-10-02 20:05:54
背景 最近在提供后台API时,提供了一个简单逻辑的接口 部署在测试环境,自测没问题,提交测试 突然有一天,接口响应延迟严重,几乎每次都是3-4秒返回 这对于一个接口来说,肯定是有问题的 于是便有了以下的方法尝试 重启FPM 最开始以为不是什么大问题,猜想可能是fpm问题 毕竟测试环境,部署代码繁多 重启后,接口响应正常,可不一会就又复现 重新分析定位问题 经过几次的尝试后,发现问题其实没有那么简单 重启fpm后,过了不到几秒,问题依然复现 编写简单的php文件,无复杂逻辑,只输出字符串,问题复现 命令行执行文件,无此问题 经过以上尝试,确认是FPM的问题 或者PHP的初始化解析执行的问题,当时想是不是有特定的模块加载 经过php -m 查看,无特殊模块(其实应该仔细看看,所以才绕了弯路) 日志定位 有了上面的分析,最先想到的是利用日志查看问题 查看nginx日志 nginx 日志 格式,添加详细的 各个时间段的相应 log_format main '$remote_addr [$host] - $remote_user [$time_local] $request upstream_response_time: $upstream_response_time request_time: $request_time upstream_connect_time: $upstream

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

php linux yaml 的安装和使用、环境区分(测试、预发布、生产)

▼魔方 西西 提交于 2020-09-30 12:28:28
安装: 1 下载yaml包 wget http://pyyaml.org/download/libyaml/yaml-0.2.2.tar.gz tar -zxvf yaml-0.2.2.tar.gz cd yaml-0.2.2/ ./configure make make install 2,下载php的yaml扩展包 点击官网下载:https://pecl.php.net/package/yaml tar -zvxf yaml-2.0.4.tgz cd yaml-2.0.4/ /usr/local/php7/bin/phpize //这里要改成你PHP的安装目录 ./configure --with-php-config=/usr/local/php7/bin/php-config //这里也是一样 make make install php.ini 添加扩展yaml.so vi /usr/local/php7/lib/php.ini //一样注意目录 extension=yaml.so 4 重启PHP-FPM //数组转yaml $yaml = yaml_emit($invoice); // yaml转数组 $parsed = yaml_parse($yaml); //读取yaml文件地址 $configFile = dev.yaml $defaultConfig = yaml

去除php7编译安装的模块sqlite3

我是研究僧i 提交于 2020-08-18 21:45:28
去除php7编译安装的模块,这里以sqlite3为例 SQLite3 扩展自 PHP 5.3.0 起已默认启用。 允许在编译时使用 --without-sqlite3 禁用之 背景 我在开发项目的时候需要使用php连接加密的sqlite数据库,但是php默认编译的sqlite扩展不支持连接加密的sqlite数据库,因此我必须把编译安装的sqlite3移除掉,安装支持连接加密的sqlite数据库的扩展 前提 假设你已经编译安装好了php7,且在编译安装php7的时候未显示禁止 --without-sqlite3,导致这个模块已经被编译安装进php,满足这个前提下,再来看这篇文章 如果不知道如何编译安装php7,请参考这篇文章 centos7编译安装php7 查看文章的过程中,一定要注意各个命令的操作路径,需要将这些路径替换成你自己开发环境中的路径,切记 文章中 php7.1 命令只是对 php 命令的一个软连接,如果不清楚,请仔细阅读这篇文章 centos7编译安装php7 查看php安装好的模块 [root@localhost ~]# php7.1 -m [PHP Modules] bcmath Core ctype curl date dom fileinfo filter ftp gd gettext hash iconv json libxml mbstring mcrypt