紧接 LAMP架构5 这篇文章
Apache只支持静态网页
,但像php,cgi,jsp等动态网页就需要Tomcat来处理
。Tomcat本身也内含了一个HTTP服务器,它也可以被视作一个单独的Web服务器
。但是,不能将 Tomcat 和 Apache Web 服务器混淆,Apache Web Server 是一个用 C 语言实现的 HTTP web server;这两个 HTTP web server 不是捆绑在一起的。Apache Tomcat 包含了一个配置管理工具,也可以通过编辑 XML 格式的配置文件来进行配置。Apache,nginx,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
关闭前一节的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
这里访问不到图片的原因是:nginx和tomcat都有各自的发布目录,当nginx服务器通过proxy_pass到tomcat发布目录时只能看到文字,图片时是看不到的,因为这个图片不在nginx服务器发布目录里。
解决这个问题的办法有两种:
新添加server3,配置和server2一致,并在server1上配置server2和server3的负载均衡
server1上做负载均衡并定向到tomcat发布目录
把test.jsp文件放到tomcat的/usr/local/tomcat/webapps/ROOT/
目录下
[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>
提交数据会切换服务器,数据会丢失,解决办法有两种
通过cookie解决
设置交叉存储,即使一台tomcat服务器停止掉memcached服务,但是信息还是会存宁一台主机上。
将.jar软件安装包都存放到server2的/usr/local/tomcat/lib
下
查看目录下是否已经有这些包,并且删掉tc6的包(多余,不删会出问题)
安装memcached服务
启动服务(开机自启动),修改配置文件context.xml
,再次启动服务(如果前面没有关,那就关了再启动一次)
[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"
/>
因为是交叉存储,即使server2停止掉memcached服务,但是信息还是会存到server3主机上。
- 软件安装:
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
[root@server1 goaccess-1.4]# ./configure --enable-utf8 --enable-geoip=legacy
[root@server1 goaccess-1.4]# ./configure --enable-utf8 --enable-geoip=legacy
[root@server1 goaccess-1.4]# make
[root@server1 goaccess-1.4]# make install
[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