nginx实验总结

一、常见web信息

www(world wide web):万维网,也就是全球信息广播

网址:

URI:Uniform Resource Identifier,统一资源标识,分为URL和URN
URN:Uniform Resource Naming,统一资源命名,P2P下载使用的磁力链接是URN的一种实现
URL:Uniform Resorce Locator,统一资源定位符,用于描述某服务器某特定资源位置

区别:URL提供查找该事物的方法。URN仅用于命名,而不指定地址

http协议(Hyper Text Transfer Protocol):超文本传输协议,从服务器传输html到本地浏览器的传输协议,工作于B/S架构上。

1.1 URL构成

<scheme>://<user>:<password>@<host>:<port>/<path>:<params>?<query>#<frag>

scheme方案访问服务器以获取资源是要使用哪种协议
user用户某些方案访问资源时需要的用户名
password密码用户对应的密码,中间用:分隔
host主机资源宿主服务器的主机名或IP地址
port端口资源宿主服务器正在监听的端口号,很多方案有默认端口号
path路径服务器资源的本地名,由一个/将其与前面的URL组件分隔
params参数输入指定的参数,参数为名/值对,多个参数,用;分隔
query查询传递参数给程序,如数据库,用?分隔,多个查询用&分隔
frag片段一小片或一部分资源的名字,此组件在客户端使用,用#使用

1.2 http工作机制

一次http事务包括:http请求,http响应

1.3 web资源类型

静态文件:无需服务端做出额外处理,服务器端和客户端的文件内容相同
常见文件后缀:.html,.txt,.jpg,.js,.css,mp3,avi
动态文件:服务端执行程序,返回执行的结果,服务器端和客户端的文件内容不相同
常见文件后缀:.php,jsp,asp

1.4 mine(Multipurpose Internet Mail Extensions)多用途因特网邮件扩展

设计目的:为了在发送电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理
为了支持多媒体数据类型,HTTP协议中就使用了附加在文档之前的MIME数据类型信息来标识数据类型。
主要功能:让服务器将它们发送的多媒体数据的类型告诉浏览器
服务器将MIME标志符放入传送的数据中来告诉浏览器使用哪种插件读取相关文件
MIME类型存在于HTTP响应报文的响应头部信息里,它是一种文本标记
MIME格式: type/subtype 文件类型后缀(html txt jpg png... ...)

1.5 http访问请求完整过程

1.建立连接:
TCP的3次握手建立链接,向服务器发送http请求,服务器拒绝或允许
2.接受请求
接受客户端请求报文对某个资源的一次请求过程web响应访问模型

a.单进程I/O模型:启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应
b.多进程I/O模型:并行启动多个进程,每个进程响应一个连接请求
c.复用I/O结构:启动一个进程,同时响应N个连接请求
d.复用的多进程I/O模型:启动M个进程,每个进程响应N个连接请求,同时接收M*N个请求

3.处理请求:
服务器对请求报文进行解析,并获取请求的资源及请求方法等相关信息,根据方法,资源,首部和可选的主体部分对请求进行处理常用请求Method: GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS
4.访问资源:
服务器获取请求报文中请求的资源web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或动态运行后生成的资源
5.构建响应报文:
一旦Web服务器识别除了资源,就执行请求方法中描述的动作,并返回响应报文。响应报文中包含有响应状态码、响应首部,如果生成了响应主体的话,还包括响应主体
响应实体:如果事务处理产生了响应主体,就将内容放在响应报文中回送过去。响应报文中通常包括:
描述了响应主体MIME类型的Content-Type首部
描述了响应主体长度的Content-Length
实际报文的主体内容
        2)URL重定向:web服务构建的响应并非客户端请求的资源,而是资源另外一个访问路径
        3)MIME类型:Web服务器要负责确定响应主体的MIME类型。多种配置服务器的方法可将MIME类型与资源管理起来
