LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志

文章目录

  • 前言
  • 1、 tomcat介绍
  • 2、在server2上的安装Apache-tomcat
  • 3、启动tomcat
  • 4、对server1进行nginx配置
  • 5、测试server2和server3上的test.jsp文件
    • 5.1 添加server3(tomcat服务器,和server2配置一样)
    • 5.2 开始测试test.jsp文件
  • 6、tomcat+memcached
    • 6.1 确认php-fpm服务开启并暂时关闭tomcat服务
    • 6.2 安装memcached服务(server2与server3一样配置)
    • 6.3 测试
  • 7、goaccess可视化日志(帮我们采集并以图表显示)
    • 7.1 软件安装
    • 7.2 goaccess使用


前言

紧接 LAMP架构5 这篇文章

1、 tomcat介绍

  • Apache是普通服务器,本身只支持html即普通网页。不过可以通过插件支持php,还可以与Tomcat连通(单向Apache连接Tomcat,就是说通过Apache可以访问Tomcat资源。反之不然)。Apache只支持静态网页,但像php,cgi,jsp等动态网页就需要Tomcat来处理
  • Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTTP服务器,它也可以被视作一个单独的Web服务器。但是,不能将 Tomcat 和 Apache Web 服务器混淆,Apache Web Server 是一个用 C 语言实现的 HTTP web server;这两个 HTTP web server 不是捆绑在一起的。Apache Tomcat 包含了一个配置管理工具,也可以通过编辑 XML 格式的配置文件来进行配置。Apache,nginx,tomcat并称为网页服务三剑客,可见其应用度之广泛。
  • Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展。 Apache和Tomcat都可以做为独立的web服务器来运行,但是Apache不能解释java程序(jsp,servlet)。
    两者都是一种容器,只不过发布的东西不同:Apache是html容器,功能像IIS一样;Tomcat是jsp/servlet容器,用于发布jsp及java的,类似的有IBM的websphere、BEA的Weblogic,sun的JRun等等。
    打个比方:Apache是一辆卡车,上面可以装一些东西如html等。但是不能装水,要装水必须要有容器(桶),Tomcat就是一个桶(装像Java这样的水),而这个桶也可以不放在卡车上。

2、在server2上的安装Apache-tomcat

官方下载地址

[root@server2 ~]# ls
apache-tomcat-7.0.37.tar.gz
[root@server2 ~]# tar zxf apache-tomcat-7.0.37.tar.gz 
[root@server2 ~]# mv apache-tomcat-7.0.37 /usr/local/
[root@server2 ~]# cd /usr/local/
[root@server2 local]# ln -s apache-tomcat-7.0.37/ tomcat
[root@server2 local]# cd tomcat/
[root@server2 tomcat]# ls
bin  conf  lib  LICENSE  logs  NOTICE  RELEASE-NOTES  RUNNING.txt  temp  webapps  work

[root@server2 ~]# ls
apache-tomcat-7.0.37.tar.gz  jdk-8u121-linux-x64.rpm
[root@server2 ~]# rpm -ivh jdk-8u121-linux-x64.rpm 

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第1张图片

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第2张图片

3、启动tomcat

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第3张图片

在这里插入图片描述

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第4张图片

4、对server1进行nginx配置

关闭前一节的openresy
[root@server1 ~]# systemctl stop openresty.service 
[root@server1 ~]# systemctl disable openresty.service 

打开nginx服务
[root@server1 conf]# nginx 

进入nginx配置目录
[root@server1 conf]# pwd
/usr/local/nginx/conf
[root@server1 conf]# vim nginx.conf ## 编辑配置文件
[root@server1 conf]# nginx -s reload

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第5张图片

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第6张图片

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第7张图片

这里访问不到图片的原因是:nginx和tomcat都有各自的发布目录,当nginx服务器通过proxy_pass到tomcat发布目录时只能看到文字,图片时是看不到的,因为这个图片不在nginx服务器发布目录里。

解决这个问题的办法有两种:

  • 创建一个虚拟主机,通过域名直接 proxy_pass到tomcat服务器上
  • 把nginx和tomcat的路径设置为一致

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第8张图片

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第9张图片

5、测试server2和server3上的test.jsp文件

5.1 添加server3(tomcat服务器,和server2配置一样)

