企业运维 --- LAMP架构(nginx [3] PHP源码编译、nginx结合php-fpm、构建nginx高速缓存、goaccess日志可视化、构建nginx+tomcat+memcache)

一、PHP源码编译

从服务器获取php源码编译压缩包
在这里插入图片描述
解压
请添加图片描述
安装PHP配置所需的依赖性软件
请添加图片描述
最后两个onigurma需要去服务器获取,镜像软件包没有自带
请添加图片描述
请添加图片描述
devel指的是开发软件包
请添加图片描述
开始配置,–prefix选项指定配置安装的路径,安装后可执行文件放到/usr/local/php目录
请添加图片描述
开始编译
请添加图片描述
开始安装
请添加图片描述
进入安装后的php目录;
复制一个默认的配置文件,并命名为php-fpm.conf
请添加图片描述
打开注释, 启用fpm管理器(使用systemd方式进行管控)
请添加图片描述
www.conf文件在php-fpm.d目录下,是php-fpm进程服务的扩展配置文件;
请添加图片描述
可以看到文件中设置的用户和用户组
请添加图片描述
pm.start_servers:动态方式下的起始php-fpm进程数量
请添加图片描述
拷贝系统推荐的php.ini设置参数到安装目录下,php.ini是php运行核心配置文件
请添加图片描述
修改设置参数的时区
请添加图片描述
拷贝解压源码编译包目录中php-fpm.service的到系统systemd下,此时可以通过systemctl来控制php;
daemon-reload: 重新加载服务配置文件(如果新安装了一个服务,归属于 systemctl 管理,当新服务的服务程序配置文件生效,需重新加载);
PHP启动报错
请添加图片描述
查看原因,是由于权限的问题
请添加图片描述
修改php-fpm启动文件
请添加图片描述
修改权限,注释掉这一行;
ProtectSystem=false :默认php-fpm启动时只读挂载/usr目录
请添加图片描述
再次重新启动,查看端口
请添加图片描述

二、nginx结合php-fpm

修改nginx的配置文件
请添加图片描述
打开php;
注释掉 fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
修改 include fastcgi.conf;
请添加图片描述
Nginx (只能处理静态数据) 与 php-fpm 通信过程是通过 nginx 的 fastcgi 模块来处理的,即 fastcgi 模块将来自客户端的关于 php 文件的请求转发给 php-fpm 来处理。既然是转发请求,那么必须要遵循一定的协议,也就是 fastcgi.conf 所规定的协议了。
请添加图片描述
刷新服务后,书写php测试页
请添加图片描述
请添加图片描述
测试访问
请添加图片描述

三、php添加memcache功能模块

传统缓存策略:当客户端要访问的是静态数据,就直接通过nginx区调度;当客户端要访问的是动态数据,就先找nginx,再到php服务,php服务先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,最后再返回给nginx
在这里插入图片描述
从服务器获取memcache安装压缩包,进行解压
请添加图片描述
phpize:作用是检测php的环境,在特定的目录生成相应的configure文件,这样执行make install之后,生成的.so文件才会自动加载到php扩展目录下面
请添加图片描述
更改配置文件,修改PATH环境变量;
在Linux安装一些软件通常要添加路径环境变量PATH,PATH环境变量通俗的讲就是把程序的路径"备案"到系统中,这样执行这些程序时就不需要输入完整路径,直接在bash输入程序名就可以执行。比如常用的ls命令就是添加好了环境变量才可以直接执行ls
请添加图片描述
添加php的启动位置
请添加图片描述
使文件生效;
执行phpize,提示缺少autoconf
请添加图片描述
请添加图片描述
再次执行phpize请添加图片描述
可以看到生成了 configure;
将memcache模块加入到php
请添加图片描述
开始编译
请添加图片描述
安装;
查看php模块,发现没有memcache;
修改php.ini主配置文件
请添加图片描述
添加memcache模块
请添加图片描述
重新加载php服务
请添加图片描述
再次查看插件,可以看到memcache已经加入php
请添加图片描述
网页上也可以看到
请添加图片描述
将memcache目录中的两个案例,复制到nginx发布目录一份
请添加图片描述
请添加图片描述
下载memcached软件(memcached是一套分布式的高速缓存系统)
请添加图片描述
启动,查看memcached相关信息请添加图片描述
此时已经能够成功访问到exampl.php的样本例子
请添加图片描述
修改nginx默认发布目录里面的memcache.php
请添加图片描述
修改memcache登录密码;
修改本地端口
请添加图片描述
测试访问
请添加图片描述
需要输入账号密码
请添加图片描述
此时可以看到监控界面
请添加图片描述
进行压力测试
请添加图片描述
当不使用缓存时,在并发量大的时候,会产成很多错误请求
请添加图片描述
访问带有缓存的example.php页面时
请添加图片描述
在并发量大的时候也没有错误请求
请添加图片描述
查看监控界面可以看到缓存的命中率
请添加图片描述