6发送响应报文
Web服务器通过连接发送数据时也会面临与接收数据一样的问题。服务器可能有很多条到各个客户端的连接,有些是空闲的,有些在向服务器发送数据,还有一些在向客户端回送响应数据。服务器要记录连接的状态,还要特别注意对持久连接的处理。对非持久连接而言,服务器应该在发送了整条报文之后,关闭自己这一端的连接。对持久连接来说,连接可能仍保持打开状态,在这种情况下,服务器要正确地计算Content-Length首部,不然客户端就无法知道响应什么时候结束

1.6 http协议保温头部结构

1.6.1 请求报文

1.6.2 响应报文

二、nginx实验

2.1 nginx源码编译

1.将下载好的安装包放置到家目录,可以利用mobaxterm等软件直接拖动复制

2.解压

3.检测环境支持

4.下载所需依赖包

5.开始编译并将编译好文件放入指定位置

6.到指定目录的sbin文件中开启nginx服务

tar zxf nginx-1.24.0.tar.gz    #解压
cd nginx-1.24.0
./configure #检测环境依赖支持
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre --with-stream --with-stream_ssl_module

#添加所需依赖
yum install gcc
dnf sreach pcre
dnf install pcre-devel.x86_64 -y
dnf search openssl
dnf install openssl-devel.x86_64 -y
dnf search zlib
dnf install zlib-devel.x86_64 -y

/configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre --with-stream --with-stream_ssl_module

make #编译
make -j2    #使用两个核心(不建议使用,可能导致内存溢出)
make install    #是将objs中文件copy到指定位置
cd /usr/local/nginx/
useradd -s /sbin/nologin -M nginx    #创建不含家目录的系统用户
id nginx    #查看用户情况
./nginx    #开启nginx服务
ps aux | grep nginx    #查看进程
netstat -antlupe |grep nginx    #查看端口
du -sh nginx    #查看文件大小
./nginx -s stop    #停止服务
./nginx -s reload #重启服务
#.o结尾的都是模块

#减少nginx占用内存
/usr/local/nginx/sbin/nginx -s stop #关闭nginx
rm -fr /usr/local/nginx/ #卸载软件
make clean #删除编译后代码
vim auto/cc/gcc #关闭debug功能

#编辑用户环境变量文件
vim ~/.bash_profile		 #编辑当前用户环境变量文件
source ~/.bash_profile #加载配置使配置生效

2.2 平滑升级及回滚

curl -I 172.25.254.100 #查看版本
vim /root/nginx-1.24.0/src/core/nginx.h #可修改版本名称
wget https://nginx.org/download/nginx-1.26.2.tar.gz    #网上下载
tar zxf nginx-1.26.2.tar.gz
tar zxf echo-nginx-module-0.63.tar.gz   #提前下载好的模块解压
cd nginx-1.26.2/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --add-module=/root/echo-nginx-module-0.63 --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre --with-stream --with-stream_ssl_module
make    #注意,不用make install
cd /usr/local/nginx/sbin
cp nginx nginx.old
\cp -f /root/nginx-1.26.2/objs/nginx /usr/local/nginx/sbin/
kill -USR2 57949 #杀死master进程,只启动新进程,不监听端口
kill -WINCH 57949 #回收worker进程
kill -HUP 57949 #激活旧版本
kill -WICH 58007 #回收新版本master进程 
cd /usr/local/nginx/sbin
cp nginx nginx.new
\cp -f nginx.old nginx
kill -9 58007    #杀掉新进程

2.3 nginx命令参数

参数意义
-v查看版本信息
-V查看详细信息
-t检测配置文件
-T检测并打印
-q静默模式
-s发送信号,stop\quit\reopen\reload #reload信号在不关闭进程的情况下,使其重新生效,会生成新的worker,但是master不会重新生成
-p指定nginx位置
-c配置文件路径
-g设置全局指令,注意和配置文件不要同时配置,否则冲突

2.4 设定nginx开机启动文件

2.5 全局配置参数优化