新添加server3,配置和server2一致,并在server1上配置server2和server3的负载均衡

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第10张图片

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第11张图片

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第12张图片

server1上做负载均衡并定向到tomcat发布目录

在这里插入图片描述

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第13张图片

5.2 开始测试test.jsp文件

把test.jsp文件放到tomcat的/usr/local/tomcat/webapps/ROOT/目录下

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第14张图片

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第15张图片
test.jsp 的内容

[root@server2 bin]# cat test.jsp 
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"
"
);%> <% out.println("
ID "
+ session.getId()+"
"
); String dataName = request.getParameter("dataName"); if (dataName != null && dataName.length() > 0) { String dataValue = request.getParameter("dataValue"); session.setAttribute(dataName, dataValue); } out.print("Session list"); Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = session.getAttribute(name).toString(); out.println( name + " = " + value+"
"
); System.out.println( name + " = " + value); } %> <form action="test.jsp" method="POST"> name:<input type=text size=20 name="dataName"> <br> key:<input type=text size=20 name="dataValue"> <br> <input type=submit> </form> </body> </html>

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第16张图片

提交数据会切换服务器,数据会丢失,解决办法有两种

  • cookies(sticky)
  • ip_hash

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第17张图片

通过cookie解决

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第18张图片

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第19张图片

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第20张图片
通过ip_hash解决LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第21张图片

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第22张图片

6、tomcat+memcached

设置交叉存储,即使一台tomcat服务器停止掉memcached服务,但是信息还是会存宁一台主机上。

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第23张图片

6.1 确认php-fpm服务开启并暂时关闭tomcat服务

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第24张图片

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第25张图片

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第26张图片

6.2 安装memcached服务(server2与server3一样配置)

将.jar软件安装包都存放到server2的/usr/local/tomcat/lib

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第27张图片

查看目录下是否已经有这些包,并且删掉tc6的包(多余,不删会出问题)

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第28张图片

安装memcached服务

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第29张图片
启动服务(开机自启动),修改配置文件context.xml,再次启动服务(如果前面没有关,那就关了再启动一次)

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第30张图片

[root@server2 conf]# pwd
/usr/local/tomcat/conf
[root@server2 conf]# vim context.xml  

 context.xml 中添加的内容 
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.200.2:11211,n2:172.25.200.3:11211"
failoverNodes="n1"   ##server3服务器这里改为n2
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第31张图片

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第32张图片

6.3 测试

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第33张图片

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第34张图片

因为是交叉存储,即使server2停止掉memcached服务,但是信息还是会存到server3主机上。

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第35张图片

7、goaccess可视化日志(帮我们采集并以图表显示)

- 软件安装:
	 wget https://tar.goaccess.io/goaccess-1.4.tar.gz
	 tar -xzvf goaccess-1.4.tar.gz
	 cd goaccess-1.4/
	 ./configure --enable-utf8 --enable-geoip=legacy
	 make
	 make install
- 软件使用:
	# goaccess access.log -o /usr/local/nginx/html/report.html --log-format=COMBINED --real-time-html

7.1 软件安装

先安装插件(再pub里)
在这里插入图片描述

在这里插入图片描述

[root@server1 goaccess-1.4]# ./configure --enable-utf8 --enable-geoip=legacy

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第36张图片

[root@server1 goaccess-1.4]# ./configure --enable-utf8 --enable-geoip=legacy
[root@server1 goaccess-1.4]# make
[root@server1 goaccess-1.4]# make install

./configure 成功
LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第37张图片
编译
LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第38张图片

安装
LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第39张图片
已经自动添加了环境变量
在这里插入图片描述

7.2 goaccess使用

[root@server1 goaccess-1.4]# cd
[root@server1 ~]# cd /usr/local/nginx/
[root@server1 nginx]# cd logs/
[root@server1 logs]# ls
access.log  error.log  nginx.pid
[root@server1 logs]# goaccess access.log -o /usr/local/nginx/html/report.html --log-format=COMBINED --real-time-html
Parsing... [269,081] [89,693/s]]
WebSocket server ready to accept new client connections

LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第40张图片

浏览器访问,还挺炫酷的!
LAMP架构6-nginx+tomcat+memcached服务以及goaccess可视化日志_第41张图片

你可能感兴趣的:(LAMP网站架构技术,nginx,tomcat,linux)