三期总目录链接
目录
一、部署Tomcat
(一)Tomcat简介
(二)应用场景
(三)案例
1、准备工作
2、安装JDK
3、安装及配置Tomcat
4、Tomcat相关说明
5、Tomcat主配置文件说明
6、建立java的web站点
二、Nginx+Tomcat负载均衡群集
1、Tomcat服务器1的配置和192.168.1.4的配置方法基本相同
2、Nginx服务器配置
3、在nginx配置文件中设置
5、测试负载均衡效果
练习题
Tomcat最初是由Sun的软件架构师詹姆斯·邓肯·戴维森开发的。后来他帮助将其变为开源项目,并由Sun贡献给Apache软件基金会。
Tomcat(公猫)是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选,实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的
另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。
1)关闭防火墙和selinux、禁用iptables(ip过滤包)
2)安装Tomcat前先安装JDK,JDK全称是Java Development Kit,是Sun公司免费
提供的Java语言的软件开发工具包,其中包含Java虚拟机(JVM)。编写好的Java源程序经过编译可形成Java字节码,只要安装了JDK,就可以利用JVM解释这些字节码文件,从而保证了Java的跨平台性。
如果系统中有java环境,需要先卸载
[root@C7--04 ~]# yum -y remove java
已加载插件:fastestmirror
参数 java 没有匹配
不删除任何软件包
[root@C7--04 ~]# tar xf jdk-8u91-linux-x64.tar.gz #解压jdk
[root@C7--04 ~]# mv jdk1.8.0_91/ /usr/local/java #移动到/usr/local/java文件下
[root@C7--04 ~]# vim /etc/profile.d/java.sh #编辑java脚本
export JAVA_HOME=/usr/local/java #设置java根目录
export PATH=$PATH:$JAVA_HOME/bin #在path环境变量中添加java根目录下的bin子目录
保存退出
[root@C7--04 ~]# source /etc/profile.d/java.sh #启动脚本
[root@C7--04 ~]# echo $PATH #输出变量内容
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/java/bin
[root@C7--04 ~]# java -version #查看java运行版本是否一致
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
Tomcat的端口默认为8080端口
[root@C7--04 ~]# tar xf apache-tomcat-8.5.16.tar.gz #解压tomcat
[root@C7--04 ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat #移动到/usr/local/tomcat文件夹中
[root@C7--04 ~]# /usr/local/tomcat/bin/startup.sh #启动Tomcat
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@C7--04 ~]# netstat -anpt | grep 8080 #查看监听端口信息
tcp6 0 0 :::8080 :::* LISTEN 1531/java
[root@C7--04 ~]# /usr/local/tomcat/bin/shutdown.sh #关闭Tomcat
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
方法一:访问
[root@C7--04 ~]# yum -y install elinks #安装文本浏览器
........
...
[root@C7--04 ~]# elinks --dump http://192.168.1.4:8080 #访问成功
[1]Home [2]Documentation [3]Configuration [4]Examples [5]Wiki [6]Mailing
Lists [7]Find Help
Apache Tomcat/8.5.16
If you're seeing this, you've successfully installed Tomcat. Congratulations!
[8][tomcat logo]
方法二:使用自己的电脑访问 http://地址:8080
安装tree:以树形结构列出指定目录下的所有内容,包括所有文件、子目录及子目录里的目录和文件
[root@C7--04 ~]# yum -y install tree
[root@C7--04 ~]# cd /usr/local/tomcat #主目录位置
[root@C7--04 tomcat]# tree
.
├── bin
│ ├── bootstrap.jar
│ ├── catalina.bat
│ ├── catalina.sh
│ ├── catalina-tasks.xml
│ ├── commons-daemon.jar
│ ├── commons-daemon-native.tar.gz
│ ├── configtest.bat
│ ├── configtest.sh
│ ├── daemon.sh
..........
.....
主目录 | |
bin | 管理脚本文件 |
conf | 配置文件 |
lib | 运行需要的库文件(JARS) |
logs | 日志文件 |
webapps | Web发布目录 |
work | 存放jsp编译后产生的class文件 |
配置文件 | |
catalina.policy | 权限控制 |
catalina.properies | 属性配置文件 |
context.xml | 上下文配置文件 |
logging.properies | 日志log相关配置文件 |
server.xml | 主配置文件 |
tomcat-users.xml | manager-gui管理用户配置文件(后台管理界面) |
web.xml | Tomcat的servlate、servlet-mapping、filter、MIME等配置 |
server.xml:Tomcat的主要配置文件、管理Tomcat的启动端口、网站目录、虚拟主机、开启https等
整个server.xml由以下结构构成为:
、 Host>
、
[root@C7--04 tomcat]# vim /usr/local/tomcat/conf/server.xml
.......
...
#关闭端口,默认只对本机地址开放可以通过
......
...
......
...
#启动AJP 1.3连接器时默认的端口号,通过8009端口接收由其它服务器转发过来的请求
......
...
......
...
Tomcat Server的组成部分说明 |
|
Server | 是整个Catalina的servlel容器 |
Service | 是一个集合:它由一个或者多个Connector组成,以及一个Engine(负责处理所有Connector所获得的客户)请求 |
Connector | 一个Connector将在某个指定端口上侦听客户请求,并将获得的请求交给Engine来处理,从Engine处获得回应并返回客户 TOMCAT有两个典型的Connector,一个直接侦听来自browser的http请求,一个侦听来自其它WebServer的请求 Coyote Http/1.1 Connector 在端口8080处侦听来自客户browser的http请求 Coyote JK2 Connector 在端口8009处侦听来自其它WebServer(Apache)的servlet/jsp代理请求 |
Engine | Engine下可以配置多个虚拟主机Virtual Host,每个虚拟主机都有一个域名 当Engine获得一个请求时,它把该请求匹配到某个Host上,然后把该请求交给该Host来处理 Engine有一个默认虚拟主机,当请求无法匹配到任何一个Host上的时候,将交给该默认Host来处理 |
Host | 代表一个Virtual Host,虚拟主机,每个虚拟主机和某个网络域名Domain Name相匹配 每个虚拟主机下都可以部署(deploy)一个或者多个Web App,每个Web App对应于一个Context,有一个Context path 所以一个path==""的Context将成为该Host的默认Context所有无法和其它Context的路径名匹配的请求都将最终和该默认Context匹配 |
Context | 一个Context对应于一个Web Application,一个Web Application由一个或者多个Servlet组成 |
[root@C7--04 ~]# mkdir -pv /web/webapp #新建web文档目录
mkdir: 已创建目录 "/web"
mkdir: 已创建目录 "/web/webapp"
[root@C7--04 ~]# vim /web/webapp/index.jsp #编写首页
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
JSP test1 page
<% out.println("欢迎访问java网站;http://192.168.1.4");%>
保存退出
进入tomcat的server.xml文件
代表了运行在 上的单个Web应用,一个 可以有多个 元素,每个Web应用必须有唯一的URL路径,这个URL路径在 中的属性path中设定
docBase | Web应用的文件路径,可以给定绝对路径,也可以给定相对于 |
path | 访问该Web应用的URL入口 |
reloadable | 这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用 |
[root@C7--04 ~]# vim /usr/local/tomcat/conf/server.xml
.......
....
# 第150行,添加context字段
.....
保存退出
重启tomcat服务
[root@C7--04 ~]# /usr/local/tomcat/bin/shutdown.sh #停止服务
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@C7--04 ~]# /usr/local/tomcat/bin/startup.sh #启动服务
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
访问测试
Nginx是一款非常优秀的http服务器软件,它能够支持高达50000个并发连接数的响应,拥有强
大的静态资源处理能力,运行稳定,并且内存、CPU 等系统资源消耗非常低。目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,来提升整个站点的负载并发能力
准备3台虚拟机两台虚拟机安装tomcat一台安装nginx
安装相关软件包
[root@C7--01 ~]# yum -y install pcre-devel zlib-devel openssl-devel
.......
...
[root@C7--01 ~]# groupadd nginx #创建组
[root@C7--01 ~]# useradd -g nginx -s /bin/false nginx #创建用户nginx进入nginx组中
/bin/false和/sbin/nologin的区别 | |
/bin/false | 是最严格的禁止login选项,一切服务都不能用 |
/sbin/nologin | 只是不允许login系统 |
[root@C7--01 ~]# tar xf nginx-1.12.0.tar.gz -C /usr/src/ #解压nginx安装包到/usr/src/下
[root@C7--01 ~]# cd /usr/src/nginx-1.12.0/ #进入目录
[root@C7--01 nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module && make && make install
--user=www --group=www | 指定运行的用户、组 |
--with-file-aio | 启用文件修改支持 |
--with-http_stub_status_module | 启用状态统计 |
--with-http_gzip_static_module | 启用gzip静态压缩 |
--with-http_flv_module | 启用flv模块,提供寻求内存使用基于时间的偏移量文件 |
--with-http_ssl_module | 启用ssl模块 |
[root@C7--01 ~]# vim /usr/local/nginx/conf/nginx.conf
.............
.....
#gzip on;
upstream tomcat_server { #第34行;设置负载均衡服务器列表
server 192.168.1.4:8080 weight=1; #第35行;weight表示权重:权重越高被分配的概率就越大
server 192.168.1.4:8080 weight=1; #第36行;为了测试比较明显,我们把权重设置成一样
}
......
..
location / {
root html;
index index.html index.htm;
proxy_pass http://tomcat_server; #第49行把nginx的默认站点通过proxy_pass方法代理到设定好的tomcat_server负载均衡服务器组上
......
保存退出
4、检查nginx 的配置文件
启动时发现启动失败的原因:是因为我们设置了/bin/false禁止一切服务
[root@C7--01 nginx-1.12.0]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: [emerg] getgrnam("nginx") failed
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed
[root@C7--01 nginx-1.12.0]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf #启动Nginx
nginx: [emerg] getgrnam("nginx") failed
[root@C7--01 ~]# tail -1 /etc/passwd #查看用户
nginx:x:1001:1001::/home/nginx:/usr/bin/false
解决方法修改成nologin
[root@C7--01 ~]# usermod -s /usr/sbin/nologin nginx
[root@C7--01 ~]# tail -1 /etc/passwd
nginx:x:1001:1001::/home/nginx:/usr/sbin/nologin
[root@C7--01 nginx-1.12.0]# /usr/local/nginx/sbin/nginx -t #检查nginx 的配置文件
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@C7--01 nginx-1.12.0]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf #启动Nginx
[root@C7--01 nginx-1.12.0]# ps aux | grep nginx #查看nginx服务进程
root 4166 0.0 0.1 45896 1132 ? Ss 20:21 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nginx 4167 0.0 0.1 48420 1988 ? S 20:21 0:00 nginx: worker process
root 4169 0.0 0.0 112676 984 pts/0 R+ 20:21 0:00 grep --color=auto nginx
[root@C7--01 nginx-1.12.0]# netstat -anpt | grep nginx #查看端口号和PID进程号
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4166/nginx: master
访问: http://192.168.1.1
不断刷新测试发现页面会反复在以下页面切换,负载均衡群集搭建成功,可以在两个Tomcat server网站上进行切换了
1. 简述Tomcat的特点与应用场景
应用场景:通常作为一个servlet 和 JSP 容器,单独运行在后端
Tomcat的特点:占用系统资源小;扩展性好
2. 在Linux系统中执行什么命令可以查看JDK的版本?
执行:java -version 可以查看JDK的版本
3. Tomcat默认运行的端口是多少?执行什么命令可以查看其端口监听的信息?
Tomcat默认运行的端口是:8080
查看所有端口信息:netstat -anpt | grep 8080
4. 分别描述Tomcat编译安装后所生成的对应bin、conf、lib、webapps目录的作用
bin | 管理脚本文件 |
conf | 配置文件 |
lib | 运行需要的库文件(JARS) |
webapps | Web发布目录 |
5. server.xml为Tomcat的主要配置文件,它的结构构成是怎样的?
server.xml的结构构成: 6. 简述Tomcat Server的组成部分 组成部分为:Server、Service、Connector、Engine、Host、Context 7. 编译安装Nginx时通过什么配置项启用SSL模块? 配置 --with-http_ssl_module 启用SSL模块 8. 在Nginx主配置文件中添加 upstream tomcat_server {...}配置段的作用是什么? 作用:设置负载均衡服务器列表,权重越高被分配的概率就越大 9. 在Nginx主配置文件中添加proxy_pass http://tomcat_server; 配置的作用是什么? 作用:把nginx的默认站点通过proxy_pass方法代理到设定好的tomcat_server负载均衡服务器组上 10. 在Linux系统中执行什么命令可以查看Nginx服务进程? 执行:ps aux | grep nginx