2.6 子配置文件

vim /usr/local/nginx/conf/nginx.conf
mkdir -p /usr/local/nginx/conf.d
vim /usr/local/nginx/conf.d/vhost.conf

location 用法  详解

符号含义
=用于标准uri前,需要请求字串与uri精确匹配,大小敏感,如果匹配成功就停止向下匹配并立
即处理请求
^~用于标准uri前,表示包含正则表达式,并且匹配以指定的正则表达式开头
对uri的最左边部分做匹配检查,不区分字符大小写
~用于标准uri前,表示包含正则表达式,并且区分大小写
~*匹配起始于此uri的所有的uri
\用于标准uri前,表示包含正则表达式并且转义字符。可以将 . * ?等转义为普通符号

2.7 用户认证

2.8 自定义错误页面

2.9 自定义日志

2.10 文件检测

vim /usr/local/nginx/conf.d/vhost.conf
nginx -s reload
rm -fr /data/web/html/index.html
rm -fr /data/web/html/error/
mkdir /data/web/html/error/
echo error default > /data/web/html/error/default.htm
curl www.timinglee.org

2.11 长链接管理

dnf install telnet -y    #下载测试工具
vim /usr/local/nginx/conf/nginx.conf

2.12 下载服务器

mkdir /data/web/download
dd if=/dev/zero of=/data/web/download/wfile bs=1M count=100
vim /usr/local/nginx/conf.d/vhost.conf
nginx -s reload

autoindex on | off; #自动文件索引功能,默为off
autoindex_exact_size on | off;  #计算文件确切大小(单位bytes),off 显示大概大小(单位K、M),默认on
autoindex_localtime on | off ; #显示本机时间而非GMT(格林威治)时间,默认off
autoindex_format html | xml | json | jsonp; #显示索引的页面文件风格,默认html
limit_rate rate; #限制响应客户端传输速率(除GET和HEAD以外的所有方法),单位
B/s,bytes/second, #默认值0,表示无限制,此指令由
ngx_http_core_module提供
set $limit_rate 4k; #也可以通变量限速,单位B/s,同时设置,此项优级高.

2.13 状态页

vim /usr/local/nginx/conf.d/status.conf
nginx -s reload

Active connections:  #当前处于活动状态的客户端连接数
                                 #包括连接等待空闲连接数=reading+writing+waiting
accepts: #统计总值,Nginx自启动后已经接受的客户端请求连接的总数。
handled: #统计总值,Nginx自启动后已经处理完成的客户端请求连接总数
               #通常等于accepts,除非有因worker_connections限制等被拒绝的连接 
requests: #统计总值,Nginx自启动后客户端发来的总的请求数

2.14 数据压缩

vim /usr/local/nginx/conf/nginx.conf
nginx -s reload
curl --head --compressed 172.25.254.100/big.html
echo hello timinglee > /data/web/html/small.html
du -sh /usr/local/nginx/logs/access.log
cat /usr/local/nginx/logs/access.log
cat /usr/local/nginx/logs/access.log > /data/web/html/big.html
curl --head --compressed 172.25.254.100/big.html
curl --head --compressed 172.25.254.100/small.html

#启用或禁用gzip压缩,默认关闭
gzip on | off; 
#压缩比由低到高从1到9,默认为1,值越高压缩后文件越小,但是消耗cpu比较高。基本设定未4或者5
gzip_comp_level 4;
#禁用IE6 gzip功能,早期的IE6之前的版本不支持压缩
gzip_disable "MSIE [1-6]\."; 
#gzip压缩的最小文件,小于设置值的文件将不会压缩
gzip_min_length 1k; 
#启用压缩功能时,协议的最小版本,默认HTTP/1.1
gzip_http_version 1.0 | 1.1; 
#指定Nginx服务需要向服务器申请的缓存空间的个数和大小,平台不同,默认:32 4k或者16 8k;
gzip_buffers number size;  
#指明仅对哪些类型的资源执行压缩操作;默认为gzip_types text/html,不用显示指定,否则出错
gzip_types mime-type ...; 
#如果启用压缩,是否在响应报文首部插入“Vary: Accept-Encoding”,一般建议打开
gzip_vary on | off; 
#预压缩,即直接从磁盘找到对应文件的gz后缀的式的压缩文件返回给用户,无需消耗服务器CPU
#注意: 来自于ngx_http_gzip_static_module模块
gzip_static on | off;3

