一、中间件产品介绍
目前来说IBM的WebSphere,Oracle的Weblogic占据了市场上Java语言Web站点的部分份额,该两种软件由于无与伦比的性能及可靠性等优势被广泛应用于大型互联网公司的Web场景中,但是其高昂的价格也使得中小型互联网公司对此望而却步。
Tomcat自5.x版本以来,其性能上已经得到很大幅度的提升,加上其开放性的框架和二次开发等特性,已经完全可以用在访问量不是很大的生产环境下,目前大多数用于JSP技术开发的电子商务网站基本上都应用了Tomcat。
中间件产品:RedHat JBoss、Oracle Tuxedo、caucho Resin。
二、JDK软件简介
在安装Tomcat之前必须先安装JDK,JDK全称是Java Development Kit,是SUN公司免费提供的java语言的软件开发工具包,其中包含Java虚拟机(JVM),编写好的java源程序经过编译可生产java字节码,只要安装了JDK,就可以利用JVM解释这些字节码文件,从而保证了Java的跨平台性。
在平台兼容性方面,JDK作为解释字节码文件并根据此调用操作系统的API实现对应功能的java虚拟机,与操作系统位数密切相关,因此存在不同类型的版本,Tomcat也具有上述特征,CentOS7系统中默认已经安装了JDK。
JDK包含了一批用于Java开发的组件,其中包括:
javac:编译器,将后缀名为.java的源代码编译成后缀名为“.class”的字节码
java:运行工具,运行.class的字节码
jar:打包工具,将相关的类文件打包成一个文件
javadoc:文档生成器,从源码注释中提取文档,注释需匹配规范
jdb debugger:调试工具
jps:显示当前java程序运行的进程状态
javap:反编译程序
appletviewer:运行和调试applet程序的工具,不需要使用浏览器
javah:从Java类生成C头文件和C源文件。这些文件提供了连接胶合,使Java和C代码可进行交互。
javaws:运行JNLP程序
extcheck:一个检测jar包冲突的工具
apt:注释处理工具
jhat:java堆分析工具
jstack:栈跟踪程序
jstat:JVM检测统计工具
jstatd:jstat守护进程
jinfo:获取正在运行或崩溃的java程序配置信息
jmap:获取java进程内存映射信息
idlj:IDL-to-Java编译器。将IDL语言转化为java文件
policytool:一个GUI的策略文件创建和管理工具
jrunscript:命令行脚本运行
三、安装配置Tomcat
[root@localhost ~]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
[root@localhost ~]# setenforce 0
#检查系统中是否安装Java环境
[root@localhost ~]# rpm -qa | grep java
[root@localhost ~]# rz #上传
. waiting to receive.**B0100000023be50
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog jdk-8u191-linux-x64.tar.gz
[root@localhost ~]# tar xf jdk-8u191-linux-x64.tar.gz #解档jdk安装包
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog jdk1.8.0_191 jdk-8u191-linux-x64.tar.gz
[root@localhost ~]# mv jdk1.8.0_191/ /usr/local/java #将jdk安装到/usr/local/java 位置上
[root@localhost ~]# ls /usr/local/
bin etc games include java lib lib64 libexec sbin share src
#配置全局环境变量
[root@localhost ~]# echo -e "export JAVA_HOME=/usr/local/java\nexport PATH=\$PATH:\$JAVA_HOME/bin" >> /etc/profile
[root@localhost ~]# source /etc/profile #运行文件生效环境变量
[root@localhost ~]# java -version #查看Java版本
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
[root@localhost ~]# rz #上传Tomcat
. waiting to receive.**B0100000023be50
[root@localhost ~]# tar xf apache-tomcat-8.5.16.tar.gz #解档Tomcat
[root@localhost ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat8 #将Tomcat安装到/usr/local/tomcat8下
[root@localhost ~]# /usr/local/tomcat8/bin/startup.sh #启动Tomcat服务
Using CATALINA_BASE: /usr/local/tomcat8
Using CATALINA_HOME: /usr/local/tomcat8
Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
Tomcat started.
[root@localhost ~]# netstat -lnupt | grep 8080 #查看Tomcat是否启动
tcp 0 0 :::8080 :::* LISTEN 1274/java
[root@localhost ~]# mkdir -p /web/webapp/ #创建存放网页目录
[root@localhost ~]# vim /web/webapp/index.jsp #添加要存放的网页
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
JSP test2 page
<% out.println("Welcome to test site,http://www.test2.com");%>
[root@localhost ~]# vim /usr/local/tomcat8/conf/server.xml #修改Tomcat配置文件
----------------------------------------------------------------------------------------------------------------
docBase="/web/webapp" //web应用的文档基准目录
path="" //设置默认"类"
reloadable="flase" //设置监视"类"是否变化
-----------------------------------------------------------------
#重启Tomcat服务
[root@localhost ~]# /usr/local/tomcat8/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat8
Using CATALINA_HOME: /usr/local/tomcat8
Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
Tomcat started.
[root@localhost ~]# /usr/local/tomcat8/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat8
Using CATALINA_HOME: /usr/local/tomcat8
Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
Tomcat started.
host参数详解
参数 | 参数说明 |
---|---|
host | 表示一个虚拟主机 |
name | 指定主机名(域名) |
appBase | 应用程序基本目录,即存放应用程序的目录.一般为appBase=“webapps” ,相对于CATALINA_HOME而言的,也可以写绝对路径。 |
unpackWARs | 如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序 |
autoDeploy 在tomcat启动时,是否自动部署。 | |
xmlValidation | 是否启动xml的校验功能,一般xmlValidation=“false”。 |
xmlNamespaceAware | 检测名称空间,一般xmlNamespaceAware=“false”。 |
Context参数说明
参数 | 参数说明 |
---|---|
Context | 表示一个web应用程序,通常为WAR文件 |
docBase | 应用程序的路径或者是WAR文件存放的路径,也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径。 |
path | 表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/**** |
reloadable | 这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,可以在不重启tomcat的情况下改变应用程序 |
七、nginx负载均衡配置
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
upstream tomcat_server {
server 192.168.200.116:8080 weight=1;
}
server {
listen 80;
server_name localhost;
location / {
rewrite ^(.*)$ https://$host$1 permanent;
}
location ~ \.jsp$ {
proxy_pass http://tomcat_server;
}
}
------------------------------
#检查配置文件重启服务
[root@localhost ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~]# nginx -s reload
[root@localhost ~]# nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
nginx: [emerg] still could not bind()
八、Nginx负载均衡调度状态
down:表示当前的server暂时不参与负载均衡。
backup:预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的访问压力最低。
max_fails:允许请求失败的次数,默认为1,当超过最大次数时,返回proxy_next_upstream模块定义的错误。
fail_timeout:请求失败超时时间,在经历了max_fails次失败后,暂停服务的时间。max_fails和fail_timeout可以一起使用。