四、构建nginx高速缓存

高效缓存策略:
客户端直接从nginx访问到缓存memcache,查看是否具有缓存,没有缓存再走php处理过程,减少了php的处理过程,加快了速率。 也就是说, nginx把php返回的动态数据在memcache存储一份,这样可以提高缓存策略
在这里插入图片描述
从服务器获取openrestry软件包(进行高速处理的软件),用来替换nginx,来与memcahe连接;
直接进行配置
请添加图片描述
可以看到默认安装在/usr/local/openresty/nginx
请添加图片描述
开始编译和安装
请添加图片描述
为方便设置php部分的文件,直接拷贝以前nginx的配置文件到openresty下的配置文件
请添加图片描述
关闭之前的nginx服务
请添加图片描述
拷贝之前nginx默认发布目录下的index.html到openrestry的nginx默认发布
请添加图片描述
修改配置文件,将以下模块注释掉
请添加图片描述
请添加图片描述
openresty软件还没下载配置证书模块
请添加图片描述
启动新的nginx服务
请添加图片描述
网页可以访问到
请添加图片描述
继续修改配置文件,加入新的 upstream节点;
keepalive 512:表示保持512个不立即关闭的连接,用于提升性能
请添加图片描述
internal; //表示只接受内部访问
set $ memc_key $ query_string; //使用内置的$query_string来作为key
set $memc_exptime 300; //表示缓存失效时间
请添加图片描述
在php服务里面设置访问缓存的策略;

当所请求的uri以“.php”结尾时,首先到memcache中查询有没有以$ uri$ args为key的数据,如果有则直接返回;
否则,执行location的逻辑,如果返回的http状态码为200,则在输出前以 $ uri$args为key,将输入结果存入memcache
请添加图片描述
刷新服务
请添加图片描述
压力测试
请添加图片描述
发现高速缓存速度更快(快了大概6倍)
请添加图片描述
传统缓存策略的速度
在这里插入图片描述

五、goaccess 日志可视化

可以对nginx的访问及其缓存设置监控;
先关闭nginx服务
请添加图片描述
然后从服务器获取安装包
请添加图片描述
配置
请添加图片描述
提示缺少依赖性
请添加图片描述
安装依赖性软件
请添加图片描述
再次配置,显示缺少ncursesw
请添加图片描述
继续安装依赖性软件
请添加图片描述
再次配置
请添加图片描述
编译
请添加图片描述
安装
请添加图片描述
进入到nginx的日志目录
请添加图片描述执行启动goaccess,并打入后台
请添加图片描述
重启最原始的nginx
请添加图片描述
测试访问,可以看到数据
请添加图片描述
客户端进行压力测试
请添加图片描述
请添加图片描述
可以查看到实时的变化
请添加图片描述
以下是详细信息
请添加图片描述

六、构建nginx+tomcat+memcache

1、Tomcat 服务器是一种轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。可以认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
2、当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为10.0.5。