2.15 nginx变量

变量可以分为内置变量和自定义变量,内置变量是由nginx模块自带

内置变量

$remote_addr;         #存放了客户端的地址,注意是客户端的公网IP
$args;         #变量中存放了URL中的所有参数
        #例如:https://search.jd.com/Search?keyword=手机&enc=utf-8
        #返回结果为: keyword=手机&enc=utf-8
$is_args        #如果有参数为? 否则为空
$document_root;         #保存了针对当前资源的请求的系统根目录,例如:/webdata/nginx/timinglee.org/lee。
$document_uri;        #保存了当前请求中不包含参数的URI,注意是不包含请求的指令
        #比如:http://lee.timinglee.org/var?\id=11111会被定义为/var 
        #返回结果为:/var
$host;         #存放了请求的host名称
        limit_rate 10240;
        echo $limit_rate;
        #如果nginx服务器使用limit_rate配置了显示网络速率,则会显示,如果没有设置, 则显示0
$remote_port;        #客户端请求Nginx服务器时随机打开的端口,这是每个客户端自己的端口
$remote_user;        #已经经过Auth Basic Module验证的用户名
$request_body_file;        #做反向代理时发给后端服务器的本地资源的名称
$request_method;        #请求资源的方式,GET/PUT/DELETE等
$request_filename;        #当前请求的资源文件的磁盘路径,由root或alias指令与URI请求生成的文件绝对路径,
        #如:webdata/nginx/timinglee.org/lee/var/index.html
$request_uri;        #包含请求参数的原始URI,不包含主机名,相当于:$document_uri?$args,
        #例如:/main/index.do?id=20190221&partner=search 
$scheme;        #请求的协议,例如:http,https,ftp等
$server_protocol;        #保存了客户端请求资源使用的协议的版本,例如:HTTP/1.0,HTTP/1.1,HTTP/2.0等
$server_addr;        #保存了服务器的IP地址
$server_name;        #虚拟主机的主机名
$server_port;        #虚拟主机的端口号
$http_user_agent;        #客户端浏览器的详细信息
$http_cookie;        #客户端的所有cookie信息
$cookie_<name>        #name为任意请求报文首部字部cookie的key名
$http_<name>        #name为任意请求报文首部字段,表示记录请求报文的首部字段,ame的对应的首部字段名需要为小写,如果有横线需要替换为下划线
#示例: 
        echo $http_user_agent; 
        echo $http_host;
$sent_http_<name>        #name为响应报文的首部字段,name的对应的首部字段名需要为小写,如果有横线需要替换为下划线,此变量有问题
        echo $sent_http_server;
$arg_<name>        #此变量存放了URL中的指定参数,name为请求url中指定的参数
        echo $arg_id;

自定义变量名称和值,使用指令set $variable value;
语法格式:

Syntax: set $variable value;
Default: —
Context: server, location, if

2.16 rewrite模块

if

= #比较变量和字符串是否相等,相等时if指令认为该条件为true,反之为false
!= #比较变量和字符串是否不相等,不相等时if指令认为条件为true,反之为false
~ #区分大小写字符,可以通过正则表达式匹配,满足匹配条件为真,不满足匹配条件为假
!~ #区分大小写字符,判断是否匹配,不满足匹配条件为真,满足匹配条件为假
~* #不区分大小写字符,可以通过正则表达式匹配,满足匹配条件为真,不满足匹配条件为假
!~* #不区分大小字符,判断是否匹配,满足匹配条件为假,不满足匹配条件为真
-f 和 !-f #判断请求的文件是否存在和是否不存在
-d 和 !-d #判断请求的目录是否存在和是否不存在
-x 和 !-x #判断文件是否可执行和是否不可执行
-e 和 !-e #判断请求的文件或目录是否存在和是否不存在(包括文件,目录,软链接)
#注意:
#如果$变量的值为空字符串或0,则if指令认为该条件为false,其他条件为true。
#nginx 1.0.1之前$变量的值如果以0开头的任意字符串会返回false

