企业高性能web服务器

Nginx 安装

Nginx版本和安装方式

Nginx版本 Mainline version 主要开发版本,一般为奇数版本号,比如1.19

Stable version 当前最新稳定版,一般为偶数版本,如:1.20

Legacy versions 旧的稳定版,一般为偶数版本,如:1.18

Nginx安装可以使用yum或源码安装,但是推荐使用源码编译安装

yum的版本比较旧

编译安装可以更方便自定义相关路径

使用源码编译可以自定义相关功能,更方便业务的上的使用

Nginx 编译安装

官方源码包下载地址

nginx: download

下载依赖项

dnf install gcc pcre-devel zlib-devel openssl-devel -y

解压nginx

tar zxf nginx-1.24.0.tar.gz

useradd -s /sbin/nologin -M nginx

进入解压后的nginx目录

检查环境,包括依赖项以及指定配置参数

[root@Nginx nginx-1.24.0]# ./configure --prefix=/usr/local/nginx \
--user=nginx \ # 指定nginx运行用户
--group=nginx \ # 指定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


[root@Nginx nginx-1.24.0]# make && make install

检查完毕没有报错后就make && make install

nginx完成安装以后,有四个主要的目录

[root@Nginx nginx-1.24.0]# 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二进制启动脚本,可以接受不同的参数以实现不同的功能。

如果检查失败想要重做就make clean

移除nginx

验证版本及编译参数

[root@Nginx ~]# vim ~/.bash_profile
export PATH=$PATH:/usr/local/nginx/sbin
[root@Nginx ~]# source ~/.bash_profile
[root@Nginx ~]# 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: --group=nginx --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

把nginx添加进环境变量中

然后在网页访问ip会查看到nginx

Nginx 启动文件

让我们能够使用systemctl命令来管理nginx

[root@Nginx ~]# vim /lib/systemd/system/nginx.service
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[root@Nginx ~]# systemctl daemon-reload
[root@Nginx ~]# systemctl start nginx 

如果没办法启动nginx,请杀掉nginx的进程

killall -9 nginx

平滑升级和回滚

有时候我们需要对Nginx版本进行升级以满足对其功能的需求,例如添加新模块,需要新功能,而此时 Nginx又在跑着业务无法停掉,这时我们就可能选择平滑升级

平滑升级流程

  1. 将旧Nginx二进制文件换成新Nginx程序文件(注意先备份)
  2. 向master进程发送USR2信号
  3. master进程修改pid文件名加上后缀.oldbin,成为nginx.pid.oldbin
  4. master进程用新Nginx文件启动新master进程成为旧master的子进程,系统中将有新旧两个Nginx主
  5. 进程共同提供Web服务,当前新的请求仍然由旧Nginx的worker进程进行处理,将新生成的master进
  6. 程的PID存放至新生成的pid文件nginx.pid
  7. 向旧的Nginx服务进程发送WINCH信号,使旧的Nginx worker进程平滑停止
  8. 向旧master进程发送QUIT信号,关闭老master,并删除Nginx.pid.oldbin文件
  9. 如果发现升级有问题,可以回滚∶向老master发送HUP,向新master发送QUIT

平滑升级和回滚案例

平滑升级

解压nginx1.26版本,所有需要的东西我都放在了开头的资源里面

