简述:
目前来说IBM的WebSphere,Oracle的Weblogic占据了市场上Java语言Web站点的部分份额,该两种软件由于无与伦比的性能及可靠性等优势被广泛应用于大型互联网公司的Web场景中,但是其高昂的价格也使得中小型互联网公司对此望而却步。
Tomcat自5.x版本以来,其性能上已经得到很大幅度的提升,加上其开放性的框架和二次开发等特性,已经完全可以用在访问量不是很大的生产环境下,目前大多数用于JSP技术开发的电子商务网站基本上都应用了Tomcat。
中间件产品:RedHat JBoss、Oracle Tuxedo、caucho Resin。
Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。Tomcat最初是由Sun的软件构架师詹姆斯·邓肯·戴维森开发的。后来他将其变为开源项目,并由Sun贡献给Apache软件基金会。由于大部分开源项目O'Reilly都会出一本相关的书,并且将其封面设计成某个动物的素描,因此他希望将此项目以一个动物的名字命名。因为他希望这种动物能够自己照顾自己,最终,他将其命名为Tomcat(公猫)。而O'Reilly出版的介绍Tomcat的书籍的封面也被设计成了一个公猫的形象。而Tomcat的Logo兼吉祥物也被设计成了一只公猫。
其实Tomcat最早在开始研发的时候并不叫这个名字,早期的Tomcat的Logo项目的名字叫Catalina,所以当我们安装完Tomcat后会发现安装路径下有很多Catalina有关的目录和文件。这些文件是我们配置或使用Tomcat的重要文件所在。
Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,应用在中小型系统和并发访问用户不是很多的场合,是开发和调试JSP页面的首选,Tomcat也可处理静态的HTML页面但是能力不及Apache或Nginx,所以Tomcat通常作为一个servlet和JSP容器,单独运行在后端。Tomcat官网: http://tomcat.apache.org
在安装Tomcat之前必须先安装JDK,JDK全称是Java Development Kit,是SUN公司免费提供的java语言的软件开发工具包,其中包含Java虚拟机(JVM),编写好的java源程序经过编译可生产java字节码,只要安装了JDK,就可以利用JVM解释这些字节码文件,从而保证了Java的跨平台性。
在平台兼容性方面,JDK作为解释字节码文件并根据此调用操作系统的API实现对应功能的java虚拟机,与操作系统位数密切相关,因此存在不同类型的版本,Tomcat也具有上述特征,CentOS7系统中默认已经安装了JDK。
JDK中还包括完整的JRE(Java Runtime Environment),Java运行环境,也被称为private runtime。包括了用于产品环境的各种库类,如基础类库rt.jar,以及给开发人员使用的补充库,如国际化与本地化的类库、IDL库等等。JDK中还包括各种样例程序,用以展示Java API中的各部分。
环境:
四台主机
tomcat1 192.168.1.129
tomcat2 192.168.1.139
nginx 192.168.1.127
所有主机
数据库 192.168.1.121
关闭防火墙
[root@bogon ~]# iptables -F
[root@bogon ~]# setenforce 0
[root@bogon ~]# systemctl stop firewalld查看jdk版本
[root@bogon ~]# java -version
-bash: java: 未找到命令卸载方法
rm -rf /usr/bin/java
或者
rpm -qa | grep -i openjdk 查看
java-1.7.0-openjdk-1.7.0.171-2.6.13.2.el7.x86_64
java-1.7.0-openjdk-headless-1.7.0.171-2.6.13.2.el7.x86_64
java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.161-2.b14.el7.x86_64[root@localhost ~]# rpm -e java-1.7.0-openjdk
[root@localhost ~]# rpm -e java-1.7.0-openjdk-headless
[root@localhost ~]# rpm -e java-1.8.0-openjdk --nodeps
[root@localhost ~]# rpm -e java-1.8.0-openjdk-headless
jdk安装
root@bogon ~]# tar xf jdk-8u191-linux-x64.tar.gz
[root@bogon ~]# mv jdk1.8.0_191/ /usr/local/java
[root@bogon ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java #设置java跟目录
export PATH=$PATH:$JAVA_HOME/bin #在PATH环境变量中添加java跟目录的bin子目录[root@bogon ~]# source /etc/profile
查看版本
[root@bogon ~]# java -version
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)
解压apache-tomcat-8.5.16.tar.gz包
[root@bogon ~]# tar xf apache-tomcat-8.5.16.tar.gz
解压后移动到/usr/local/并改名tomcat8
[root@bogon ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat8
启动tomcat
[root@bogon ~]# /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.默认运行端口8080
[root@bogon ~]# netstat -lnpt | grep :8080
tcp6 0 0 :::8080 :::* LISTEN 53382/java
浏览器访问测试
tomcat 配置目录及文件说明
[root@bogon ~]# ll /usr/local/tomcat8
总用量 92
drwxr-x---. 2 root root 4096 7月 5 18:24 bin
drwx------. 3 root root 254 7月 5 18:26 conf
drwxr-x---. 2 root root 4096 7月 5 18:24 lib
-rw-r-----. 1 root root 57092 6月 22 2017 LICENSE
drwxr-x---. 2 root root 197 7月 5 18:26 logs
-rw-r-----. 1 root root 1723 6月 22 2017 NOTICE
-rw-r-----. 1 root root 7064 6月 22 2017 RELEASE-NOTES
-rw-r-----. 1 root root 15946 6月 22 2017 RUNNING.txt
drwxr-x---. 2 root root 30 7月 5 18:24 temp
drwxr-x---. 7 root root 81 6月 22 2017 webapps
drwxr-x---. 3 root root 22 7月 5 18:26 work
主目录介绍
bin //存放windows或linux平台上启动或关闭的Tomcat的脚本文件
conf //存放Tomcat的各种全局配置文件,其中最主要的是server.xml和web.xml
lib //存放Tomcat运行需要的库文件(JARS)
logs //存放Tomcat执行时的LOG文件
webapps //Tomcat的主要Web发布目录、类似于nginx的html(包括应用程实例)
work //存放jsp编译后产生的.class文件
temp //存放临时文件
webapps目录介绍
docs //tomcat帮助文档
examples //web应用实例
host-manager //主机管理
manager //管理
ROOT //默认站点根目录
[root@bogon ~]# ll /usr/local/tomcat8/conf
总用量 224
drwxr-x---. 3 root root 23 7月 5 18:26 Catalina
-rw-------. 1 root root 13816 6月 22 2017 catalina.policy
-rw-------. 1 root root 7376 6月 22 2017 catalina.properties
-rw-------. 1 root root 1338 6月 22 2017 context.xml
-rw-------. 1 root root 1149 6月 22 2017 jaspic-providers.xml
-rw-------. 1 root root 2358 6月 22 2017 jaspic-providers.xsd
-rw-------. 1 root root 3622 6月 22 2017 logging.properties
-rw-------. 1 root root 7511 6月 22 2017 server.xml
-rw-------. 1 root root 2164 6月 22 2017 tomcat-users.xml
-rw-------. 1 root root 2633 6月 22 2017 tomcat-users.xsd
-rw-------. 1 root root 168251 6月 22 2017 web.xml
catalina.policy //权限控制配置文件
catalina.properties //Tomcat属性配置文件
context.xml //context用于指定额外的web目录
logging.properties //日志log相关配置文件
server.xml //主配置文件
tomcat-users.xml //manager-gui管理用户配置文件(Tomcat安装后生成的管理界面,该文件可开启访问)
web.xml //Tomcat的servlet,servlet-mapping,filter,MIME等相关配置
server.xml 主要配置文件,可修改启动端口,设置网站根目录,虚拟主机,多实例、开启https加密等功能。
server.xml的结构构成:
内的内容是注视信息
//tomcat关闭端口,默认只对本机地址开放,可以在本机通过telnet 127.0.0.1 8005访问,对Tomcat进行关闭从操作。
//tomcat启动的默认端口号8080,可以根据需要进行修改
connectionTimeout="20000"
redirectPort="8443" />
配置虚拟主机
[root@bogon ~]# vim /usr/local/tomcat8/conf/server.xml
148
149 unpackWARs="true" autoDeploy="true">
150
151
152
这段代码是Tomcat服务器的配置文件中的一部分,用于配置一个虚拟主机(Host)。在这个虚拟主机中,设置了一个上下文(Context)的路径为根路径(""),并指定了一个Web应用程序的目录(docBase)为"/web/webapp"。reloadable属性设置为false,表示不允许在运行时重新加载该Web应用程序。
定义网站默认目录
用于存放网站文件
[root@bogon ~]# mkdir -pv /web/webapp
mkdir: 已创建目录 "/web"
mkdir: 已创建目录 "/web/webapp"
在webapp下建立测试页面
[root@bogon conf]# vim /web/webapp/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
JSP test page
<% out.println("Welcome to test site,http://www.你好hhhhh.com");%>
cp /usr/local/tomcat8/conf/server.xml{,.-$(date +%F)} 可以先做个备份
从新启动tomcat服务
[root@bogon conf]# /usr/local/tomcat8/bin/shutdown.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
[root@bogon conf]# /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.
可以看到服务启动都是Java命名的进程
[root@bogon conf]# tail -f /usr/local/tomcat8/logs/catalina.out
05-Jul-2023 18:49:02.986 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat8/webapps/docs] has finished in [10] ms
05-Jul-2023 18:49:02.987 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat8/webapps/examples]
05-Jul-2023 18:49:03.282 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat8/webapps/examples] has finished in [295] ms
05-Jul-2023 18:49:03.282 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat8/webapps/host-manager]
05-Jul-2023 18:49:03.327 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat8/webapps/host-manager] has finished in [45] ms
05-Jul-2023 18:49:03.327 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat8/webapps/manager]
05-Jul-2023 18:49:03.360 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat8/webapps/manager] has finished in [33] ms
05-Jul-2023 18:49:03.366 信息 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
05-Jul-2023 18:49:03.398 信息 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
05-Jul-2023 18:49:03.400 信息 [main] org.apache.catalina.startup.Catalina.start Server startup in 838 m
浏览器访问测试
nginx+tomcat 负载均衡集群
1)关闭防火墙,selinux
2)安装JDK,配置Java环境,版本保持一致
3)安装Tomcat,版本与Tomcat 1 保持一致
4)建立一个web目录,并在里面建立一个webapp目录,用于存放网站文件
5)在webapp目录下建立一个index.jsp的测试页面
[root@bogon ~]# iptables -F
[root@bogon ~]# setenforce 0
[root@bogon ~]# systemctl stop firewalld
[root@bogon ~]# tar xf apache-tomcat-8.5.16.tar.gz
[root@bogon ~]# tar xf jdk-8u191-linux-x64.tar.gz
[root@bogon ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat8
[root@bogon ~]# cp /usr/local/tomcat8/conf/server.xml{,.bak}
148
149 unpackWARs="true" autoDeploy="true">
150
151
mkdir -p /web/webapp/
[root@bogon ~]# 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.hhh好好好.com");%>
[root@bogon ~]# mv jdk1.8.0_191/ /usr/local/java
[root@bogon ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java #设置java跟目录
export PATH=$PATH:$JAVA_HOME/bin #在PATH环境变量中添加java跟目录的bin子目录
[root@bogon ~]# source /etc/profile
[root@bogon ~]# /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
[root@bogon ~]# yum -y install pcre-devel zlib-devel openssl-devel lrzsz
[root@bogon ~]# tar xf nginx-1.16.0.tar.gz -C /usr/src/
[root@bogon src]# cd /usr/src/nginx-1.16.0/
[root@bogon nginx-1.16.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module && make && make install
--prefix=/usr/local/nginx //指定安装目录
--user=nginx --group=nginx //指定运行的用户和组
--with-file-aio //启用文件修改支持
--with-http_stub_status_module //启用状态统计
--with-http_ssl_module //启用ssl模块
--with-http_flv_module //启用flv模块,提供寻求内存使用基于时间的偏移量文件
--with-http_gzip_static_module //启用gzip静态压缩
[root@bogon nginx-1.16.0]# vim /usr/local/nginx/conf/nginx.conf 配置nginx
user nginx;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream tomcat {
server 192.168.1.129:8080 weight=1;
server 192.168.1.139:8080 weight=1;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
location ~ \.jsp$ {
proxy_pass http://tomcat;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
看到ok成功
[root@bogon nginx-1.16.0]# /usr/local/nginx/sbin/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@bogon nginx-1.16.0]# /usr/local/nginx/sbin/nginx
查看端口
[root@bogon nginx-1.16.0]# netstat -anpt | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 65592/nginx: master
[root@bogon nginx-1.16.0]# ps aux | grep nginx | grep -v grep
root 65592 0.0 0.0 45980 1152 ? Ss 19:35 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 65593 0.0 0.1 46368 1908 ? S 19:35 0:00 nginx: worker process
浏览器访问 不断刷新由于权重相同,页面会反复切换
tomcat1连接数据库
指定路径解压
[root@bogon conf]# tar xf SLSaleSystem.tar.gz -C /web/webapp/
[root@bogon conf]# ls /web/webapp/SLSaleSystem/
logs META-INF statics WEB-INF
[root@bogon conf]# vim /usr/local/tomcat8/conf/server.xml
添加路径
/SLSaleSystem" path="" reloadable="flase" >
从新启动
[root@bogon conf]# /usr/local/tomcat8/bin/shutdown.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
[root@bogon conf]# /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@bogon ~]# yum -y install mariadb-server mariadb 安装数据库
[root@bogon ~]# systemctl start mariadb 启动
[root@bogon ~]# mysql 进入
\Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database slsaledb;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all on slsaledb.* to admin@'%' identified by '123456'; 创建并赋予权限
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges; 刷新
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
[root@bogon ~]# mysql -uroot < slsaledb-2014-4-10.sql 导入数据
[root@bogon ~]# vim /web/webapp/SLSaleSystem/WEB-INF/classes/jdbc.properties 更改配置文件
driverClassName=com.mysql.jdbc.Driver
url=jdbc\:mysql\://192.168.1.121\:3306/slsaledb?useUnicode\=true&characterEncoding\=UTF-8
uname=admin
password=123456
minIdle=10
maxIdle=50
initialSize=5
maxActive=100
maxWait=100
removeAbandonedTimeout=180
removeAbandoned=true
重启服务
[root@bogon ~]# /usr/local/tomcat8/bin/shutdown.sh
[root@bogon ~]# /usr/local/tomcat8/bin/startup.sh
访问