Tomcat
来源:互联网 发布:mac系统安装失败 编辑:程序博客网 时间:2024/06/15 17:00
Tomcat服务器是一个免费的开放源代码的Web应用服务器
—支持负载平衡与邮件服务等开发应用系统常用的功能
—Tomcat实际上运行JSP页面和Servlet
1.安装jdk
使用 Java 编程语言构建应用和组件的开发环境
实验主机:server1和server2
下载的包:jdk-7u79-linux-x64.tar.gz
[root@server2 ~]# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/ 将下载到的JDK解压,将jdk文件夹移动到指定的文件夹
[root@server2 ~]# cd /usr/local/ 下载的JDK的文件目录
[root@server2 local]# ls 查看目录下文件
bin etc games include jdk1.7.0_79 lib lib64 libexec sbin share src
[root@server2 local]# ln -s jdk1.7.0_79/ java 做一个软链接
[root@server2 local]# lltotal 44drwxr-xr-x. 2 root root 4096 Jun 28 2011 bindrwxr-xr-x. 2 root root 4096 Jun 28 2011 etcdrwxr-xr-x. 2 root root 4096 Jun 28 2011 gamesdrwxr-xr-x. 2 root root 4096 Jun 28 2011 includelrwxrwxrwx 1 root root 12 Jul 22 10:09 java -> jdk1.7.0_79/drwxr-xr-x 8 uucp 143 4096 Apr 11 2015 jdk1.7.0_79drwxr-xr-x. 2 root root 4096 Jun 28 2011 libdrwxr-xr-x. 2 root root 4096 Jun 28 2011 lib64drwxr-xr-x. 2 root root 4096 Jun 28 2011 libexecdrwxr-xr-x. 2 root root 4096 Jun 28 2011 sbindrwxr-xr-x. 5 root root 4096 Jul 18 11:17 sharedrwxr-xr-x. 2 root root 4096 Jun 28 2011 src
[root@server2 local]# vim /etc/profile 设置环境变量,修改/etc/profile
export JAVA_HOME=/usr/local/java export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$PATH:$JAVA_HOME/bin
[root@server2 local]# source /etc/profile 使得修改生效
[root@server2 local]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/java/bin
[root@server2 ~]# vim test.java 编写一个测试脚本
public class test { public static void main(String[] arge) { System.out.println("hello world!"); } }
[root@server2 ~]# javac test.java 编译
[root@server2 ~]# java test 测试成功执行
hello world!
2.安装tomcat
tomcat官网: tomcat.apache.org
[root@server2 ~]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/ 解压文件包到指定目录下
[root@server2 local]# ln -s /usr/local/apache-tomcat-7.0.37/ tomcat 软链接
[root@server2 local]# cd /usr/local/tomcat/ 在链接目录下
[root@server2 tomcat]# cd /bin/ 软件的运行脚本存放
[root@server2 bin]# ls 查看运行脚本
bootstrap.jar cpappend.bat startup.batcatalina.bat daemon.sh startup.shcatalina.sh digest.bat tomcat-juli.jarcatalina-tasks.xml digest.sh tomcat-native.tar.gzcommons-daemon.jar setclasspath.bat tool-wrapper.batcommons-daemon-native.tar.gz setclasspath.sh tool-wrapper.shconfigtest.bat shutdown.bat version.batconfigtest.sh shutdown.sh version.sh
[root@server2 bin]# ./startup.sh startup.sh脚本主要用来判断环境
Using CATALINA_BASE: /usr/local/tomcatUsing CATALINA_HOME: /usr/local/tomcatUsing CATALINA_TMPDIR: /usr/local/tomcat/tempUsing JRE_HOME: /usr/local/javaUsing CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@server2 bin]# netstat -antlp 显示所有连接监听端口
Active Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 907/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 983/master tcp 0 0 172.25.31.2:22 172.25.31.250:58143 ESTABLISHED 1031/sshd tcp 0 0 :::8080 :::* LISTEN 1124/java tcp 0 0 :::22 :::* LISTEN 907/sshd tcp 0 0 ::1:25 :::* LISTEN 983/master tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 1124/java tcp 0 0 :::8009 :::* LISTEN 1124/java
[root@server2 ROOT]# cd /usr/local/tomcat/webapps/ROOT
[root@server2 ROOT]# vim test.jsp jsp程序的测试
[root@server2 ROOT]# cat test.jsp 来同步显示时间
the time is: <%=new java.util.Date() %>
测试:firefox–>172.25.31.2/test.jsp
3.tomat的负载均衡:nginx+tomat
server1:
[root@server1 ~]# cd /usr/local/lnmp/nginx/conf/
[root@server1 conf]# ls
cert.pem koi-win scgi_params.defaultfastcgi.conf mime.types uwsgi_paramsfastcgi.conf.default mime.types.default uwsgi_params.defaultfastcgi_params nginx.conf win-utffastcgi_params.default nginx.conf.defaultkoi-utf scgi_params
[root@server1 conf]# /etc/init.d/php-fpm start php服务开启
Starting php-fpm done
[root@server1 conf]# nginx 开启nginx服务
[root@server1 conf]# vim nginx.conf 打开ip_hash,打开服务器访问端口,配合一致,实现负载均衡
http { upstream westos { ##负载均衡组 ip_hash; ##利用ip_hash server 172.25.31.2:8080; ##服务器组 server 172.25.31.3:8080; location ~ \.jsp$ { ##jsp页面反向代理到tomcat proxy_pass http://westos;
[root@server1 conf]# nginx -t nginx配置文件语法的检错
nginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful
[root@server1 conf]# nginx -s reload 重新加载nginx服务
server2:
[root@server2 ~]# cd /usr/local/tomcat/webapps/ROOT/ tomcat默认发布程序,测试文件必须在此路径下才能执行
[root@server2 ROOT]# vim test.jsp 编写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()+"<br>");%><%out.println("<br> ID " + session.getId()+"<br>");String dataName = request.getParameter("dataName");if (dataName != null && dataName.length() > 0) {String dataValue = request.getParameter("dataValue");session.setAttribute(dataName, dataValue);}out.print("<b>Session list</b>");Enumeration e = session.getAttributeNames();while (e.hasMoreElements()) {String name = (String)e.nextElement();String value = session.getAttribute(name).toString();out.println( name + " = " + value+"<br>");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>
[root@server2 ROOT]# scp test.jsp 172.25.31.3:/usr/local/tomcat/webapps/ROOT/ 将jsp页面内容同步到server3
测试:
firefox:172.25.31.1/test.jsp
1.未打开iphash时,数据轮询在server2和server3上存储
2.打开后,指定ip将输入数据存储;
问题: bin/shutdown.sh 当其中一台服务器的tomcat挂掉时,nginx响应后会将当前的信息存储到另外一台主机上,但之前存储的用户信息将会丢失。
4.nginx+tomcat+memcache
1.加入memcache的核心:接管对方的session2.默认找对方的memcache存储,memcache只是作为备份,在tomcat工作时,有自己的缓存,不会用到memcache3.使用这种配置的好处是,当 T1 和 M1 同时崩溃时也不会丢失 session 会话,避免单点故障4.Tomcat-1 (T1) 将 session 存储在 memcached-2 (T2)上。只有当 M2 不可用时 ,T1 才将 session 存储在 memcached-1 上(M1 是 T1 failoverNode)
server1:
nginx 服务开启
server2:
[root@server2 tomcat]# yum install -y memcached 安装memcached
[root@server2 tomcat]# /etc/init.d/memcached start 开启memcached
[root@server2 tomcat]# cd /usr/local/tomat/lib/
[root@server2 lib]# rm -f memcached-session-manager-tc6-1.6.3.jar 删除与jdk版本不同的包
[root@server2 tomcat]# cd conf/
[root@server2 conf]# vim context.xml tomcat服务器会扫描此文件,一但文件被修改,会自动重新加载这个文件
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"memcachedNodes="n1:172.25.31.2:11211,n2:172.25.31.3:11211"failoverNodes="n2" ##互为信任节点requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>
[root@server2 tomcat]# bin/shutdown.sh 关闭再开启tomcat
[root@server2 tomcat]# bin/startup.sh
[root@server2 tomcat]# yum install -y telnet
[root@server2 tomcat]# tail -f logs/catalina.out 查看memcached初始化是否成功
server3配置同server2
测试:
[root@server3 tomcat]# telnet localhost 11211
get + ID
可得到server2上的缓存
nginx 的sticky模块
sticky 模式:指同一个用户的访问请求都被发送到同一个 tomcat 实例上处理。
server1:
tar zxf nginx-1.10.1.tar.gz nginx版本更新
tar zxf nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d.tar.gz 加入第三方模块
源码安装:配置->编译->执行
cd nginx-1.10.1
./configure --prefix=/opt/nginx --user=nginx --group=nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module --add-module=/root/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0dmake make install
vim /opt/nginx/conf/nginx.conf
http {
upstream westos {
sticky;
server 172.25.33.2:8080;
server 172.25.33.3:8080;
}
location ~ .jsp$ {
proxy_pass http://westos;
}
}
测试:
浏览器访问 http://172.25.33.1/test.jsp
结果:不同的主机访问时会调度到不同的 tomcat 实例上处理
来自同一主机的请求会交给同一个tomcat实例处理,此时你down掉当前正在响应的tomcat实例,nginx 会自动把用户的请求调度到另一个tomcat实例上,同时 session 也没有丢掉。
- Tomcat
- Tomcat
- Tomcat
- tomcat
- TOMCAT
- tomcat
- tomcat
- tomcat
- TOMCAT
- Tomcat
- tomcat
- Tomcat
- Tomcat
- tomcat
- Tomcat
- Tomcat
- Tomcat
- tomcat
- 解决Spring MVC整合Shiro出现无法访问静态资源文件的问题
- nyoj204,Coin Test
- 使用git fetch和git rebase处理多人开发同一分支的问题
- redis操作命令记录
- CodeForces
- Tomcat
- ......
- 模版 基类 父类 指针 正确保存数据
- Python中的Numpy、SciPy、MatPlotLib安装与配置
- Redis管道简单使用及与普通方式效率对比
- MySql中Char与Varchar的区别
- ios各种编码格式范围深坑
- scapy 安装与测试
- 为什么开始写技术博客