set

指定key并给其定义一个变量,变量可以调用Nginx内置变量赋值给key
另外set定义格式为set $key value,value可以是text, variables和两者的组合。

break

用于中断当前相同作用域(location)中的其他Nginx配置
与该指令处于同一作用域的Nginx配置中,位于它前面的配置生效
位于后面的 ngx_http_rewrite_module 模块中指令就不再执行
Nginx服务器在根据配置处理请求的过程中遇到该指令的时候,回到上一层作用域继续向下读取配置,该指令可以在server块和locationif块中使用
注意: 如果break指令在location块中后续指令还会继续执行,只是不执行ngx_http_rewrite_module 模块的指令,其它指令还会执行

return

return用于完成对请求的处理,并直接向客户端返回响应状态码,比如:可以指定重定URL(对于特殊重定向状态码,301/302等) 或者是指定提示文本内容(对于特殊状态码403/500等),处于此指令后的所有配置都将不被执行,return可以在server、if 和 location块进行配置
return code;         #返回给客户端指定的HTTP状态码
return code [text]; #返回给客户端的状态码及响应报文的实体内容
                             #可以调用变量,其中text如果有空格,需要用单或双引号
return code URL; #返回给客户端的URL地址

2.16.2 rewrite指令

通过正则表达式的匹配来改变URI,可以同时存在一个或多个指令,按照顺序依次对URI进行匹配,rewrite主要是针对用户请求的URL或者是URI做具体处理

rewrite regex replacement [flag];

.         #匹配除换行符以外的任意字符
\w         #匹配字母或数字或下划线或汉字
\s         #匹配任意的空白符
\d         #匹配数字
\b         #匹配单词的开始或结束
^         #匹配字付串的开始
$         #匹配字符串的结束
*         #匹配重复零次或更多次
+         #匹配重复一次或更多次
?         #匹配重复零次或一次
(n)         #匹配重复n次
{n,}         #匹配重复n次或更多次
{n,m}         #匹配重复n到m次
*?         #匹配重复任意次,但尽可能少重复
+?         #匹配重复1次或更多次,但尽可能少重复
??         #匹配重复0次或1次,但尽可能少重复
{n,m}?         #匹配重复n到m次,但尽可能少重复
{n,}?         #匹配重复n次以上,但尽可能少重复
\W           #匹配任意不是字母,数字,下划线,汉字的字符
\S         #匹配任意不是空白符的字符
\D         #匹配任意非数字的字符
\B         #匹配不是单词开头或结束的位置
[^x]         #匹配除了x以外的任意字符
[^lee]         #匹配除了magedu 这几个字母以外的任意字符

2.16.3 rewrite flag 使用介绍 
利用nginx的rewrite的指令,可以实现url的重新跳转,rewrite有四种不同的flag,分别是redirect(临时重定向302)、permanent(永久重定向301)、break和last。其中前两种是跳转型的flag,后两种是代理型

        跳转型指由客户端浏览器重新对新地址进行请求

        代理型是在WEB服务器内部实现跳转
flag 说明

