企业高性能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所有进程杀死然后再重启服务

相关推荐
D-海漠11 分钟前
基础自动化系统的特点
运维·自动化
我言秋日胜春朝★20 分钟前
【Linux】进程地址空间
linux·运维·服务器
繁依Fanyi41 分钟前
简易安卓句分器实现
java·服务器·开发语言·算法·eclipse
C-cat.41 分钟前
Linux|环境变量
linux·运维·服务器
yunfanleo1 小时前
docker run m3e 配置网络,自动重启,GPU等 配置渠道要点
linux·运维·docker
m51271 小时前
LinuxC语言
java·服务器·前端
运维-大白同学1 小时前
将django+vue项目发布部署到服务器
服务器·vue.js·django
烦躁的大鼻嘎2 小时前
【Linux】深入理解GCC/G++编译流程及库文件管理
linux·运维·服务器
乐大师2 小时前
Deepin登录后提示“解锁登陆密钥环里的密码不匹配”
运维·服务器
ac.char2 小时前
在 Ubuntu 上安装 Yarn 环境
linux·运维·服务器·ubuntu