nginx连接tomcat加memcache,可以实现java的高速缓存;
server2添加一个0网段的ip,然后从服务器上获取所需安装包,首先安装jdk(java开发的环境)
请添加图片描述
请添加图片描述
解压tomcat源码编译压缩包到指定路径;
创建一个软链接,方便使用
请添加图片描述
webapps/ROOT/ 是tomcat的默认根发布目录,
index.html是它的默认发布页面
请添加图片描述
启动tomcat ,可以看到8080java端口已经打开
请添加图片描述
网页访问成功
请添加图片描述
修改nginx配置文件
请添加图片描述
加入名为tomcat 的 upstream节点
请添加图片描述
在监听localhost的server里面加入,如果访问172.25.31.1/*.jsp那么就到tomcat负载均衡器(由server2提供服务)
请添加图片描述
刷新服务
请添加图片描述
网页访问测试
请添加图片描述
server2在服务器上获取一个以.jsp结尾的文件,当用户访问test.jsp可以提交请求请添加图片描述
网页访问测试
请添加图片描述
请添加图片描述
查看server2日志
请添加图片描述
接下来对server1/2/3进行部署(tomcat+memcache结合jsp交叉存储),实现基于cookie的负载均衡;
server1 配置nginx反向代理和负载均衡,server2 server3交叉存储;

server1将tomcat和jdk安装包传给server2/3
请添加图片描述
server3安装jdk
请添加图片描述
解压tomcat
请添加图片描述
将解压目录移动到tomcat目录,启动tomcat
请添加图片描述
server3获取server2的test.jsp测试文件
请添加图片描述
server2先停止tomcat服务
请添加图片描述
修改server1的配置文件,将server3加入负载均衡器中;
使用 sticky 方式,静态锁定一个ip对应一个服务器,除非session被清除后才变化
请添加图片描述
刷新服务
请添加图片描述
客户端进行访问测试,输入用户名和密码
请添加图片描述
由于server2的tomcat服务已经关闭,因此由server3来提供服务
请添加图片描述
请添加图片描述
请添加图片描述

可以看到网页第一行server info 之前是server2,当客户端切换或者tomcat关闭时,session ID 也会随之发生变化,这样刷新网页,之前的数据就会丢失;
解决方法:tomcat结合memcached 交叉存储session!

server2/3安装memcache请添加图片描述请添加图片描述
server2/3开启memcached服务(开启的端口是11211)
请添加图片描述
请添加图片描述
接着配置server2/3的context.xml文件
请添加图片描述
以下设定表示:server2默认将数据缓存到n2节点(server3),只有当n2节点故障时,才存储到自身节点
请添加图片描述
配置server3的context.xml文件
请添加图片描述
以下设定表示:server3默认将数据缓存到n1节点(server2),只有当n1节点故障时,才存储到自身节点
请添加图片描述
server2/3切到 lib 目录下, Tomcat的lib目录主要用来存放tomcat运行需要加载的jar包;
从服务器获取配置所需的.jar包
请添加图片描述
请添加图片描述
将1.6.3版本的.jar包删除;
先停止tomcat服务
请添加图片描述
然后开启tomcat服务
请添加图片描述
查看server2日志
请添加图片描述INFO处显示server2已经部署完成
请添加图片描述
同样的,开始部署server3,将server2 lib 目录下的 jar 包传给server3
请添加图片描述
server3将1.6.3版本的.jar包删除;
先停止tomcat服务,然后开启服务
请添加图片描述
INFO处显示server3已经部署完成
请添加图片描述
网页访问测试(此时由server3提供服务,因此数据存储在server2上,也就是n1节点)
请添加图片描述
请添加图片描述
查看server3日志
请添加图片描述
server2/3安装Telnet,该协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式
请添加图片描述
请添加图片描述
get ID ;
可以模糊看到缓存的客户端数据
请添加图片描述
当server 3 tomcat服务停止后
请添加图片描述
客户端访问测试
请添加图片描述
点击提交时,server info会变成server2,但session ID 没有发生变化,数据仍然存储在server2上
请添加图片描述
server2仍然可以模糊看到缓存的新提交的客户端数据
请添加图片描述
此时如果停止server2的 memcached服务
请添加图片描述
当客户端访问时
请添加图片描述

由于server2的memcached服务被关闭,因此ID发生变化,此时数据存储在server3上,也就是n2节点)
请添加图片描述
server3也安装telnet
请添加图片描述
客户端访问测试
请添加图片描述
server3输入 get ID ;
依然可以模糊看到之前缓存的客户端数据
请添加图片描述
将server3的tomcat启动
请添加图片描述
将server2的memcached服务开启;
然后关闭server2
请添加图片描述
客户端访问测试
请添加图片描述
点击提交之后,server info 此时变为server3,但ID依然不变,之前提交的数据也都不会消失

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值