redirect;
#临时重定向,重写完成后以临时重定向方式直接返回重写后生成的新URL给客户端
#由客户端重新发起请求;使用相对路径,或者http://或https://开头,状态码:302
permanent;
#重写完成后以永久重定向方式直接返回重写后生成的新URL给客户端
#由客户端重新发起请求,状态码:301
break;
#重写完成后,停止对当前URL在当前location中后续的其它重写操作
#而后直接跳转至重写规则配置块之后的其它配置,结束循环,建议在location中使用
#适用于一个URL一次重写
last;
#重写完成后,停止对当前URI在当前location中后续的其它重写操作,
#而后对新的URL启动新一轮重写检查,不建议在location中使用
#适用于一个URL多次重写,要注意避免出现超过十次以及URL重写后返回错误的给用户

2.16.4 rewrite案例: 域名永久与临时重定向 
域名的临时的调整,后期可能会变,之前的域名或者URL可能还用、或者跳转的目的域名和URL还会跳转,这种情况浏览器不会缓存跳转,临时重定向不会缓存域名解析记录(A记录),但是永久重定向会缓存。

2.17 判断文件是否存在

mkdir /data/web/html/{test1,test2,break,last} -p
echo test1 > /data/web/html/test1/index.html
echo test2 > /data/web/html/test2/index.html
echo break > /data/web/html/break/index.html
echo last > /data/web/html/last/index.html
vim /usr/local/nginx/conf.d/vars.conf
nginx -s reload

2.18 全栈加密

mkdir /usr/local/nginx/certs
openssl req -newkey rsa:2048 -nodes -sha256 -keyout /usr/local/nginx/certs/timinglee.org.key -x509 -days 365 -out /usr/local/nginx/certs/timinglee.org.crt

2.19 防盗链

mkdir -p /data/web/html/images

2.20 反向代理及动静分离

172.25.254.100
vim /usr/local/nginx/conf.d/vhost.conf
nginx -s reload

172.25.254.10
yum install httpd php -y
systemctl enable --now httpd
systemctl restart httpd
vim /var/www/html/index.php

172.25.254.20
yum install httpd -y
systemctl enable --now httpd
mkdir /var/www/html/static
echo static 172.25.254.20 > /var/www/html/static/index.html
vim /etc/httpd/conf/httpd.conf 


2.21 缓存

ab -n1000 -c100 http://www.timinglee.org/static/index.html    #压测

2.22 反向代理负载均衡

在http中定义缓存信息

proxy_cache_path /var/cache/nginx/proxy_cache #定义缓存保存路径,proxy_cache会自动创建
   levels=1:2:2 #定义缓存目录结构层次
   #1:2:2可以生成2^4x2^8x2^8=2^20=1048576个目录
   keys_zone=proxycache:20m     #指内存中缓存的大小,主要用于存放key和metadata
(如:使用次数)
   #一般1M可存放8000个左右的key
   
   inactive=120s       #缓存有效时间
   max_size=10g;     #最大磁盘占用空间,磁盘存入文件内容的缓存空间最大值
#调用缓存功能,需要定义在相应的配置段,如server{...};或者location等
proxy_cache proxycache;
proxy_cache_key $request_uri; #对指定的数据进行MD5的运算做为缓存的key
proxy_cache_valid 200 302 301 10m; #指定的状态码返回的数据缓存多长时间
proxy_cache_valid any 1m;   #除指定的状态码返回的数据以外的缓存多长时间,必须设置,否则不会缓存

#server支持的parameters如下:
weight=number #设置权重,默认为1,实现类似于LVS中的WRR,WLC等
max_conns=number #给当前后端server设置最大活动链接数,默认为0表示没有限制
max_fails=number #后端服务器的下线条件,当客户端访问时,对本次调度选中的后端服务器连续进行检测多少次,如果都失败就标记为不可用,默认为1次,当客户端访问时,才会利用TCP触发对探测后端服务器健康性检查,而非周期性的探测
fail_timeout=time #后端服务器的上线条件,对已经检测到处于不可用的后端服务器,每隔此时间间隔再次进行检测是否恢复可用,如果发现可用,则将后端服务器参与调度,默认为10秒
backup   #设置为备份服务器,当所有后端服务器不可用时,才会启用此备用服务器
down     #标记为down状态,可以平滑下线后端服务器
resolve #当server定义的是主机名的时候,当A记录发生变化会自动应用新IP而不用重启Nginx

