有没有专门做特产的网站,温州自助建站公司,凡科快图下载,企业邮箱的推荐一、web服务介绍
1、Apache的三种模型
#xff08;1#xff09;Apache prefork
预派生模式#xff0c;有一个主控制进程#xff0c;然后生成多个子进程#xff0c;使用select模型#xff0c;最大并发1024每个子进程有一个独立的线程响应用户请求相对比较占用内存…一、web服务介绍
1、Apache的三种模型
1Apache prefork
预派生模式有一个主控制进程然后生成多个子进程使用select模型最大并发1024每个子进程有一个独立的线程响应用户请求相对比较占用内存但是比较稳定可以设置最大和最小进程数是最古老的一种模式,也是最稳定的模式适用于访问量不是很大的场景
优点稳定缺点每个用户请求需要对应开启一个进程 , 占用资源较多并发性差 , 不适用于高并发场景 2Apache worker
一种多进程和多线程混合的模型有一个控制进程启动多个子进程每个子进程里面包含固定的线程使用线程程来处理请求当线程不够使用的时候会再启动一个新的子进程,然后在进程里面再启动线程处理请求由于其使用了线程处理请求因此可以承受更高的并发
优点相比 prefork 占用的内存较少可以同时处理更多的请求缺点使用 keepalive 的长连接方式某个线程会一直被占据即使没有传输数据也需要一直等等到超时才会被释放。如果过多的线程被这样占据也会导致在高并发场景下的无服务线程可用 3Apache event
Apache 中最新的模式 2012 年发布的 apache 2.4.X 系列正式支持 event 模型 , 属于事件驱动模型 (epoll) 每个进程响应多个请求在现在版本里的已经是稳定可用的模式 它和 worker 模式很像最大的区别在于它解决了 keepalive 场景下长期被占用的线程的资源浪费问题某些线程因为被keepalive 空挂在哪里等待中间几乎没有请求过来甚至等到超时 event MPM 中会有一个专门的线程来管理这些 keepalive 类型的线程当有真实请求过来的时候将请求传递给服务线程执行完毕后又允许它释放。这样增强了高并发场景下的请求处理能力
优点单线程响应多请求占据更少的内存高并发下表现更优秀会有一个专门的线程来管理keepalive类型的线程当有真实请求过来的时候将请求传递给服务线程执行完毕后又允许它释放缺点没有线程安全控制 2、nginx工作场景 3、影响用户体验因素
客户端
客户端硬件配置客户端网络速率客户端与服务端距离
服务器
服务端网络速率服务端硬件配置服务端架构设计服务端应用程序工作模式服务端并发数量服务端响应文件大小及数量 buffer cache服务端I/O压力1.2.4 服务端 I/O 流程 二、服务器端I/O流程
磁盘I/O网络I/O : 一切皆文件,本质为对socket文件的读写
1、磁盘I/O
磁盘 I/O 是进程向内核发起系统调用请求磁盘上的某个资源比如是 html 文件或者图片然后 内核通过相应的驱动程序将目标文件加载到内核的内存空间加载完成之后把数据从内核内存再复 制给进程内存如果是比较大的数据也需要等待时间
1机械磁盘的寻道时间、旋转延迟和数据传输时间
寻道时间是指磁头移动到正确的磁道上所花费的时间寻道时间越短则I/O处理就越快目前磁盘的寻道时间一般在3-15毫秒左右。
常见的机械磁盘平均寻道时间值
7200转/分的磁盘平均物理寻道时间9毫秒10000转/分的磁盘平均物理寻道时间6毫秒15000转/分的磁盘平均物理寻道时间4毫秒
旋转延迟是指将磁盘片旋转到数据所在的扇区到磁头下面所花费的时间旋转延迟取决于磁盘的转速通常使用磁盘旋转一周所需要时间的1/2之一表示比如7200转的磁盘平均训传延迟大约为 60*1000/7200/24.17毫秒公式的意思为 每分钟60秒*1000毫秒每秒/7200转每分/2如果是 15000转的则为60*1000/15000/22毫秒
常见磁盘的平均延迟时间
7200转的机械盘平均延迟60*1000/7200/2 4.17ms10000转的机械盘平均延迟60*1000/10000/2 3ms15000转的机械盘平均延迟60*1000/15000/2 2ms
数据传输时间指的是读取到数据后传输数据的时间主要取决于传输速率这个值等于数据大小除以传输速率目前的磁盘接口每秒的传输速度可以达到600MB因此可以忽略不计。
每秒最大IOPS的计算方法
7200转的磁盘IOPS计算方式1000毫秒/(9毫秒的寻道时间4.17毫秒的平均旋转延迟时 间)1000/13.1375.9 IOPS10000转的磁盘的IOPS计算方式1000毫秒/(6毫秒的寻道时间3毫秒的平均旋转延迟时 间)1000/9111IOPS15000转的磁盘的IOPS计算方式15000毫秒/(4毫秒的寻道时间2毫秒的平均旋转延迟时 间)1000/6166.6 IOPS
2、网络I/O
就是网络通信也就是网络协议栈到用户空间进程的 I/O
网络 I/O 处理过程
获取请求数据客户端与服务器建立连接发出请求服务器接受请求1-3构建响应当服务器接收完请求并在用户空间处理客户端的请求直到构建响应完成4返回数据服务器将已构建好的响应再通过内核空间的网络 I/O 发还给客户端5-7
不论磁盘和网络 I/O 每次I/O 都要经由两个阶段
将数据从文件先加载至内核内存空间缓冲区等待数据准备完成时间较长将数据从内核缓冲区复制到用户空间的进程的内存中时间较短
三、nginx
1、功能
静态的web资源服务器html图片jscsstxt等静态资源http/https协议的反向代理结合FastCGI/uWSGI/SCGI等协议反向代理动态资源请求tcp/udp协议的请求转发反向代理imap4/pop3协议的反向代理
2、基础属性
模块化设计较好的扩展性高可靠性支持热部署不停机更新配置文件升级版本更换日志文件低内存消耗10000个keep-alive连接模式下的非活动连接仅需2.5M内存event-driven,aio,mmapsendfile
3、web服务相关的功能
虚拟主机server支持 keep-alive 和管道连接(利用一个连接做多次请求)访问日志支持基于日志缓冲提高其性能
url rewirte路径别名基于IP及用户的访问控制支持速率限制及并发数限制重新配置和在线升级而无须中断客户的工作进程
4、进程结构 1web请求处理机制
多进程方式服务器每接收到一个客户端请求就有服务器的主进程生成一个子进程响应客户端直到用户关闭连接这样的优势是处理速度快子进程之间相互独立但是如果访问过大会导致服务器资源耗尽而无法提供请求多线程方式与多进程方式类似但是每收到一个客户端请求会有服务进程派生出一个线程和此客户端进行交互一个线程的开销远远小于一个进程因此多线程方式在很大程度减轻了web服务器对系统资源的要求但是多线程也有自己的缺点即当多个线程位于同一个进程内工作的时候可以相互访问同样的内存地址空间所以他们相互影响一旦主进程挂掉则所有子线程都不能工作了IIS服务器使用了多线程的方式需要间隔一段时间就重启一次才能稳定。 Nginx 是多进程组织模型而且是一个由 Master 主进程和 Worker 工作进程组成。
2主进程的功能 (master process)
对外接口接收外部的操作信号对内转发根据外部的操作的不同通过信号管理 Worker监控监控 worker 进程的运行状态worker 进程异常终止后自动重启 worker 进程读取Nginx 配置文件并验证其有效性和正确性建立、绑定和关闭socket连接按照配置生成、管理和结束工作进程接受外界指令比如重启、升级及退出服务器等指令不中断服务实现平滑升级重启服务并应用新的配置开启日志文件获取文件描述符不中断服务实现平滑升级升级失败进行回滚处理编译和处理perl脚本
3工作进程 worker process 的功能
所有 Worker 进程都是平等的实际处理网络请求由 Worker 进程处理Worker进程数量一般设置为核心数充分利用CPU资源同时避免进程数量过多导致进程竞争CPU资源增加上下文切换的损耗接受处理客户的请求将请求依次送入各个功能模块进行处理I/O调用获取响应数据与后端服务器通信接收后端服务器的处理结果缓存数据访问缓存索引查询和调用缓存数据发送请求结果响应客户的请求接收主程序指令比如重启、升级和退出等
5、进程间通信
在 Nginx 服务器启动时主进程根据配置文件决定工作进程数量使用 fork()函数生成工作进程后将其加入全局工作表。主进程与工作进程通过单向管道通信主进程接收外界信号后通过管道向工作进程发送指令等信息工作进程捕获管道可读事件并解析指令执行动作。worker 进程之间通信原理类似但由于相互隔离需通过主进程实现。主进程在生成工作进程后遍历进程表将新进程信息传递给其他进程以准备通信。worker 进程间通信时一方通过主进程提供的对方进程 PID 找到对应管道写入指令另一方捕获事件解析执行。此外worker 进程还可通过共享内存通信如 upstream 中的 zone 及 limit_req、limit_conn 中的 zone 等利用操作系统的共享内存机制实现。
6、启动及HTTP连接建立
Nginx 启动时Master 进程加载配置文件Master 进程初始化监听的 socketMaster 进程fork 出多个 Worker 进程Worker 进程竞争新的连接获胜方通过三次握手建立 Socket 连接并处理请求7
7、模块介绍
核心模块是 Nginx 服务器正常运行必不可少的模块提供错误日志记录 、配置文件解析 、事件驱动机制 、进程管理等核心功能标准HTTP模块提供 HTTP 协议解析相关的功能比如 端口配置 、 网页编码设置 、 HTTP响应头设置 等等可选HTTP模块主要用于扩展标准的 HTTP 功能让 Nginx 能处理一些特殊的服务比如 Flash多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等邮件服务模块主要用于支持 Nginx 的 邮件服务 包括对 POP3 协议、 IMAP 协议和 SMTP协议的支持Stream服务模块: 实现反向代理功能,包括TCP协议代理第三方模块是为了扩展 Nginx 服务器应用完成开发者自定义功能比如 Json 支持、 Lua 支持等
分类 四、编译及安装
关闭selinux和防火墙
在纯净的实验环境下下载源码包
wgte http://nginx.org/download/nginx-1.24.0.tar.gz
下载依赖包
dnf install gcc pcre-devel zlib-devel openssl-devel -y
创建用户条件不可以远程登录且没有家目录
useradd -s /sbin/nologin -M nginx
解压安装包
tar zxf nginx-1.24.0.tar.gz
关闭debug
cd nginx-1.24.0/
[rootnginx nginx-1.24.0/]# vim auto/cc/gcc 编译安装的程序 ./configure --prefix/usr/local/nginx --usernginx --groupnginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module 说明
--usernginx指定nginx运行用户 --groupnginx 指定nginx运行组 --with-http_ssl_module 支持https://--with-http_v2_module支持http版本2--with-http_realip_module 支持ip透传--with-http_stub_status_module 支持状态页面--with-http_gzip_static_module 支持压缩--with-pcre 支持正则--with-stream 支持tcp反向代理--with-stream_ssl_module支持tcp的ssl加密--with-stream_realip_module 支持tcp的透传ip
安装nginx
make install
查看一下有四个主要的目录
ls /usr/local/nginx/ conf html logs sbin 说明
conf保存nginx所有的配置文件其中nginx.conf是nginx服务器的最核心最主要的配置文件其他 的.conf则是用来配置nginx相关的功能的例如fastcgi功能使用的是fastcgi.conf和fastcgi_params 两个文件配置文件一般都有一个样板配置文件是以.default为后缀使用时可将其复制并将default后缀 去掉即可。html目录中保存了nginx服务器的web文件但是可以更改为其他目录保存web文件,另外还有一个50x的web 文件是默认的错误页面提示页面。logs用来保存nginx服务器的访问日志错误日志等日志logs目录可以放在其他路径比 如/var/logs/nginx里面。sbin保存nginx二进制启动脚本可以接受不同的参数以实现不同的功能。
验证版本及编译参数
vim ~/.bash_profile
export PATH$PATH:/usr/local/nginx/sbin
source ~/.bash_profile
[rootnginx ~]# nginx -V
nginx version: nginx/1.24.0
built by gcc 11.4.1 20231218 (Red Hat 11.4.1-3) (GCC)
built with OpenSSL 3.0.7 1 Nov 2022
TLS SNI support enabled
configure arguments: --groupnginx --with-http_ssl_module --with-http_v2_module -
-with-http_realip_module --with-http_stub_status_module --withhttp_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --
with-stream_realip_module
查看当前进程
ps aux | grep nginx 五、平滑升级回滚
为什么要平滑升级
比如我们需要对Nginx版本进行升级以满足对其功能的需求例如添加新模块需要新功能而此时Nginx又在跑着业务无法停掉这时我们就可能选择平滑升级 将旧Nginx二进制文件换成新Nginx程序文件注意先备份)向master进程发送USR2信号master进程修改pid文件名加上后缀.oldbin,成为nginx.pid.oldbinmaster进程用新Nginx文件启动新master进程成为旧master的子进程,系统中将有新旧两个Nginx主进程共同提供Web服务,当前新的请求仍然由旧Nginx的worker进程进行处理,将新生成的master进程的PID存放至新生成的pid文件nginx.pid向旧的Nginx服务进程发送WINCH信号使旧的Nginx worker进程平滑停止向旧master进程发送QUIT信号关闭老master并删除Nginx.pid.oldbin文件如果发现升级有问题,可以回滚∶向老master发送HUP向新master发送QUIT
1、升级
下载高版本的nginx并解压
wget http://nginx.org/download/nginx-1.26.2.tar.gz
tar zxf nginx-1.26.2.tar.gz
关闭debug
cd nginx-1.24.0/
[rootnginx nginx-1.24.0/]# vim auto/cc/gcc 使用ls命令将echo-nginx-module-0.63.tar.gz文件拖入虚拟机并解压
编译安装的程序 ./configure --prefix/usr/local/nginx --usernginx --groupnginx --add-module/root/echo-nginx-module-0.63 --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module 安装程序
make
将之前的旧版本nginx命令进行备份
cd /usr/local/nginx/sbin/
cp nginx nginx.24
将新版本的nginx命令复制到旧版本中
\cp -f /root/nginx/nginx-1.26.1/objs/nginx /usr/local/nginx/sbin
检测一下
nginx -t
回收旧版本
kill -WINCH 1567
查看 2、回滚
mv nginx nginx.26
mv nginx.24 nginx
回收新版本
kill -WINCH 1575
六、启动文件编写
关闭nginx服务
nginx -s stop
编写启动文件 保存退出后就完成了
七、全局配置
Main 全局配置段常见的配置指令分类
正常运行必备的配置优化性能相关的配置用于调试及定位问题相关的配置事件驱动相关的配置 vim /usr/local/nginx/conf/nginx.conf 编辑子配置文件 vim /usr/local/nginx/conf.d/vhost.conf
测试
八、反向代理 reverse proxy
指代理外网用户的请求到内部的指定的服务器并将数据返回给用户的一种方式这是用的比较多的一种方式。 Nginx 除了可以在企业提供高性能的 web 服务之外另外还可以将 nginx 本身不具备的请求通过某种预定义的协议转发至其它服务器处理不同的协议就是Nginx 服务器与其他服务器进行通信的一种规范主要在不同的场景使用以下模块实现不同的功能 ngx_http_proxy_module: 将客户端的请求以 http 协议转发至指定服务器进行处理 ngx_http_upstream_module 用于定义为 proxy_pass,fastcgi_pass,uwsgi_pass # 等指令引用的后端服务器分组 ngx_stream_proxy_module: 将客户端的请求以 tcp 协议转发至指定服务器处理 ngx_http_fastcgi_module: 将客户端对 php 的请求以 fastcgi 协议转发至指定服务器助理 ngx_http_uwsgi_module: 将客户端对 Python 的请求以 uwsgi 协议转发至指定服务器处理 同构代理用户不需要其他程序的参与直接通过 http 协议或者 tcp 协议访问后端服务器异构代理用户访问的资源时需要经过处理后才能返回的比如php python 等等这种访问资源需要经过处理才能被访问
1、HTTP协议反向代理
官方文档 https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass
配置参数 proxy_pass; 用来设置将客户端请求转发给的后端服务器的主机 可以是主机名 ( 将转发至后端服务做为主机头首部 ) 、 IP 地址端口的方式 也可以代理到预先设置的主机群组需要模块 ngx_http_upstream_module 支持 proxy_pass http://172.25.254.30:8080; 8080 后面无 uri, 即无 / 符号 , 需要将 location 后面 url 附加到 proxy_pass 指定的url后面 此行为类似于 root proxy_pass 指定的 uri 不带斜线将访问的 /web 等于访问后端服务器 proxy_pass http://172.25.254.40:8080/; 8080 后面有 uri, 即有 / 符号 相当于置换 , 即访问 /web 时实际返回 proxy_pass 后面uri内容 此行为类似于 alias proxy_pass 指定的 uri 带斜线 等于访问后端服务器的 http://172.25.254.40:8080/index.html 内容返回给客户端 } # http://nginx/web/index.html http://1:8080 重启 Nginx 测试访问效果 curl -L http://www.timinglee.org/web 如果 location 定义其 uri 时使用了正则表达式模式 ( 包括 ~,~*, 但不包括 ^~) 则 proxy_pass 之后必须不能使用uri 即不能有 / , 用户请求时传递的 uri 将直接附加至后端服务器之后 server { ... server_name HOSTNAME; location ~|~* /uri/ { proxy_pass http://host:port; #proxy_pass 后面的 url 不能加 / } ... } http://HOSTNAME/uri/ -- http://host/uri/ proxy_hide_header field; # 用于 nginx 作为反向代理的时候 在返回给客户端 http 响应时 隐藏后端服务器相应头部的信息 可以设置在 http,server 或 location 块 示例 : 隐藏后端服务器 ETag 首部字段 location /web { index index.html; proxy_pass http://10.0.0.18:8080/; proxy_hide_header ETag; } proxy_pass_header field; # 透传 默认 nginx 在响应报文中不传递后端服务器的首部字段 Date, Server, X-Pad, X-Accel 等参数 如果要传递的话则要使用 proxy_pass_header field 声明将后端服务器返回的值传递给客户端 #field 首部字段大小不敏感 示例 : 透传后端服务器的 Server 和 Date 首部给客户端 , 同时不再响应报中显示前端服务器的 Server 字段 proxy_pass_header Server; proxy_pass_header Date; proxy_pass_request_body on | off; 是否向后端服务器发送 HTTP 实体部分 , 可以设置在 http,server 或 location 块默认即为开启 proxy_pass_request_headers on | off; 是否将客户端的请求头部转发给后端服务器可以设置在 http,server 或 location 块默认即为开启 proxy_set_header; 可更改或添加客户端的请求头部信息内容并转发至后端服务器比如在后端服务器想要获取客户端的真实 IP 的时候就要更改每一个报文的头部 示例 : location ~ /web { proxy_pass http://172.25.254.20:80; proxy_hide_header ETag; proxy_pass_header Server; proxy_pass_request_body on; proxy_pass_request_headers on; proxy_set_header X-Forwarded-For $remote_addr; } vim /etc/httpd/conf/httpd.conf LogFormat \%{X-Forwarded-For}i\ %l %u %t \%r\ %s %b \%{Referer}i\ \% {User-Agent}i\ combined 访问后看后端服务器日志 proxy_connect_timeout time; 配置 nginx 服务器与后端服务器尝试建立连接的超时时间默认为 60 秒 用法如下 proxy_connect_timeout 6s; 60s 为自定义 nginx 与后端服务器建立连接的超时时间 , 超时会返回客户端 504 响应码 proxy_read_timeout time; 配置 nginx 服务器向后端服务器或服务器组发起 read 请求后等待的超时时间默认 60s proxy_send_timeout time; 配置 nginx 项后端服务器或服务器组发起 write 请求后等待的超时 时间默认 60s proxy_http_version 1.0; 用于设置 nginx 提供代理服务的 HTTP 协议的版本默认 http 1.0 proxy_ignore_client_abort off; 当客户端网络中断请求时 nginx 服务器中断其对后端服务器的请求。即如果此项设置为 on 开启则服务器会忽略客户端中断并一直等着代理服务执行返回如果设置为 off 则客户端中断后 Nginx 也会中断客户端请求并立即记录 499 日志默认为 off 。
2、针对特定的资源实现代理
动静分离之后的服务器请求状态 vim /apps/nginx/conf.d/vhost.conf server { listen 80; server_name www.timinglee.org; location / { proxy_pass http://172.25.254.30; } location ~ \.(png|jpg|gif) { proxy_pass http://172.25.254.20:8080; } } 九、实现FastCGI
什么是PHP-FPM
PHP-FPM(FastCGI Process ManagerFastCGI进程管理器)是一个实现了Fastcgi的程序并且提供进程管理的功能。进程包括master进程和worker进程。master进程只有一个负责监听端口接受来自web server 的请求worker进程一般会有多个每个进程中会嵌入一个PHP解析器进行PHP代码的处理
1、配置命令
Nginx 基于模块 ngx_http_fastcgi_module 实现通过 fastcgi 协议将指定的客户端请求转发至 php-fpm 处理其配置指令如下 fastcgi_pass address:port; 转发请求到后端服务器 address 为后端的 fastcgi server 的地址可用位置 location, if in location fastcgi_index name; fastcgi 默认的主页资源示例 fastcgi_index index.php; fastcgi_param parameter value [if_not_empty]; 设置传递给 FastCGI 服务器的参数值可以是文本变量或组合可用于将 Nginx 的内置变量赋值给自定义 key fastcgi_param REMOTE_ADDR $remote_addr; # 客户端源 IP fastcgi_param REMOTE_PORT $remote_port; # 客户端源端口 fastcgi_param SERVER_ADDR $server_addr; # 请求的服务器 IP 地址 fastcgi_param SERVER_PORT $server_port; # 请求的服务器端口 fastcgi_param SERVER_NAME $server_name; # 请求的 server name Nginx 默认配置示例 location ~ \.php$ { root /scripts; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # 默认脚本路径 #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; # 此文件默认系统已提供 , 存放的相对路径为 prefix/conf } 2、源码编译
使用yum解决php依赖
yum install -y bzip2 systemd-devel libxml2-devel sqlite-devel libpng-devel libcurl-devel oniguruma-devel // 解压源码并安装 ./configure \ --prefix/usr/local/php \ // 安装路径 --with-config-file-path/usr/local/php/etc \ // 指定配置路径 --enable-fpm \ // 用 cgi 方式启动程序 --with-fpm-usernginx \ // 指定运行用户身份 --with-fpm-groupnginx \ --with-curl \ // 打开 curl 浏览器支持 --with-iconv \ // 启用 iconv 函数转换字符编码 --with-mhash \ // mhash 加密方式扩展库 --with-zlib \ // 支持 zlib 库用于压缩 http 压缩传输 --with-openssl \ // 支持 ssl 加密 --enable-mysqlnd \ //mysql 数据库 --with-mysqli \ --with-pdo-mysql \ --disable-debug \ // 关闭 debug 功能 --enable-sockets \ // 支持套接字访问 --enable-soap \ // 支持 soap 扩展协议 --enable-xml \ // 支持 xml --enable-ftp \ //支持 ftp --enable-gd \ // 支持 gd 库 --enable-exif \ // 支持图片元数据 --enable-mbstring \ // 支持多字节字符串 --enable-bcmath \ // 打开图片大小调整 , 用到 zabbix 监控的时候用到了这个模块 --with-fpm-systemd //支持 systemctl 管理 cgi 3、nginx源码编译 ls tar zxf nginx-1.24.0.tar.gz
lsnginx-1.24.0 nginx-1.24.0.tar.gz cd nginx-1.24.0/ ls auto CHANGES.ru configure html man src CHANGES conf contrib LICENSE README 增加模块 ./configure --prefix/usr/local/nginx \
--usernginx \
--groupnginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \ --with-stream \
--with-stream_ssl_module \
--with-stream_realip_module
checking for OS
Linux 5.14.0-427.13.1.el9_4.x86_64 x86_64
checking for C compiler ... not found
./configure: error: C compiler cc is not found
dnf install gcc -y dnf install pcre-devel -y dnf install zlib-devel -y
dnf install openssl-devel -y ls auto CHANGES.ru configure html Makefile objs src CHANGES conf contrib LICENSE man README make make install
cd /usr/local/nginx/ ls conf html logs sbin cd sbin/ ls nginx
./nginx
启动nginx
ps aux | grep nginx
4、PHP相关配置优化
cd /usr/local/php/etc/
ls
php-fpm.conf.default php-fpm.d
cp -p php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
指定pid文件存放位置 [rootnginx etc]# cd php-fpm.d/
[rootnginx php-fpm.d]# cp www.conf.default www.conf -p
生成主配置文件
注如果编译的时候没有加参数--with-config-file-path/usr/local/php/etc 配置文件就在/usr/local/php/lib/ 如果加了就在/usr/local/php/etc cp php.ini-production /usr/local/php/lib/php.ini
修改时区
vim /usr/local/php/lib/php.ini 生成启动文件
cp sapi/fpm/php-fpm.service /lib/systemd/system/
vim /lib/systemd/system/php-fpm.service 配置环境变量
[rootnginx php-8.3.9]# cd /usr/local/php/bin/
[rootnginx bin]# vim ~/.bash_profile [rootnginx bin]# source ~/.bash_profile
定义子配置文件 vim /usr/local/nginx/conf/nginx.conf [rootnginx bin]# mkdir /usr/local/nginx/conf.d/
[rootnginx bin]# vim /usr/local/nginx/conf.d/vhosts.conf
准备php测试页面 cat /data/php/index.php
?phpphpinfo();
? 测试
十、安装memcache模块
解压安装包
tar zxf memcache-8.2.tgz
下载autoconf
cd memcache-8.2/
yum install autoconf
phpize
./configure make make install
复制测试文件到nginx发布目录中
cp example.php memcache.php /data/php/
vim /data/php/memcache.php
配置php加载mamcache模块
vim /usr/local/php/lib/php.ini systemctl reload php-fpm
部署memached
yum install memcached -y
systemctl enable --now memcached.service
cat /etc/sysconfig/memcached
十一、PHP高速缓存
在我们安装的nginx中默认不支持memc和srcache功能需要借助第三方模块来让nginx支持此功能所以nginx需要重新编译 这就是为什么我们之前要重新编码nginx
编辑所需软件包
srcache-nginx-module-0.33.tar.gz
memc-nginx-module-0.20.tar.gz
内容 ./configure --prefix/apps/nginx --usernginx -- groupnginx --with-http_ssl_module --with-http_v2_module --withhttp_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module -- add-module/root/memc-nginx-module-0.20 --add-module/root/srcache-nginx-module0.33 安装
make make install
编辑子配置文件 vim /usr/local/nginx/conf.d/vhosts.conf systemctl start nginx.service
ab -n500 -c10 http://www.li.org/index.php
十二、nginx二次开发版本
openresty
openresty与nginx二者只能运行一个需要先把nginx关闭
systemctl stop nginx
dnf -yq install gcc pcre-devel openssl-devel perl
创建一个没有家目录不能远程登录的用户如果有就不用创建
useradd -r -s /sbin/nologin nginx
cd /usr/local/src
wget https://openresty.org/download/openresty-1.17.8.2.tar.gz
tar -zxf openresty-1.17.8.2.tar.gz
cd openresty-1.17.8.2
编码 ./configure --prefix/usr/local/openresty --usernginx --groupnginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module 安装 make make install
环境变量
vim ~/.bash_profile
source ~/.bash_profile 开启
openresty
netstat -antlulpe |grep 80
事实上openresty与nginx的用法基本一致至此以上就是所有内容了