目录
解压:nginx-1.26.1和echo-nginx-module
进入nginx-1.26.1并编译和make (不能make install 不然会覆盖掉1.24.2的nginx规则)
进入 /usr/local/nginx/sbin/ 并备份nginx 文件
测试:通过访问来查看当前nginx的版本(应该是nginx1.66)
测试:通过访问来查看当前nginx的版本(应该是nginx1.26.1)
测试:通过访问来查看当前nginx的版本(应该是nginx1.24)
会发现没有oniguruma-devel 这个包,去网络上下载:(选择的阿里云镜像站)
我们使用wget下载后,再dnf安装oniguruma-devel包
Web 服务基础介绍
正常情况下的单次web服务访问流程
- 用户请求:用户在浏览器中输入URL或点击链接,发起HTTP请求。
- DNS解析:浏览器通过DNS(域名系统)将域名解析为IP地址。
- 建立连接:浏览器与Web服务器之间建立TCP连接,通常使用三次握手过程。
- 发送请求:浏览器向Web服务器发送HTTP请求,包括请求方法(GET、POST等)、请求头和可能的请求体。
- 服务器处理请求:Web服务器接收到请求后,解析请求,可能会调用后端服务(如数据库、API等)进行处理。
- 生成响应:服务器根据请求生成HTTP响应,通常包括状态码、响应头和响应体(如HTML、JSON等)。
- 发送响应:服务器将响应发送回浏览器。
- 浏览器渲染:浏览器接收到响应后,解析HTML并渲染页面,处理CSS和JavaScript。
- 关闭连接:根据HTTP协议的设置,连接可能会关闭,或者保持活动以便后续请求。
Web 服务介绍
Nginx-高性能的 Web 服务端
背景
- 开发动机:Nginx的开发是为了应对C10K问题,即如何高效地处理10,000个并发连接。传统的Web服务器(如Apache)在高并发场景下表现不佳,因此需要一种新的解决方案。
- 开源项目:Nginx是一个开源软件,允许用户自由使用和修改,吸引了大量开发者和企业的参与。
- 广泛应用:随着互联网的发展,Nginx逐渐被广泛应用于各类网站和应用中,尤其是在高流量和高并发的环境中,如社交媒体、电子商务和内容分发网络(CDN)。
特点
- 高性能:Nginx采用异步事件驱动架构,能够高效处理大量并发连接,性能优越。
- 反向代理和负载均衡:Nginx可作为反向代理服务器,支持负载均衡、SSL终端处理等功能,增强了系统的可扩展性和可靠性。
- 静态文件处理:Nginx在处理静态文件时表现出色,能够快速响应请求,减轻后端服务器的压力。
- 模块化设计:Nginx支持丰富的模块,可以根据需要进行扩展,满足不同的应用场景。
- 配置灵活:Nginx的配置文件简单明了,易于管理和维护,适合各种规模的应用。
- 社区支持:拥有活跃的社区和丰富的文档资源,用户可以方便地获取支持和解决方案。
Nginx 模块介绍
nginx 有多种模块
- 核心模块:是 Nginx 服务器正常运行必不可少的模块,提供错误日志记录 、配置文件解析 、事件 驱动机制 、进程管理等核心功能
- 标准HTTP模块:提供 HTTP 协议解析相关的功能,比如: 端口配置 、 网页编码设置 、 HTTP响应头设置 等等
- 可选HTTP模块:主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,比如: Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等
- 邮件服务模块:主要用于支持 Nginx 的 邮件服务 ,包括对 POP3 协议、 IMAP 协议和 SMTP协议的 支持
- Stream服务模块: 实现反向代理功能,包括TCP协议代理
- 第三方模块:是为了扩展 Nginx 服务器应用,完成开发者自定义功能,比如: Json 支持、 Lua 支持等
Nginx 安装
Nginx 编译安装
自行下载包:
使用脚本配置网络:
ip地址 | 网卡名 | 主机名 |
192.168.160.120/24 | ens33 | nginx.ysh.org |
解压
[root@nginx ~]# tar xzf nginx-1.24.0.tar.gz
[root@nginx ~]# cd nginx-1.24.0/
[root@nginx nginx-1.24.0]# ll
编译源码
./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
出现报错
搜索pcre包
[root@nginx nginx-1.24.0]# dnf search pcre
安装pcre包
[root@nginx nginx-1.24.0]# dnf install -y pcre-devel.x86_64
再编译
./configure --prefix=/usr/local/nginx \
--user=nginx --group=nginx \
--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
下载gcc
[root@nginx nginx-1.24.0]# dnf install -y gcc*
再次编译
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --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
下载:openssl-devel.x86_64
[root@nginx nginx-1.24.0]# dnf install -y openssl-devel.x86_64
再次编译
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --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 ;
当出现红框部分时,编译成功。
回滚操作(删掉刚刚编译的文件)
[root@nginx nginx-1.24.0]# make clean
rm -rf Makefile objs
查看 objs 文件
[root@nginx nginx-1.24.0]# cd objs/
[root@nginx objs]# ls
autoconf.err Makefile ngx_auto_config.h ngx_auto_headers.h ngx_modules.c src
使用双核进行编译
[root@nginx nginx-1.24.0]# make -j2
查看插件是否生成
[root@nginx nginx-1.24.0]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE Makefile man objs README src
[root@nginx nginx-1.24.0]# cd objs/
[root@nginx objs]# ls
autoconf.err Makefile nginx nginx.8 ngx_auto_config.h ngx_auto_headers.h ngx_modules.c ngx_modules.o src
[root@nginx objs]#
编译安装
[root@nginx nginx-1.24.0]# make install
切换到指定的安装目录
[root@nginx nginx-1.24.0]# cd /usr/local/nginx/
[root@nginx nginx]# ls
conf html logs sbin
创建nginx用户
[root@nginx nginx]# cd sbin/
[root@nginx sbin]# useradd -s /sbin/nologin -M nginx
[root@nginx sbin]# id nginx
uid=1001(nginx) gid=1001(nginx) groups=1001(nginx)
启动nginx
[root@nginx sbin]# ll
total 5524
-rwxr-xr-x. 1 root root 5654232 Aug 16 21:39 nginx
[root@nginx sbin]# ./nginx
[root@nginx sbin]# ps aux | grep nginx
root 22989 0.0 0.0 9888 940 ? Ss 21:42 0:00 nginx: master process ./nginx
nginx 22990 0.0 0.1 13720 4780 ? S 21:42 0:00 nginx: worker process
root 22992 0.0 0.0 6408 2160 pts/0 S+ 21:42 0:00 grep --color=auto nginx
[root@nginx sbin]# netstat -antlupe | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 0 60024 22989/nginx: master
查看nginx相关文件大小
[root@nginx sbin]# du -sh nginx
5.4M nginx
nginx 的关闭和重启:
先注释gcc配置的debug这一行
[root@nginx sbin]# vim /root/nginx-1.24.0/auto/cc/gcc
关闭nginx
[root@nginx sbin]# ./nginx -s stop
[root@nginx sbin]# netstat -antlupe | grep nginx-1.24.0
[root@nginx sbin]# netstat -antlupe | grep nginx
重启nginx
[root@nginx sbin]# ./nginx
把 nginx 软件的命令执行路径添加到环境变量中
[root@nginx-node1 ~]# vim ~/.bash_profile
export PATH=$PATH:/usr/local/nginx/sbin
[root@nginx-node1 ~]# source ~/.bash_profile
[root@nginx-node1 ~]# du -sh /usr/local/nginx/sbin/nginx
1.2M /usr/local/nginx/sbin/nginx
启动nginx
[root@nginx-node1 conf]# nginx
如果遇到错误
[root@nginx-node1 conf]# lsof -i :80
[root@nginx-node1 conf]# kill -9 pid
查看nginx配置文件
[root@nginx ~]# cd /usr/local/nginx/conf/
[root@nginx conf]# ll
关闭防火墙
[root@nginx conf]# systemctl stop firewalld
[root@nginx conf]# setenforce 0
测试:访问nginx服务器(并观察版本号)
[root@nginx-node1 conf]# curl -I 192.168.160.120
隐藏版本号
[root@nginx conf]# cd /root/nginx-1.24.0/src/core/
[root@nginx core]# vim nginx.h
将 1.24.0 改为了 1.66.0
nginx的平滑升级
上传需要的软件包:
解压:nginx-1.26.1和echo-nginx-module
[root@nginx ~]# tar zxf nginx-1.26.1.tar.gz
[root@nginx ~]# tar zxf echo-nginx-module-0.63.tar.gz
进入nginx-1.26.1并编译和make (不能make install 不然会覆盖掉1.24.2的nginx规则)
[root@nginx nginx-1.26.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --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 --add-module=/root/echo-nginx-module-0.63
[root@nginx nginx-1.26.1]# make
进入 /usr/local/nginx/sbin/ 并备份nginx 文件
[root@nginx nginx-1.26.1]# cd /usr/local/nginx/sbin/
[root@nginx sbin]# cp nginx nginx.24
[root@nginx sbin]# ls
nginx nginx.24
重启nginx服务(先stop,再start)
[root@nginx sbin]# nginx -s stop
[root@nginx sbin]# nginx
[root@nginx sbin]# ps aux | grep nginx
root 1960 0.0 0.0 9888 936 ? Ss 17:34 0:00 nginx: master process nginx
nginx 1961 0.0 0.1 13720 5100 ? S 17:34 0:00 nginx: worker process
root 1971 0.0 0.0 6408 2112 pts/0 S+ 17:34 0:00 grep --color=auto nginx
测试:通过访问来查看当前nginx的版本(应该是nginx1.66)
[root@nginx ~]# curl -I 192.168.160.120
将nginx1.26的内核文件覆盖原nginx1.24
[root@nginx sbin]# \cp -f /root/nginx-1.26.1/objs/nginx /usr/local/nginx/sbin/
使用USR2信息对nginx进行平滑升级
[root@nginx sbin]# kill -USR2 1960
[root@nginx sbin]# ps aux | grep nginx
root 1960 0.0 0.0 9888 2528 ? Ss 17:34 0:00 nginx: master process nginx
nginx 1961 0.0 0.1 13720 5100 ? S 17:34 0:00 nginx: worker process
root 2086 0.0 0.1 9916 6432 ? S 17:34 0:00 nginx: master process nginx
nginx 2087 0.0 0.1 13748 5180 ? S 17:34 0:00 nginx: worker process
root 2103 0.0 0.0 6408 2112 pts/0 S+ 17:35 0:00 grep --color=auto nginx
使用WINCH信息 回收掉nginx1.24的进程
[root@nginx sbin]# kill -WINCH 1960
[root@nginx sbin]# ps aux | grep nginx
root 1960 0.0 0.0 9888 2528 ? Ss 17:34 0:00 nginx: master process nginx
root 2086 0.0 0.1 9916 6432 ? S 17:34 0:00 nginx: master process nginx
nginx 2087 0.0 0.1 13748 5180 ? S 17:34 0:00 nginx: worker process
root 2127 0.0 0.0 6408 2172 pts/0 S+ 17:35 0:00 grep --color=auto nginx
测试:通过访问来查看当前nginx的版本(应该是nginx1.26.1)
[root@nginx ~]# curl -I 192.168.160.120
nginx版本回滚
使用-HUP信号来激活 nginx1.24的进程
[root@nginx sbin]# kill -HUP 1960
[root@nginx sbin]# ps aux | grep nginx
root 1960 0.0 0.0 9888 2528 ? Ss 17:34 0:00 nginx: master process nginx
root 2086 0.0 0.1 9916 6432 ? S 17:34 0:00 nginx: master process nginx
nginx 2087 0.0 0.1 13748 5180 ? S 17:34 0:00 nginx: worker process
nginx 2228 0.0 0.1 13720 4680 ? S 17:36 0:00 nginx: worker process
root 2232 0.0 0.0 6408 2124 pts/0 S+ 17:36 0:00 grep --color=auto nginx
再回收掉nginx1.26的进程
[root@nginx sbin]# kill -WINCH 2086
[root@nginx sbin]# ps aux | grep nginx
root 1960 0.0 0.0 9888 2528 ? Ss 17:34 0:00 nginx: master process nginx
root 2086 0.0 0.1 9916 6432 ? S 17:34 0:00 nginx: master process nginx
nginx 2228 0.0 0.1 13720 5100 ? S 17:36 0:00 nginx: worker process
root 2270 0.0 0.0 6408 2148 pts/0 S+ 17:36 0:00 grep --color=auto nginx
测试:通过访问来查看当前nginx的版本(应该是nginx1.24)
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 ~]# nginx -s stop
[root@nginx ~]# ps aux | grep nginx
root 1704 0.0 0.0 6408 2172 pts/0 S+ 18:53 0:00 grep --color=auto nginx
[root@nginx ~]# systemctl enable --now nginx.service
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service. [root@nginx ~]# ps aux | grep nginx
root 1748 0.0 0.0 9924 980 ? Ss 18:53 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 1749 0.0 0.1 13676 4672 ? S 18:53 0:00 nginx: worker process
root 1753 0.0 0.0 6408 2148 pts/0 S+ 18:53 0:00 grep --color=auto nginx
nginx全局配置参数优化调整
查看用户
[root@nginx conf]# vim /usr/local/nginx/conf/nginx.conf
[root@nginx conf]# nginx -s reload
[root@nginx conf]# ps aux | grep nginx
把两个工作进程各自绑定一个核心
[root@nginx conf]# vim /usr/local/nginx/conf/nginx.conf
[root@nginx conf]# nginx -s reload
nginx: [warn] the number of "worker_processes" is not equal to the number of "worker_cpu_affinity" masks, using last mask for remaining worker processes
[root@nginx conf]# ps aux | grep nginx
最大链接数
[root@nginx conf]# ulimit -a
[root@nginx conf]# vim /etc/security/limits.conf
[root@nginx conf]# ulimit -a
location用法
[root@nginx conf.d]# vim vhost.conf
server {
listen 80;
server_name www.ysh.org;
root /data/web/html;
index index.html;location = /test {
root /data/web2;
}location /test {
root /data/web1;
}location ^~ /t {
root /data/web3;
}location ~ .html$ {
root /data/web4;
}location ~* .HTML$ {
root /data/web5;
}
}
重启并创建html目录和文件:
[root@nginx conf.d]# nginx -s reload
[root@nginx conf.d]# mkdir -p /data/web{1..5}
[root@nginx conf.d]# mkdir -p /data/web{1..5}/test
[root@nginx conf.d]# echo web1 > /data/web1/test/index.html
[root@nginx conf.d]# echo web2 > /data/web2/test/index.html
[root@nginx conf.d]# echo web3 > /data/web3/test/index.html
[root@nginx conf.d]# echo web4 > /data/web4/test/index.html
[root@nginx conf.d]# echo web5 > /data/web5/test/index.html
通过测试可以得到:不同的location优先级
第一: 带 = 号的
第二:~ 里,不带号 和 带号 优先级一样。 谁在前,谁的优先级高。
第三:不带符号的优先级高。
第四:带^的
nginx添加php模块
重新编译nginx
删掉旧的nginx
[root@nginx ~]# rm -rf /usr/local/nginx/
[root@nginx ~]# cd nginx-1.26.1/
[root@nginx nginx-1.26.1]# make clean
rm -rf Makefile objs
上传需要的模块软件包
[root@nginx ~]# ls
anaconda-ks.cfg nginx-1.26.1
echo-nginx-module-0.63 nginx-1.26.1.tar.gz
echo-nginx-module-0.63.tar.gz php-8.3.9.tar.gz
memc-nginx-module-0.20.tar.gz srcache-nginx-module-0.33.tar.gz
nginx-1.24.0 vmset.sh
nginx-1.24.0.tar.gz
编译并安装nginx
[root@nginx nginx-1.26.1]# ./configure --prefix=/usr/local/nginx \
> --add-module=/root/echo-nginx-module-0.63 \
> --add-module=/root/memc-nginx-module-0.20 \
> --add-module=/root/srcache-nginx-module-0.33 \
> --user=nginx \
> --group=nginx \
> --with-http_v2_module \
> --with-http_realip_module \
> --with-http_stub_status_module \
> --with-http_gzip_static_module \
> --with-stream \
> --with-stream_ssl_module \
> --with-stream_realip_module \
> --with-pcre
[root@nginx nginx-1.26.1]# make && make install
结束nginx旧进程(如果没有旧进程就不做)
[root@nginx nginx-1.26.1]# killall -9 nginx
[root@nginx nginx-1.26.1]# ps aux | grep nginx
root 6521 0.0 0.0 6408 2164 pts/1 S+ 10:40 0:00 grep --color=auto nginx
启动nginx
[root@nginx nginx-1.26.1]# systemctl start nginx
[root@nginx nginx-1.26.1]# nginx -V
源码编译php
上传php-8.3.9.tra软件包
[root@nginx ~]# ls
解压包
[root@nginx ~]# tar xzf php-8.3.9.tar.gz
编译php
[root@nginx ~]# cd php-8.3.9/
[root@nginx php-8.3.9]# ./configure --prefix=/usr/local/php \
> --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 \
> --enable-sockets \
> --enable-soap \
> --disable-debug \
> --enable-xml \
> --enable-ftp \
> --enable-gd \
> --enable-exif \
> --enable-mbstring \
> --enable-bcmath \
> --with-fpm-system
会出现缺少环境依赖
我们通过查找这个服务的软件包,安装来解决
[root@nginx php-8.3.9]# dnf whatprovides */libxml-2.0*
[root@nginx php-8.3.9]# dnf install -y libxml2-devel-2.9.13-2.el9.x86_64
类似依赖问题都这样解决。
依赖问题总和:
[root@nginx php-8.3.9]# dnf install -y bzip2 systemd-devel libxml2-devel sqlite-devel libpng-devel libcurl-devel
会发现没有oniguruma-devel 这个包,去网络上下载:(选择的阿里云镜像站)
我们使用wget下载后,再dnf安装oniguruma-devel包
[root@nginx ~]# 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
[root@nginx ~]# dnf install -y oniguruma-devel-6.9.6-1.el9.5.x86_64.rpm
再次编译:
[root@nginx php-8.3.9]# ./configure --prefix=/usr/local/php \
> --enable-fpm \
> --with-config-file-path=/usr/local/php/etc \
> --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 \
> --enable-sockets \
> --enable-soap \
> --disable-debug \
> --enable-xml \
> --enable-ftp \
> --enable-gd \
> --enable-exif \
> --enable-mbstring \
> --enable-bcmath \
> --with-fpm-systemd
make 并 make install
[root@nginx php-8.3.9]# make -j 10
[root@nginx php-8.3.9]# make install
复制配置文件
[root@nginx php-8.3.9]# cp php.ini-production /usr/local/php/etc/php.ini
修改时区
[root@nginx php-8.3.9]# cd /usr/local/php/etc/
[root@nginx etc]# vim php.ini
修改
date.timezone = Asia/Shanghai
复制启动文件
[root@nginx php-8.3.9]# cd /root/php-8.3.9/sapi/fpm
[root@nginx fpm]# cp php-fpm.service /lib/systemd/system/
修改php配置文件
[root@nginx fpm]# vim /lib/systemd/system/php-fpm.service
注释掉: read-only
复制配置文件
[root@nginx etc]# cd /usr/local/php/etc
[root@nginx etc]# cp php-fpm.conf.default php-fpm.conf
[root@nginx etc]# vim php-fpm.conf
去掉注释:
pid = run/php-fpm.pid
[root@nginx etc]# cd php-fpm.d/
[root@nginx php-fpm.d]# cp www.conf.default www.conf
启动php服务
[root@nginx etc]# systemctl daemon-reload
[root@nginx php-fpm.d]# systemctl restart php-fpm
[root@nginx etc]# netstat -tnlup | grep php
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 278450/php-fpm: mas
修改套接字配置:
[root@nginx etc]# vim php-fpm.d/www.conf
修改:
listen = 0.0.0.0:9000
[root@nginx etc]# systemctl restart php-fpm.service
添加php环境变量
[root@nginx ~]# vim .bash_profile
添加:
/usr/local/php/bin:/usr/local/php/sbin
[root@nginx ~]# source ~/.bash_profile
创建一个目录存放页面并创建一个测试脚本:
[root@nginx ~]# mkdir -p /data/web/php
[root@nginx ~]# vim /data/web/php/index.php
里面添加:
<?php
phpinfo();
?>
给nginx创建一个子配置文件(记得在主配置文件里导入):
[root@nginx ~]# mkdir /usr/local/nginx/conf.d/
[root@nginx ~]# vim /usr/local/nginx/conf.d/php.conf
添加:
server {
listen 80;
server_name www.ysh.org;
root /data/web/html;
index index.html;location ~ \.php$ {
root /data/web/php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
在主配置文件里导入子配置文件:
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
添加:
include "/usr/local/nginx/conf.d/*.conf";
重启nginx
[root@nginx ~]# systemctl restart nginx
在浏览器进行测试
PHP的动态网页扩展模块(memcache)
[root@nginx ~]# tar zxf memcache-8.2.tgz
下载 autoconf服务和memcached服务
[root@nginx ~]# dnf install -y autoconf
[root@nginx memcache-8.2]# dnf install -y memcached -y
[root@nginx memcache-8.2]# systemctl start memcached.service
使用phpizp编译并安装
[root@nginx memcache-8.2]# phpize
[root@nginx memcache-8.2]# ./configure
[root@nginx memcache-8.2]# make
[root@nginx memcache-8.2]# make install
在php配置文件里添加memcache模块
[root@nginx memcache-8.2]# vim /usr/local/php/lib/php.ini
[root@nginx memcache-8.2]# systemctl restart php-fpm.service
测试:
[root@nginx memcache-8.2]# php -m | grep mem
memcache
复制memcache文件:
[root@nginx memcache-8.2]# cp example.php memcache.php /data/web/php/
[root@nginx memcache-8.2]# cd /data/web/php/
[root@nginx php]# vim memcache.php
修改如下:
重启服务:
[root@nginx php]# systemctl restart php-fpm.service
[root@nginx php]# systemctl restart nginx
浏览器访问:
PHP 高速缓存
修改nginx配置文件,将memcache移到前面
[root@nginx ~]# vim /usr/local/nginx/conf.d/php.conf
修改:
upstream memcache {
server 127.0.0.1:11211;
keepalive 512;
}
server {
listen 80;
server_name www.ysh.org;
root /data/web/html;
index index.html;location /memc {
internal;
memc_connect_timeout 100ms;
memc_send_timeout 100ms;
memc_read_timeout 100ms;
set $memc_key $query_string;
set $memc_exptime 300;
memc_pass memcache;
}location ~ \.php$ {
root /data/web/php;
set $key $uri$args;
srcache_fetch GET /memc $key;
srcache_store PUT /memc $key;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
[root@nginx ~]# systemctl restart nginx.service
测试(错误率为0!):
[root@nginx ~]# ab -n500 -c10 http://www.ysh.org/index.php
nginx 二次开发版本
openresty
上传openresty-1.25.3.1.tar.gz包:
[root@nginx ~]# ls
anaconda-ks.cfg nginx-1.26.1.tar.gz
echo-nginx-module-0.63 oniguruma-devel-6.9.6-1.el9.5.x86_64.rpm
echo-nginx-module-0.63.tar.gz openresty-1.25.3.1.tar.gz
memcache-8.2上传openresty-1.25.3.1.tar.gz包:package.xml
memcache-8.2.tgz php-8.3.9
memc-nginx-module-0.20 php-8.3.9.tar.gz
memc-nginx-module-0.20.tar.gz srcache-nginx-module-0.33
nginx-1.24.0 srcache-nginx-module-0.33.tar.gz
nginx-1.24.0.tar.gz vmset.sh
nginx-1.26v
解压并编译安装openresty:
[root@nginx ~]# dnf install -y perl
[root@nginx ~]# tar zxf openresty-1.25.3.1.tar.gz
[root@nginx ~]# cd openresty-1.25.3.1/
[root@nginx 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-stream_realip_module \
> --with-pcre \
> --with-http_ssl_module
[root@nginx openresty-1.25.3.1]# gmake && gmake install
配置openresty的环境变量:
[root@nginx bin]# vim ~/.bash_profile
添加:
/usr/local/openresty/bin
[root@nginx bin]# source ~/.bash_profile
查看版本号并启动openresty
[root@nginx bin]# openresty -v
nginx version: openresty/1.25.3.1
[root@nginx bin]# openresty
测试在浏览器上访问:www.ysh.org: