php编译安装
一、基础环境准备
# php使用www用户
useradd -s /sbin/nologin -M www
二、下载php包
# 下载地址 https://www.php.net/downloads
wget https://www.php.net/distributions/php-8.3.9.tar.gz
三、配置编译安装
编译安装之前需要处理必要的依赖,在编译配置安装,否则编译不通过!
配置项处理好之后,编译安装即可!
四、配置启动模式
配置启动模式
五、启动服务配置
启动服务配置
配置configure
说明:
installDir是php服务安装目录。
配置项
./configure \
# 安装目录
--prefix=installDir \
# php.ini路径
--with-config-file-path=installDir/etc \
# 禁用在搜索路径中传递其他运行库
--disable-rpath \
# 以fastCGI方式运行PHP服务
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
# 进程控制
--enable-pcntl \
# 系统V信号量(信号量)
--enable-sysvsem \
# 系统V共享内存(共享内存与shmop差别是提供操作函数不同支持key value操作)
--enable-sysvshm \
# 系统V消息(消息队列)
--enable-sysvmsg \
# 共享内存 只能按字节操作
--enable-shmop \
--enable-opcache \
--enable-mysqlnd \
# 启用多字节的正则表达式
--enable-mbregex \
# 禁用短形式开始标签
--disable-short-tags--enable-zts
# 线程安全选项开启后效率不是很友好
配置项扩展
[PHP Modules]
Core
ctype
date
dom
fileinfo
filter
hash
iconv
json
libxml
mysqlnd
pcntl
pcre
PDO
pdo_sqlite
Phar
posix
random
Reflection
session
shmop
SimpleXML
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlwriter
[Zend Modules]
配置configure错误
# error: off_t undefined; check your library configuration
# /etc/ld.so.conf文件中添加以下几行
/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64
# 使动态库生效
ldconfig -v
配置启动模式
说明:
phpSrcDir是php源码包目录。
configFilePath是–with-config-file-path配置项目录。
处理php.ini配置文件
# 复制源包中的php.ini-production文件即可
cp phpSrcDir/php.ini-production configFilePath/php.ini
配置php-fpm
以端口方式启动php
# 1 php-fpm.conf文件
cd configFilePath
mv php-fpm.conf.default php-fpm.conf# 2 www.conf文件
cd php-fpm.d
mv www.conf.default www.conf
unix domain socket方式启动php
# 1 php-fpm.conf文件
cd configFilePath
mv php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
# 取消以下注释即删除最前边的分号
# ;pid = run/php-fpm.pid# 2 www.conf文件
cd php-fpm.d
mv www.conf.default www.conf
vim www.conf
# 注释
;listen = 127.0.0.1:9000
# 添加或改为如下
listen=var/run/php-fpm.sock
# 取消以下注释即删除最前边的分号
listen.owner=www
listen.group=www
listen.mode=0660
启动服务配置
说明:
phpSrcDir是php源码包目录。
installDir是–prefix配置项目录。
phpVersionName是php服务以init方式启动php的文件名,此文件名可随意命名,只要冲突即可。
init
# 将启动脚本复制到/etc/init.d目录下并给予可执行权限
cp phpSrcDir/sapi/fpm/init.d.php-fpm /etc/init.d/phpVersionName
chmod +x /etc/init.d/phpVersionName# 启动关闭或重新启动php服务
/etc/init.d/phpVersionName [start|stop|restart]# php成功后记得更改sock的权限 例如以www用户启动的php
chown www.www installDir/var/run/php-fpm.sock
php优化
php-ini优化
;短标签支持
short_open_tag = Off
;关闭php头部信息隐藏版本号 默认On
expose_php = Off
;最大脚本运行时间 默认30
max_execution_time = 100
;最大输入时间 默认60
max_input_time = 100
;脚本内存限制 默认128M
memory_limit = 128M
;错误级别 默认E_ALL & ~E_DEPRECATED & ~E_STRICT
error_reporting = E_ALL & ~E_NOTICE
;是否输出详细错误信息 默认Off
display_errors = On
;记录错误⽇志⾄文件⽅便追溯
log_errors = On
;错误日志
error_log = var/log/ini_error.log
;POST数据最大值 默认8M
post_max_size = 50M
;是否开启pathinfo
cgi.fix_pathinfo = 1
;是否允许上传文件 默认On
file_uploads = On
;允许上传文件的最大值 默认2M
upload_max_filesize = 50M
;允许同时上传文件的最大数量 默认20
max_file_uploads = 20
;时区 默认PRC
date.timezone = Asia/Shanghai
;远程执⾏phpshell 默认On
allow_url_fopen = Off
;socket超时时间 默认60
default_socket_timeout = 60
php-fpm优化
[global]
;pid设置记录程序启动后pid
pid = run/php-fpm.pid
;php-fpm程序启动错误⽇志路径 等同于install/log/php_fpm.log
error_log = log/php_fpm.log
;错误级别 alert必须⽴即处理 error错误 warning警告 notice⼀般重要信息(默认) debug调试信息
log_level = notice
;master进程的打开文件描述符rlimit数量
rlimit_files = 65535[www]
;绑定IP:监听端口或Uinx套接字地址
;若需外网访问连接方式为TCP套接字将IP改为0.0.0.0
listen = var/run/php-fpm.sock
;listen(2)backlog的值
listen.backlog = 8192
;允许连接到FastCGI客户端的地址IP列表(IP白名单 默认any不限制) 多个用逗号隔开
;配置正确的IP白名单 在防火墙/安全组放行监听端口有安全风险需谨慎
listen.allowed_clients = 127.0.0.1;PHP-FPM运行模式 进程管理器如何管理子进程
;static静态 子进程的数量是固定的pm.max_children 对内存开销较大但并发能力较好
;dynamic动态 按设置最大空闲进程数来收回进程内存开销小
;ondemand按需与dynamic相反 根据访问需求自动创建进程内存开销极小但并发能力略差
pm = dynamic
;启动时创建子进程数(服务启动后初始进程数量)
pm.start_servers = 5
;最小空闲进程数(清理空闲进程后保留数量)
pm.min_spare_servers = 5
;最大空闲进程数(当空闲进程达到此值时清理)
pm.max_spare_servers = 10
;允许创建最大子进程数量值越大并发能力越强 每个PHP子进程需要20MB左右内存值过大会导致服务器不稳定
pm.max_children = 50
;每个子进程重生之前服务的请求数(最⼤请求)
pm.max_requests = 1024
;查看FPM状态页面的URI(以斜线(/)开头)
pm.status_path = /fpm_status;单个请求的超时中止时间(超时限制秒)
request_terminate_timeout = 100
;请求超时后 会将对应的PHP调用堆栈信息完整写入到慢日志中(秒)
request_slowlog_timeout = 30
;slowlog日志堆栈追踪的深度
request_slowlog_trace_depth = 20
;慢日志
slowlog = var/log/slow.log
fpm状态⻚⾯
# fpm状态⻚⾯⽤于监控php-fpm状态使⽤
pm.status_path=/fpm_status
## nginx配置
location = /fpm_status {fastcgi_pass unix:php-fpm.sock;fastcgi_index index.php;#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;include fastcgi_params;
}# php-fpm状态页可以通过带参数实现个性化,可以带参数json、xml、html并且前面三个参数可以分别和full做一个组合# php-fpm status详解
## fpm池子名称大多数为www
pool: www
## 进程管理方式static dynamic ondemand
process manager: dynamic
## 启动日期如果reload了php-fpm时间会更新
start time: 18/Sep/2023:18:55:06 +0800
## 运行时长
start since: 50729
## 当前池子接受的请求数
accepted conn: 13
## 请求等待队列如果这个值不为0那么要增加FPM的进程数量
listen queue: 0
## 请求等待队列最高的数量
max listen queue: 0
## socket等待队列长度
listen queue len: 0
## 空闲进程数量
idle processes: 1
## 活跃进程数量
active processes: 1
## 总进程数量
total processes: 2
## 最大的活跃进程数量(FPM启动开始算)
max active processes: 1
## 进程最大数量限制的次数如果这个数量不为0那说明最大进程数量太小了改大一点
max children reached: 0
## 启用了php-fpm slowlog缓慢请求的数量
slow requests: 0# php-fpm full详解
## 进程PID可以单独kill这个进程
pid: 101281
## 当前进程的状态(Idle Running…)
state: Idle
## 进程启动的日期
start time: 18/Sep/2023:18:55:06 +0800
## 当前进程运行时长
start since: 51262
## 当前进程处理了多少个请求
requests: 8
## 请求时长(微妙)
request duration: 6021
## 请求方法(GET POST…)
request method: GET
## 请求URI
request URI: /php8-0-10status
## 请求内容长度(仅用于POST)
content length: 0
## 用户(PHP_AUTH_USER)(or‘-’如果未设置)
user: -
## PHP脚本 (or‘-’if not set)
script: -
## 最后一个请求CPU使用率
last request cpu: 166.09
## 上一个请求使用的内存
last request memory: 2097152
相关文章:
php编译安装
一、基础环境准备 # php使用www用户 useradd -s /sbin/nologin -M www二、下载php包 # 下载地址 https://www.php.net/downloads wget https://www.php.net/distributions/php-8.3.9.tar.gz三、配置编译安装 编译安装之前需要处理必要的依赖,在编译配置安装&…...
[K8S] K8S资源控制器Controller Manager(4)
文章目录 1. 常见的Pod控制器及含义2. Replication Controller控制器2.1 部署ReplicaSet 3. Deployment3.1部署Deployment3.2 运行Deployment3.3 镜像更新方式3.4 Deployment扩容3.5 滚动更新3.6 金丝雀发布(灰度发布)3.7 Deployment版本回退3.8 Deployment 更新策略 4. Daemon…...
C#,.NET常见算法
1.递归算法 1.1.C#递归算法计算阶乘的方法 using System;namespace C_Sharp_Example {public class Program{/// <summary>/// 阶乘:一个正整数的阶乘Factorial是所有小于以及等于该数的正整数的积,0的阶乘是1,n的阶乘是n࿰…...
KubeSphere介绍及一键安装k8s
KubeSphere介绍 官网地址:https://kubesphere.io/zh/ KubeSphere愿景是打造一个以 Kubernetes 为内核的云原生分布式操作系统,它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用(plug-and-play)的集成࿰…...
Spring 系列
SpringBoot 实体类(Entity)层 实体类(Entity)通常属于模型层(Model Layer)或领域层(Domain Layer)。它们代表应用程序中的核心业务数据结构,与数据库表结构紧密对应。在…...
基于opencv[python]的人脸检测
1 图片爬虫 这里的代码转载自:http://t.csdnimg.cn/T4R4F # 获取图片数据 import os.path import fake_useragent import requests from lxml import etree# UA伪装 head {"User-Agent": fake_useragent.UserAgent().random}pic_name 0 def request_pic…...
配置SSH公钥互信
目录 第一台主机:servera(172.25.250.101) 第一步:查看 . ssh目录下面是否为空 第二步:输入命令ssh-keygen 第三步: 再看查看一下. ssh目录 第四步: 输入命令 ssh-copy-id root172.25.250…...
WEB渗透Web突破篇-SQL注入(MSSQL)
注释符 -- 注释 /* 注释 */用户 SELECT CURRENT_USER SELECT user_name(); SELECT system_user; SELECT user;版本 SELECT version主机名 SELECT HOST_NAME() SELECT hostname;列数据库 SELECT name FROM master..sysdatabases; SELECT DB_NAME(N); — for N 0, 1, 2, ……...
DAY15
数组 冒泡排序 冒泡排序无疑是最为出名的排序算法之一,总共有八大排序 冒泡的代码还是相当简单的,两层循环,外层冒泡轮数,里层依次比较,江湖中人人尽皆知 我们看到嵌套循环,应该马上就可以得到这个算法的…...
pytest结合allure-pytest插件生成测试报告
目录 一、安装allure-pytest插件 二、下载allure 三、生成allure报告 四、效果展示 一、安装allure-pytest插件 二、下载allure 下载之后解压,解压之后还要配置环境变量(把allure目录下bin目录配置到系统变量的path路径),下…...
详细解析用户提交咨询
上一篇文章中写到了使用Server-Sent Events (SSE),并获取message里面的内容。 本篇文章主要是写,具体该如何实现的具体代码,代码见下方,可直接拿 async submitConsult() {this.scrollToBottom();if (!this.$checkLogin()) return;…...
UDP/TCP协议解析
我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》࿱…...
力扣94题(java语言)
题目 思路 使用一个栈来模拟递归的过程,以非递归的方式完成中序遍历(使用栈可以避免递归调用的空间消耗)。 遍历顺序步骤: 遍历左子树访问根节点遍历右子树 package algorithm_leetcode;import java.util.ArrayList; import java.util.List; import…...
JavaScript基础入门:构建动态Web世界的基石
简要介绍JavaScript作为互联网上最流行的编程语言之一,它在构建交互式网页、动态Web应用及服务器后端(通过Node.js)中的重要性。强调学习JS对于任何想要进入Web开发领域的人来说是不可或缺的。 1. JavaScript是什么? 定义JavaSc…...
01-client-go
想学习K8S源码,可以加 :mkjnnm 1、介绍 client-go 是用来和 k8s 集群交互的go语言客户端库,地址为:https://github.com/kubernetes/client-go client-go 的版本有两种标识方式: v0.x.y (For each v1.x.y Kubernetes…...
WebRTC QoS方法十三.2(Jitter延时的计算)
一、背景介绍 一些报文在网络传输中,会存在丢包重传和延时的情况。渲染时需要进行适当缓存,等待丢失被重传的报文或者正在路上传输的报文。 jitter延时计算是确认需要缓存的时间 另外,在检测到帧有重传情况时,也可适当在渲染时…...
PHP进阶:前后端交互、cookie验证、sql与php
单词:construct 构造 destruct 摧毁 empty 空的 trim 修剪 strip 清除 slash 斜线 special 特殊 char 字符 query 询问 构造方法(魔术方法) 构造方法是一种特殊的函数࿰…...
优思学院|ANOVA方差分析是什么?如何用EXCEL进行计算?
在数据分析、六西格玛管理领域中,ANOVA(方差分析)是一种基本的统计工具,广泛用于确定三组或三组以上的独立群体之间的平均值是否存在统计学上的显着差异。ANOVA的主要目的在于评估一个或多个因素的影响,通过比较不同样…...
Mindspore框架循环神经网络RNN模型实现情感分类|(三)RNN模型构建
Mindspore框架循环神经网络RNN模型实现情感分类 Mindspore框架循环神经网络RNN模型实现情感分类|(一)IMDB影评数据集准备 Mindspore框架循环神经网络RNN模型实现情感分类|(二)预训练词向量 Mindspore框架循环神经网络RNN模型实现…...
深度解读大语言模型中的Transformer架构
一、Transformer的诞生背景 传统的循环神经网络(RNN)和长短期记忆网络(LSTM)在处理自然语言时存在诸多局限性。RNN 由于其递归的结构,在处理长序列时容易出现梯度消失和梯度爆炸的问题。这导致模型难以捕捉长距离的依…...
foobar2000界面美化终极指南:3步打造你的专属音乐播放器
foobar2000界面美化终极指南:3步打造你的专属音乐播放器 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn 还在为foobar2000那套单调乏味的默认界面感到困扰吗?今天我要为你介绍…...
从零开始!DeepSeek-R1-Distill-Qwen-1.5B完整部署流程详解
从零开始!DeepSeek-R1-Distill-Qwen-1.5B完整部署流程详解 1. 模型简介与核心优势 1.1 什么是DeepSeek-R1-Distill-Qwen-1.5B? DeepSeek-R1-Distill-Qwen-1.5B是一款经过知识蒸馏优化的轻量级语言模型,由DeepSeek团队基于Qwen-1.5B架构开发…...
Open UI5 源代码解析之735:DynamicPageAccessibleLandmarkInfo.js
源代码仓库: https://github.com/SAP/openui5 源代码位置:src\sap.f\src\sap\f\DynamicPageAccessibleLandmarkInfo.js DynamicPageAccessibleLandmarkInfo 文件深度解析 文件定位与总体判断 当前分析对象位于 src/sap.f/src/sap/f/DynamicPageAccessibleLandmarkInfo.j…...
FlexASIO:打破专业音频门槛,让普通设备也能拥有专业级ASIO体验
FlexASIO:打破专业音频门槛,让普通设备也能拥有专业级ASIO体验 【免费下载链接】FlexASIO A flexible universal ASIO driver that uses the PortAudio sound I/O library. Supports WASAPI (shared and exclusive), KS, DirectSound and MME. 项目地址…...
Translategemma-27b-it与OCR结合:图片翻译完整流程
Translategemma-27b-it与OCR结合:图片翻译完整流程 1. 引言 想象一下这样的场景:你在异国旅行时看到一份精美的菜单,却因为语言障碍而不知道点什么;或者在研究国外产品时,标签上的说明文字完全看不懂。传统的翻译工具…...
别再只会用百度搜了!手把手教你用site语法精准锁定CSDN、知乎等网站的技术文章
技术搜索的艺术:用site语法打造高效信息获取系统 每次打开搜索引擎,输入技术关键词后,铺天盖地的结果中真正有用的内容却寥寥无几——这可能是大多数开发者都经历过的困扰。广告推广、低质量转载、过时教程混杂其中,而真正优质的C…...
Mac用户的移动Win10工坊:从WTG配置到驱动、激活、文件共享的完整避坑指南
Mac用户的移动Win10工坊:从WTG配置到驱动、激活、文件共享的完整避坑指南 当Mac用户需要运行Windows应用时,双系统方案往往是最佳选择。而通过Windows To Go(WTG)技术将Win10安装在移动硬盘上,不仅保留了Mac原生系统的…...
Nunchaku-flux-1-dev参数详解:CFG Scale、种子数等关键参数实战影响
Nunchaku-flux-1-dev参数详解:CFG Scale、种子数等关键参数实战影响 你是不是也遇到过这样的情况:用同一个模型,别人生成的图片细节满满、创意十足,而你生成的却总是差点意思,要么太放飞自我,要么又过于死…...
显卡驱动深度清理指南:用DDU解决驱动残留难题
显卡驱动深度清理指南:用DDU解决驱动残留难题 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-uninstaller 你是…...
万象视界灵坛惊艳案例:浅蓝格点背景中生成的‘同步率’进度条动态响应过程
万象视界灵坛惊艳案例:浅蓝格点背景中生成的"同步率"进度条动态响应过程 1. 效果展示概述 在视觉识别领域,传统界面往往显得单调乏味。万象视界灵坛通过创新的像素风格设计,将复杂的语义对齐过程转化为一场视觉盛宴。本次展示的核…...