hash KEY [consistent];
#基于指定请求报文中首部字段或者URI等key做hash计算,使用consistent参数,将使用ketama一致性hash算法,适用于后端是Cache服务器(如varnish)时使用,consistent定义使用一致性hash运算,一致性hash基于取模运算
hash $request_uri consistent;         #基于用户请求的uri做hash
hash $cookie_sessionid         #基于cookie中的sessionid这个key进行hash调度,实现会话绑定
ip_hash;        #源地址hash调度方法,基于的客户端的remote_addr(源地址IPv4的前24位或整个IPv6地址)做hash计算,以实现会话保持
least_conn;        #最少连接调度算法,优先将客户端请求调度到当前连接最少的后端服务器,相当于LVS中的WLC

2.23 编译php

yum install -y bzip2 systemd-devel libxml2-devel sqlite-devel libpng-devel libcurl-devel oniguruma-devel
cd php-3.8.9
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-curl --with-iconv --with-mhash --with-zlib --with-openssl --enable-mysqlnd --with-mysqli --with-pdo-mysql --disable-debug --enable-sockets --enable-soap --enable-xml --enable-ftp --enable-gd --enable-exif --enable-mbstring --enable-bcmath --with-fpm-systemd
yum install -y bzip2 systemd-devel libxml2-devel sqlite-devel libpng-devel libcurl-devel
cd /mnt/
dnf list oniguruma
wget https://mirrors.aliyun.com/rockylinux/9.4/devel/x86_64/kickstart/Packages/o/oniguruma-devel-6.9.6-1.el9.5.x86_64.rpm
dnf install oniguruma-devel-6.9.6-1.el9.5.x86_64.rpm
make && make install

cd /usr/local/php/etc/
cp -p php-fpm.conf.default php-fpm.conf
vim php-fpm.conf    #图1

cd /usr/local/php/etc/php-fpm.d
cp -p www.conf.default www.conf
vim www.conf
cd /root/php-8.3.9
cp php.ini-production /usr/local/php/etc/php.ini
cd /usr/local/php/etc
vim php.ini    #图2

cd /root/php-8.3.9/sapi/fpm
cp php-fpm.service /lib/systemd/system/
vim /lib/systemd/system/php-fpm.service    #图3

systemctl daemon-reload
systemctl start php-fpm
netstat -antlupe | grep php
cd /usr/local/php/etc/php-fpm.d/
vim www.conf

systemctl restart php-fpm

2.24 PHP 使用

mkdir -p /data/web/php
vim ~/.bash_profile    #添加环境变量
source ~/.bash_profile
vim /data/web/php/index.php
vim /usr/local/nginx/conf/fastcgi.conf
cd /usr/local/nginx/conf
cd ..
mkdir conf.d
vim conf/nginx.conf
cd conf.d
vim vhost.conf


2.25 缓存优化

dnf install autoconf
phpize
./configure && make && make install
cd /usr/local/php/lib/php/extensions/no-debug-non-0831/
systemctl restart php-fpm.service
dnf install memcached -y
vim /etc/sysconfig/memcached
systemctl start memcached.service
netstat -antlupe | grep mem
cp example.php memcache.php /data/web/php/
vim /data/web/php/memcache.php 

vim /usrs/local/nginx/conf.d/vhost.conf

2.26 nginx二次开发

killall -9 nginx
tar zxf openresty-1.25.3.1.tar.gz
cd openresty-1.25.3.1
./configure --prefix=/usr/local/openresty  --with-http_realip_module  --with-http_sub_module  --with-http_gzip_static_module --with-http_stub_status_module --without-http_memcached_module --with-stream --with-stream_ssl_module   --with-pcre --with-http_ssl_module
gmake && gmake install

vim ~/.bash_profile
source ~/.bash_profile
openresty

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值