lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化


前言

前面的章节中我们使用源码编译安装了php,mysql.并与nginx结合使用!!

这篇文章主要讲解了:
nginx结合php中的memcache模块构建高效透明的缓存机制。
tomcat结合memcache进行session的交叉存储备份。
goaccess日志可视化。


一、nginx结合memcache高效缓存

nginx和php-fpm的传统缓存机制
在这里插入图片描述

nginx + memcache的高效缓存机制:
在这里插入图片描述
需要下载
memcache-4.0.5.2.tgz
openresty-1.19.3.1.tar.gz

vim .bash_profile	
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/php/bin/
source .bash_profile

在这里插入图片描述

php -m查看
在这里插入图片描述
下载好了memcache包之后,解开

tar zxf memcache-4.0.5.2.tgz
cd memcache-4.0.5.2/
phpize #php内置脚本安装memcache,生成cofigure

在这里插入图片描述
编译需要安装依赖性!

yum install -y autoconf
phpize

安装之后,configure出现!
在这里插入图片描述
然后开始源码编译三部曲:

./configure 
make
make install

完成:
在这里插入图片描述

vim /usr/local/php/etc/php.ini
extension=memcache

systemctl restart php-fpm.service
php -m |grep memcache

在这里插入图片描述安装完成:

在这里插入图片描述

cd memcache-4.0.5.2/
ls
cp example.php memcache.php /usr/local/nginx/html/
cd /usr/local/nginx/html/
ls

访问 172.25.1.1/example.php即可查看变化
在这里插入图片描述

vim memcache.php	
22 define('ADMIN_USERNAME','memcache');    // Admin Username
 23 define('ADMIN_PASSWORD','westos');      // Admin Password
注释掉29行 
28 $MEMCACHE_SERVERS[] = 'localhost:11211'; // add more as an array
29 #$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array

yum install memcached -y
systemctl start memcached
netstat -antlp | grep 11211

在这里插入图片描述

在这里插入图片描述
访问172.25.1.1/memcache.php 输入用户名和密码(刚才设置的!)
在这里插入图片描述

二、构建nginx 的高速缓存

systemctl stop nginx.service
源码编译安装openresty
三部曲:但是这里需要gmake

tar zxf openresty-1.19.3.1.tar.gz
cd openresty-1.19.3.1/
./configure
gmake
gmake install

在这里插入图片描述

/usr/local/openresty/nginx/sbin/nginx -v #开启openresty里的nginx
/usr/local/openresty/nginx/sbin/nginx

拷贝默认发布目录