[root@Nginx nginx]# tar zxf nginx-1.26.1.tar.gz
[root@Nginx nginx]# cd nginx-1.26.1/
#开始编译新版本
[root@Nginx nginx-1.26.1]# ./configure --with-http_ssl_module --withhttp_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
#只要make无需要make install
[root@Nginx nginx-1.26.1]# make
#查看两个版本
[root@Nginx nginx-1.26.1]# ll objs/nginx /usr/local/nginx/sbin/nginx
-rwxr-xr-x 1 root root 1239416 Jul 18 15:08 objs/nginx
-rwxr-xr-x 1 root root 5671488 Jul 18 11:41 /usr/local/nginx/sbin/nginx
#把之前的旧版的nginx命令备份
[root@Nginx ~]# cd /usr/local/nginx/sbin/
[root@Nginx sbin]# cp nginx nginx.24
#把新版本的nginx命令复制过去
[root@Nginx sbin]# \cp -f /root/nginx/nginx-1.26.1/objs/nginx 
/usr/local/nginx/sbin
#检测一下有没有问题
[root@Nginx sbin]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@Nginx sbin]# kill -USR2 48732 #nginx worker ID
#USR2 平滑升级可执行程序,将存储有旧版本主进程PID的文件重命名为nginx.pid.oldbin,并启动新的
nginx
#此时两个master的进程都在运行,只是旧的master不在监听,由新的master监听80
#此时Nginx开启一个新的master进程,这个master进程会生成新的worker进程,这就是升级后的Nginx进
程,此时老的进程不会自动退出,但是当接收到新的请求不作处理而是交给新的进程处理。
[root@Nginx sbin]# ps aux | grep nginx
root       48732 0.0 0.1   9868 2436 ?       Ss   14:17   0:00 nginx: master 
process /usr/local/nginx/sbin/nginx
nobody     48733 0.0 0.2 14200 4868 ?       S   14:17   0:00 nginx: worker 
process
root       52075 0.0 0.3   9876 6528 ?       S   15:41   0:00 nginx: master 
process /usr/local/nginx/sbin/nginx
nobody     52076 0.0 0.2 14208 4868 ?       S   15:41   0:00 nginx: worker 
process
[root@Nginx sbin]# curl -I localhost
HTTP/1.1 200 OK
Server: nginx/1.24.0 ##依旧是旧版本生生效
Date: Thu, 18 Jul 2024 07:45:58 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Thu, 18 Jul 2024 03:41:13 GMT
Connection: keep-alive
ETag: "66988ed9-267"
Accept-Ranges: bytes
#回收旧版本
[root@Nginx sbin]# kill -WINCH 48732
[root@Nginx sbin]# ps aux | grep nginx
root       48732 0.0 0.1   9868 2436 ?       Ss   14:17   0:00 nginx: master 
process /usr/local/nginx/sbin/nginx
root       52075 0.0 0.3   9876 6528 ?       S   15:41   0:00 nginx: master 
process /usr/local/nginx/sbin/nginx
nobody     52076 0.0 0.2 14208 4868 ?       S   15:41   0:00 nginx: worker 
process
#检测版本信息
[root@Nginx sbin]# curl -I localhost
HTTP/1.1 200 OK
Server: nginx/1.26.1 #新版本生效
Date: Thu, 18 Jul 2024 07:59:45 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Thu, 18 Jul 2024 03:41:13 GMT
Connection: keep-alive
ETag: "66988ed9-267"
Accept-Ranges: bytes
#回滚
#如果升级的版本发现问题需要回滚,可以重新拉起旧版本的worker
[root@Nginx sbin]# cp nginx nginx.26
[root@Nginx sbin]# ls
nginx nginx.24 nginx.26
[root@Nginx sbin]# mv nginx.24 nginx
mv: overwrite 'nginx'? y
[root@Nginx sbin]# kill -HUP 48732
[root@Nginx sbin]# ps aux | grep nginx
root       48732 0.0 0.1   9868 2436 ?       Ss   14:17   0:00 nginx: master 
process /usr/local/nginx/sbin/nginx
root       52075 0.0 0.3   9876 6528 ?       S   15:41   0:00 nginx: master 
process /usr/local/nginx/sbin/nginx
nobody     52076 0.0 0.2 14208 5124 ?       S   15:41   0:00 nginx: worker 
process
nobody     52130 0.0 0.2 14200 4868 ?       S   16:30   0:00 nginx: worker 
process
[root@Nginx sbin]# kill -WINCH 52075
[root@Nginx sbin]# ps aux | grep nginx
root       48732 0.0 0.1   9868 2436 ?       Ss   14:17   0:00 nginx: master 
process /usr/local/nginx/sbin/nginx
root       52075 0.0 0.3   9876 6528 ?       S   15:41   0:00 nginx: master 
process /usr/local/nginx/sbin/nginx
nobody     52130 0.0 0.2 14200 4868 ?       S   16:30   0:00 nginx: worker 
process
root       52137 0.0 0.1 221664 2176 pts/0   S+   16:31   0:00 grep --
color=auto nginx
[root@Nginx sbin]# curl -I localhost
HTTP/1.1 200 OK
Server: nginx/1.24.0 ##版本回滚完成
Date: Thu, 18 Jul 2024 08:31:51 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Thu, 18 Jul 2024 03:41:13 GMT
Connection: keep-alive
ETag: "66988ed9-267"
Accept-Ranges: bytes

查看当前使用的nginx版本

把echo...这个软件包放到/root下并且解压

检测环境

检查完环境后只做make

#查看两个版本
[root@Nginx nginx-1.26.1]# ll objs/nginx /usr/local/nginx/sbin/nginx
-rwxr-xr-x 1 root root 1239416 Jul 18 15:08 objs/nginx
-rwxr-xr-x 1 root root 5671488 Jul 18 11:41 /usr/local/nginx/sbin/nginx

#把之前的旧版的nginx命令备份

#把新版本的nginx命令复制过去

#USR2 平滑升级可执行程序,将存储有旧版本主进程PID的文件重命名为nginx.pid.oldbin,并启动新的
nginx
#此时两个master的进程都在运行,只是旧的master不在监听,由新的master监听80
#此时Nginx开启一个新的master进程,这个master进程会生成新的worker进程,这就是升级后的Nginx进
程,此时老的进程不会自动退出,但是当接收到新的请求不作处理而是交给新的进程处理。

这个时候查看版本还是24

回收旧版本

检测版本信息变成26了

回滚

如果升级的版本发现问题需要回滚,可以重新拉起旧版本的worker

[root@Nginx sbin]# cp nginx nginx.26
[root@Nginx sbin]# ls
nginx nginx.24 nginx.26
[root@Nginx sbin]# mv nginx.24 nginx
mv: overwrite 'nginx'? y
[root@Nginx sbin]# kill -HUP 48732
[root@Nginx sbin]# ps aux | grep nginx
root       48732 0.0 0.1   9868 2436 ?       Ss   14:17   0:00 nginx: master 
process /usr/local/nginx/sbin/nginx
root       52075 0.0 0.3   9876 6528 ?       S   15:41   0:00 nginx: master 
process /usr/local/nginx/sbin/nginx
nobody     52076 0.0 0.2 14208 5124 ?       S   15:41   0:00 nginx: worker 
process
nobody     52130 0.0 0.2 14200 4868 ?       S   16:30   0:00 nginx: worker 
process
[root@Nginx sbin]# kill -WINCH 52075
[root@Nginx sbin]# ps aux | grep nginx
root       48732 0.0 0.1   9868 2436 ?       Ss   14:17   0:00 nginx: master 
process /usr/local/nginx/sbin/nginx
root       52075 0.0 0.3   9876 6528 ?       S   15:41   0:00 nginx: master 
process /usr/local/nginx/sbin/nginx
nobody     52130 0.0 0.2 14200 4868 ?       S   16:30   0:00 nginx: worker 
process
root       52137 0.0 0.1 221664 2176 pts/0   S+   16:31   0:00 grep --
color=auto nginx
[root@Nginx sbin]# curl -I localhost
HTTP/1.1 200 OK
Server: nginx/1.24.0 ##版本回滚完成
Date: Thu, 18 Jul 2024 08:31:51 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Thu, 18 Jul 2024 03:41:13 GMT
Connection: keep-alive
ETag: "66988ed9-267"
Accept-Ranges: bytes

激活老版本

回收新的

出现24就是回滚成功了

Nginx 核心配置详解