cd /usr/local/openresty/nginx/html/
cp /usr/local/nginx/html/*.php .

在这里插入图片描述

进行压力测试:
ab -c10 -n 1000 http://172.25.1.1/index.php
失败的次数74次,每秒处理请求1370次:在这里插入图片描述

修改配置文件
需要做三处修改

cd /usr/local/openresty/nginx/conf
vim nginx.conf #使其和之前nginx一样可以编译php

upstream memcache {
                server 127.0.0.1:11211;
                keepalive 512;          ##保持512个不立即关闭的连接用于提升性能
        }

location /memc {
        internal;                       #表示只接受内部访问
        memc_connect_timeout 100ms;
        memc_send_timeout 100ms;
        memc_read_timeout 100ms;
        set $memc_key $query_string;    #使用内置的$query_string来作为key
        set $memc_exptime 300;          #表示缓存失效时间
        memc_pass memcache;
        }

location ~ \.php$ {
            set $key $uri$args;
            srcache_fetch GET /memc $key;
            srcache_store PUT /memc $key; #看ppt解释
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
        }


注:
修改之后,需要开启服务的:
这里记得进入openresty下的nginx目录中开启nginx要用**./nginx**
如果直接输入nginx是之前设置的全局变量/usr/local/nginx/sbin/nginx开启的服务
而不是openresty开启的nginx!!!
因为本人一开始一直没有找到错误原因,最后就是这个问题!!!

ps ax | grep nginx
如果有nginx的进程,先kill掉
cd /usr/local/openresty/nginx/sbin
./nginx -t
./nginx

在这里插入图片描述

然后再进行压力测试:
ab -c10 -n 1000 http://172.25.1.1/index.php
错误次数变为0,每秒处理次数也变为4770!!质的提升!!
在这里插入图片描述

三.tomcat+memcache结合jsp交叉存储

三台虚拟机
server1 配置反向代理和负载均衡
server2 server3交叉存储

需要软件及其版本:
jdk-8u121-linux-x64.rpm
apache-tomcat-7.0.37.tar.gz

对于server2停掉httpd服务!

systemctl stop httpd
yum install jdk-8u121-linux-x64.rpm -y #下载对应版本jdk

tar zxf apache-tomcat-8.5.24.tar.gz -C /usr/local/
cd /usr/local/
mv apache-tomcat-8.5.24/ tomcat #修改名称 方便操作
ls

在这里插入图片描述

在这里插入图片描述

cd tomcat/
ls
bin/startup.sh	开启tomcat脚本
netstat -antlp	查看8080端口已打开

在这里插入图片描述

8080端口已经开启:

在这里插入图片描述

cd webapps/ROOT/  #tomcat默认发布目录
ls
cp ~/test.jsp .	将测试文件拷贝过来

在这里插入图片描述

测试完成后将文件拷贝到server3
server3操作与server2相同
zai tomcat目录中开启tomcat
bin/startup.sh

在server1中

vim nginx.conf
upstream tomcat {
        sticky; #静态锁定一个ip对应一个服务器,除非session被清除后才变化。
        server 172.25.4.2:8080;
        server 172.25.4.3:8080;
        }

location ~ \.jsp$ {
            proxy_pass   http://tomcat;
        }

在这里插入图片描述

在这里插入图片描述

nginx -t检测语法
会发现有报错,因为配置文件写了sticky,而本身在编译的时候没有加参数:
重新编译nginx
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42
因为没有nginx-goodies-nginx-sticky-module-ng-08a395c66e42也会报错!
所以下载 解压它!
在这里插入图片描述
继续编译,成功之后只做make,不make install!!!

再次 nginx -t
nginx -s reload

在这里插入图片描述
访问:http://172.25.1.1/test.jsp

在这里插入图片描述可以看到网页第一行server info 712.25.1.2

输入name和key,当客户端切换时,session也会随之消失
当把server2 shutdown之后
就会自动切换为server3:
server info 172.25.1.3:如下图所示:

在这里插入图片描述

刷新网页,数据就会丢失:
在这里插入图片描述

解决方法:

tomcat结合memcached 交叉存储session!

交叉存储

在真机上:拷贝/jar下面的所有文件到server3上

scp jar/* root@172.25.1.3:/usr/local/tomcat/lib/

在这里插入图片描述在server2,server3上操作如下:

bin/shutdown.sh	 #关闭tomcat
cd /usr/local/tomcat/

安装memcached

yum install -y memcached
systemctl start memcached.service  #端口11211
netstat -antlp	#查看端口

在这里插入图片描述接着配置文件

vim /usr/local/tomcat/conf/context.xml

server2中添加内容如下:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.1.2:11211,n2:172.25.1.3:11211"
failoverNodes="n1" 
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>

在这里插入图片描述
server3中写入:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.1.2:11211,n2:172.25.1.3:11211"
failoverNodes="n2" 
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>

然后重启server2,3

bin/shutdown.sh
bin/startup.sh

在这里插入图片描述
然后查看:
tail -f logs/catalina.out
看到这一行表示成功!
INFO: MemcachedSessionService finished initialization, sticky true, operation timeout 1000, with node ids [n2] and failover node ids [n1]

四.goaccess日志可视化

GoAccess 是什么?

GoAccess 是一款开源的且具有交互视图界面的实时 Web 日志分析工具,通过你的 Web 浏览器或者 *nix 系统下的终端程序(terminal)即可访问。能为系统管理员提供快速且有价值的 HTTP 统计,并以在线可视化服务器的方式呈现。

GoAccess的部署

下载:https://goaccess.io/download
解压:tar zxf goaccess-1.4.tar.gz
cd goaccess-1.4/

在这里插入图片描述
goaccess的配置:生成 Makefile,为下一步的编译做准备
查看配置选项列表:./configure --help

./configure --enable-utf8 --enable-geoip=legacy
##  --enable-utf8:宽字符支持。依赖 Ncursesw 模块。
 ##  --enable-geoip=legacy:地理位置支持。依赖 MaxMind GeoIP 模块,legacy 将使用原始 GeoIP 数据库。

在这里插入图片描述
会发现缺少某些依赖包!
那么如何去下载呢?
来到网站上面搜索下载:
在这里插入图片描述
找到了download的地址
在这里插入图片描述
网址就是这个:

http://mirror.centos.org/centos/7/os/x86_64/Packages/GeoIP-devel-1.5.0-14.el7.x86_64.rpm

直接wget下载:
在这里插入图片描述
rpm -ivh GeoIP-devel-1.5.0-14.el7.x86_64.rpm --nodeps
继续编译:
完成后,make , make install
查看goaccess命令的位置:which goaccess
在这里插入图片描述
生成一个新的html文件,把当前access.log日志中的内容实时的以html图表的形式展示出来

cd /usr/local/nginx/logs
ls
goaccess access.log -o /usr/local/nginx/html/report.html --log-format=COMBINED --real-time-html

在这里插入图片描述
网页访问:http://172.25.1.1/report.html
完成!!可以清晰直观的看到数据!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dudududu--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值