Nginx的配置文件的组成部分:

  • 主配置文件:nginx.conf

  • 子配置文件: include conf.d/*.conf

  • fastcgi, uwsgi,scgi 等协议相关的配置文件

  • mime.types:支持的mime类型,MIME(Multipurpose Internet Mail Extensions)多用途互联网邮

  • 件扩展类型,MIME消息能包含文本、图像、音频、视频以及其他应用程序专用的数据,是设定某

  • 种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动

  • 使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

    #全局配置端,对全局生效,主要设置nginx的启动用户/组,启动的工作进程数量,工作模式,Nginx的PID路
    径,日志路径等。
    user nginx nginx;
    worker_processes 1; #启动工作进程数数量
    events { #events #设置快,主要影响nginx服务器与用户的网络连接,比如是否允许同时接受多
    个网络连接,使用哪种事件驱动模型 #处理请求,每个工作进程可以同时支持的
    最大连接数,是否开启对多工作进程下的网络连接进行序列化等。
    worker_connections 1024; #设置单个nginx工作进程可以接受的最大并发,作为web服务器
    的时候最大并发数为 #worker_connections *
    worker_processes,作为反向代理的时候为
    #(worker_connections * worker_processes)/2
    }
    http { #http块是Nginx服务器配置中的重要部分,缓存、代理和日志格
    式定义等绝大多数功能和第三方模块都 #可以在这设置,http块可
    以包含多个server块,而一个server块中又可以包含多个location块,
    #server块可以配置文件引入、MIME-Type定义、日志自定义、是
    否启用sendfile、连接超时时间和 #单个链接的请求上限等。
    include mime.types;
    default_type application/octet-stream;
    sendfile on; #作为web服务器的时候打开sendfile加快静态文件传输,指定是
    否使用
    #sendfile系统调用来传输文件
    #sendfile系统调用在两个文件描述符之间直接传递数据(完全在
    内核中操作)
    #从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,操作效率
    很高,被称之为零拷贝,
    #硬盘 >> kernel buffer (快速拷贝到kernelsocket
    buffer) >>协议栈。

     keepalive_timeout  65;   #长连接超时时间,单位是秒
     server { #设置一个虚拟机主机,可以包含自己的全局快,同时也可以包含多
    

    个location模块
    #比如本虚拟机监听的端口、本虚拟机的名称和IP配置,多个
    server 可以使用一个端口比如都使用 #80端口提供web服务

         listen       80;   #配置server监听的端口
    

    server_name localhost; #本server的名称,当访问此名称的时候nginx会调用当前serevr
    内部的配置进程匹配。

         location / { #location其实是server的一个指令,为nginx服务器提供比较
    

    多而且灵活的指令
    #都是在location中体现的,主要是基于nginx接受到的请求字符

    #对用户请求的UIL进行匹配,并对特定的指令进行处理
    #包括地址重定向、数据缓存和应答控制等功能都是在这部分实现
    #另外很多第三方模块的配置也是在location模块中配置。

             root   html; #相当于默认页面的目录名称,默认是安装目录的相对路径,可以使
    

    用绝对路径配置。
    index index.html index.htm; #默认的页面文件名称
    }
    error_page 500 502 503 504 /50x.html; #错误页面的文件名称
    location = /50x.html { #location处理对应的不同错误码的页面定
    义到/50x.html
    #这个跟对应其server中定义的目录下。
    root html; #定义默认页面所在的目录
    }
    }

    #和邮件相关的配置
    #mail {

    ...

    } mail 协议相关配置段

    #tcp代理配置,1.9版本以上支持
    #stream {

    ...

    } stream 服务器相关配置段

    #导入其他路径的配置文件
    #include /apps/nginx/conf.d/*.conf
    }

实现 nginx 的高并发配置

内置变量

没有echo模块是编译的时候没有这个模块

要切换到26版本

在windows上编写本地解析

重载服务

nginx -reload

测试

$remote_port; #客户端请求Nginx服务器时随机打开的端口,这是每个客户端自己的端口

nginx -s reload

$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名称

$remote_port;

#客户端请求Nginx服务器时随机打开的端口,这是每个客户端自己的端口

$remote_user;

#已经经过Auth Basic Module验证的用户名

$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_name; #虚拟主机的主机名

$server_port; #虚拟主机的端口号

$httpuseragent; #客户端浏览器的详细信息

$http_cookie; #客户端的所有cookie信息

$cookie_ #name为任意请求报文首部字部cookie的key名

自定义变量

不能和内置变量写在一起

要另外写一个server

Nginx Rewrite 相关功能

Nginx服务器利用 ngx_http_rewrite_module 模块解析和处理rewrite请求

此功能依靠 PCRE(perl compatible regular expression),因此编译之前要安装PCRE库

rewrite是nginx服务器的重要功能之一,用于实现URL的重写,URL的重写是非常有用的功能

比如它可以在我们改变网站结构之后,不需要客户端修改原来的书签,也无需其他网站修改我们的

链接,就可以设置为访问

另外还可以在一定程度上提高网站的安全性
使用正则表达式对变量进行匹配,匹配成功时if指令认为条件为true,否则认为false,变量与表达式之间 使用以下符号链接:
= #比较变量和字符串是否相等,相等时if指令认为该条件为true,反之为false

!= #比较变量和字符串是否不相等,不相等时if指令认为条件为true,反之为false

~ #区分大小写字符,可以通过正则表达式匹配,满足匹配条件为真,不满足匹配条件为假

!~ #区分大小写字符,判断是否匹配,不满足匹配条件为真,满足匹配条件为假

~* #不区分大小写字符,可以通过正则表达式匹配,满足匹配条件为真,不满足匹配条件为假

!~* #不区分大小字符,判断是否匹配,满足匹配条件为假,不满足匹配条件为真

-f 和 !-f #判断请求的文件是否存在和是否不存在

-d 和 !-d #判断请求的目录是否存在和是否不存在

-x 和 !-x #判断文件是否可执行和是否不可执行

-e 和 !-e #判断请求的文件或目录是否存在和是否不存在(包括文件,目录,软链接)

#注意:

#如果$变量的值为空字符串或0,则if指令认为该条件为false,其他条件为true。

#nginx 1.0.1之前$变量的值如果以0开头的任意字符串会返回false

if判定

/test2不存在

注释掉409

创建目录和文件

set指令

测试结果

不指定浏览器

指定浏览器

return

重载服务

不存在时

存在时

rewriter

301就是永久,302是临时

用curl -I测试

注释掉rewriter

重载服务

#重启Nginx并访问域名 http://www.timinglee.org 进行测试

永久重定向

重定向成功了,但是curl无法进行重定向功能

所以需要修改windws的本地解析加一条var.timinglee.org

临时重定向

break和last

而last会跳出当前的location,执行后续的location

自动跳转https

设置密钥

重载服务

测试 或者去浏览器查看证书

rewrite 案例: 判断文件是否存在

随便输入一个不存在路径会自动导航到www.timinglee.org首页

Nginx 防盗链

实现盗链

要另外开一台虚拟机

Nginx上创建images目录

准备盗链web页面:

编写本地解析

在网页访问172.25.250.10然后查看日志

实现防盗链

在100放入另一张图片到默认发布目录

一张放默认发布目录,daolian一张放images目录

Nginx反向代理

实战案例: 反向代理单台 web 服务器

开一台10,一台20

只能写一个proxy

实战案例 : 指定 location 实现反向代理

重载服务

改端口

动静分离

10上

下载php

重启httpd

编辑php网页

nginx上

反向代理示例: 缓存功能

缓存功能默认关闭状态,需要先动配置才能启用

proxy_cache zone_name | off; 默认off #指明调用的缓存,或关闭缓存机制;Context:http, server, location #zone_name 表示缓存的名称.需要由proxy_cache_path事先定义

proxy_cache_key string; #缓存中用于"键"的内容,默认值:proxy_cache_key schemeproxy_host$request_uri

proxy_cache_valid [code ...] time; #定义对特定响应码的响应内容的缓存时长,定义在http{...}中 示例: proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m;

vhost

重载服务

压测

#验证缓存目录结构及文件大小

http 反向代理负载均衡

后端多台 web服务器

要把之前配置的缓存服务配置也删掉

默认轮询

改变算法

同一个ip来的请求都转到同一个server上

uri的hash

cookie的hash

没有cookie时

轮询

有cookie

Fastcgi

删掉原本的nginx

解压这几个东西

tar -zvf

下载依赖

yum install -y bzip2 systemd-devel libxml2-devel sqlite-devel 
libpng-devel libcurl-devel oniguruma-devel

编译

make && make install

cgi就是把webserver的php请求转给能够处理这个php请求的应用

启动nginx

查看参数

编译php

进入php目录

依赖可能会报错

需要安装

出错的时候找到出错的依赖

wge下载

https://mirrors.aliyun.com/rockylinux/9.4/devel/x8664/kickstart/Packages/o/oniguruma-devel-6.9.6-1.el9.5.x8664.rpm

安装ongru

dnf install oniguruma-devel-6.9.6-1.el9.5.x86_64.rpm

make && make install

修改时区

cd sapi/

注释掉

php -m

vim /usr/local/nginx/conf.d/php.conf

去网页访问看能否出结果

php的动态扩展模块(php的缓存模块)

把memcache放进去

进入目录

make && make install

php加载模块

vim /usr/local/php/etc/php.ini

要是做完以上步骤发现没错但是就是出不来mamcahe界面请重启虚拟机然后启动nginx 和systemctl start php-fpm

测试

高速缓存

重启服务

如果重启不了,出现错误是无法绑定80端口,就要把nginx所有进程杀死然后再重启服务

相关推荐
群联云防护小杜26 分钟前
如何给负载均衡平台做好安全防御
运维·服务器·网络·网络协议·安全·负载均衡
PyAIGCMaster1 小时前
ubuntu装P104驱动
linux·运维·ubuntu
奈何不吃鱼1 小时前
【Linux】ubuntu依赖安装的各种问题汇总
linux·运维·服务器
爱码小白1 小时前
网络编程(王铭东老师)笔记
服务器·网络·笔记
zzzhpzhpzzz1 小时前
Ubuntu如何查看硬件型号
linux·运维·ubuntu
蜜獾云1 小时前
linux firewalld 命令详解
linux·运维·服务器·网络·windows·网络安全·firewalld
陌北v11 小时前
Docker Compose 配置指南
运维·docker·容器·docker-compose
只会copy的搬运工1 小时前
Jenkins 持续集成部署——Jenkins实战与运维(1)
运维·ci/cd·jenkins
娶不到胡一菲的汪大东2 小时前
Ubuntu概述
linux·运维·ubuntu
阿里嘎多学长2 小时前
docker怎么部署高斯数据库
运维·数据库·docker·容器