最初是由Sun的软件构架师詹姆斯·邓肯·戴维森开发
安装Tomcat后,安装路径下面的目录和文件,是使用或者配置Tomcat的重要文件
bin:存放启动和关闭Tomcat脚本
conf:存放Tomcat不同的配置文件
doc:存放Tomcat文档
lib:存放Tomcat运行需要的库文件
logs:存放Tomcat执行时的LOG文件
src:存放Tomcat的源代码
webapps:Tomcat的主要Web发布目录
work:存放jsp编译后产生的class文件
Nginx是一款非常优秀的HTTP服务器软件
支持高达50000个并发连接数的响应
拥有强大的静态资源处理能力
运行稳定
内存、CPU等系统资源消耗非常低
目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点的负载并发能力
Nginx配置反向代理的主要参数
服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由Nginx提供服务,动态资源Nginx转发
至后端
Nginx处理静态页面的效率远高于Tomcat的处理能力
若Tomcat的请求量为1000次,则Nginx的请求量为6000次
Tomcat每秒的吞吐量为0.6M,Nginx的每秒吞吐量为3.6M
Nginx处理静态资源的能力是Tomcat处理的6倍
负载均衡器:nginx–192.168.80.10
应用服务器1:tomcat1–192.168.80.70:8080
应用服务器2:tomcat2–192.168.80.80:8080
tomcat3–192.168.80.80:8081
mysql数据库:192.168.80.50
要求部署两台后端Tomcat服务器
为了进行测试,搭建两个内容不同的网站
Tomcat部署与网站搭建步骤
关闭firewalId防火墙
[root@70 ~]# systemctl stop firewalld
[root@70 ~]# setenforce 0
setenforce: SELinux is disabled
安装JDK,配置JAVA环境
[root@70 ~]# tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
[root@70 ~]# vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
[root@70 ~]# source /etc/profile
安装配置Tomcat1
[root@70 ~]# cd /opt
[root@70 opt]# tar zxvf apache-tomcat-9.0.16.tar.gz
[root@70 opt]# mv /opt/apache-tomcat-9.0.16/ /usr/local/tomcat
[root@70 opt]# /usr/local/tomcat/bin/shutdown.sh
[root@70 opt]# /usr/local/tomcat/bin/startup.sh
创建/tomcat/webapp目录,修改server.xml,将网站文件目录更改到/tomcat/webapp/路径下
[root@70 opt]# mkdir /usr/local/tomcat/webapps/test
/tomcat/webapp/下建立测试页面index.jsp,并进行测试
[root@70 opt]# vim /usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
JSP test1 page #指定为 test1 页面
<% out.println("动态页面 1,http://www.test1.com");%>
[root@70 opt]# vim /usr/local/tomcat/conf/server.xml
#由于主机名 name 配置都为 localhost,需要删除前面的 HOST 配置
[root@70 opt]# /usr/local/tomcat/bin/shutdown.sh
[root@70 opt]# /usr/local/tomcat/bin/startup.sh
关闭firewalId防火墙
[root@80 ~]# systemctl stop firewalld
[root@80 ~]# setenforce 0
setenforce: SELinux is disabled
安装JDK,配置JAVA环境
[root@80 ~]# tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
[root@80 ~]# vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
[root@80 ~]# source /etc/profile
[root@80 opt]# tar zxvf apache-tomcat-9.0.16.tar.gz
[root@80 opt]# mkdir /usr/local/tomcat
[root@80 opt]# mv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1
[root@80 opt]# cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2
配置 tomcat 环境变量
[root@80 opt]# vim /etc/profile.d/tomcat.sh
[root@80 opt]# source /etc/profile.d/tomcat.sh
修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号
[root@80 opt]# vim /usr/local/tomcat/tomcat2/conf/server.xml
修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量
[root@80 opt]# vim /usr/local/tomcat/tomcat1/bin/startup.sh
[root@80 opt]# vim /usr/local/tomcat/tomcat1/bin/shutdown.sh
[root@80 opt]# vim /usr/local/tomcat/tomcat2/bin/startup.sh
[root@80 opt]# vim /usr/local/tomcat/tomcat2/bin/shutdown.sh
启动各 tomcat 中的 /bin/startup.sh
[root@80 opt]# /usr/local/tomcat/tomcat1/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat/tomcat1
Using CATALINA_HOME: /usr/local/tomcat/tomcat1
Using CATALINA_TMPDIR: /usr/local/tomcat/tomcat1/temp
Using JRE_HOME: /usr/local/jdk1.8.0_91/jre
Using CLASSPATH: /usr/local/tomcat/tomcat1/bin/bootstrap.jar:/usr/local/tomcat/tomcat1/bin/tomcat-juli.jar
Tomcat started.
[root@80 opt]# /usr/local/tomcat/tomcat2/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat/tomcat2
Using CATALINA_HOME: /usr/local/tomcat/tomcat2
Using CATALINA_TMPDIR: /usr/local/tomcat/tomcat2/temp
Using JRE_HOME: /usr/local/jdk1.8.0_91/jre
Using CLASSPATH: /usr/local/tomcat/tomcat2/bin/bootstrap.jar:/usr/local/tomcat/tomcat2/bin/tomcat-juli.jar
Tomcat started.
[root@80 opt]# netstat -anpt |grep java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 57351/java
tcp6 0 0 127.0.0.1:8006 :::* LISTEN 57410/java
tcp6 0 0 :::8009 :::* LISTEN 57351/java
tcp6 0 0 :::8010 :::* LISTEN 57410/java
tcp6 0 0 :::8080 :::* LISTEN 57351/java
tcp6 0 0 :::8081 :::* LISTEN 57410/java
Tomcat1和Tomcat2 server 配置
创建/tomcat1/webapp目录,修改server.xml,将网站文件目录更改到/tomcat1/webapp/路径下
[root@80 opt]# mkdir /usr/local/tomcat/tomcat1/webapps/test /usr/local/tomcat/tomcat2/webapps/test
/tomcat1/webapp/下建立测试页面index.jsp,并进行测试
[root@80 opt]# vim /usr/local/tomcat/tomcat1/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
JSP test1 page
<% out.println("动态页面 1,http://www.test1.com");%>
[root@80 opt]# vim /usr/local/tomcat/tomcat1/conf/server.xml
#由于主机名 name 配置都为 localhost,需要删除前面的 HOST 配置
[root@80 opt]# /usr/local/tomcat/tomcat1/bin/shutdown.sh
[root@80 opt]# /usr/local/tomcat/tomcat1/bin/startup.sh
/tomcat2/webapp/下建立测试页面index.jsp,并进行测试
[root@80 opt]# vim /usr/local/tomcat/tomcat2/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
JSP test1 page
<% out.println("动态页面 2,http://www.test2.com");%>
[root@80 opt]# vim /usr/local/tomcat/tomcat2/conf/server.xml
#由于主机名 name 配置都为 localhost,需要删除前面的 HOST 配置
[root@80 opt]# /usr/local/tomcat/tomcat2/bin/shutdown.sh
[root@80 opt]# /usr/local/tomcat/tomcat2/bin/startup.sh
[root@ux ~]# systemctl stop firewalld
[root@ux ~]# setenforce 0
setenforce: SELinux is disabled
[root@ux ~]# yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
[root@ux ~]# useradd -M -s /sbin/nologin nginx
[root@ux ~]# cd /opt
[root@ux opt]# tar zxvf nginx-1.12.2.tar.gz -C /opt/
[root@ux opt]# cd nginx-1.12.2/
[root@ux opt]# ./configure \
> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --with-file-aio \ #启用文件修改支持
> --with-http_stub_status_module \ #启用状态统计
> --with-http_gzip_static_module \ #启用 gzip静态压缩
> --with-http_flv_module \ #启用 flv模块,提供对 flv 视频的伪流支持
> --with-http_ssl_module \ #启用 SSL模块,提供SSL加密功能
> --with-stream #启用 stream模块,提供4层调度
[root@ux opt]# make && make install
[root@ux opt]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@ux opt]# vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[root@ux opt]# chmod 754 /lib/systemd/system/nginx.service
[root@ux opt]# systemctl start nginx.service
[root@ux opt]# systemctl enable nginx.service
[root@ux opt]# echo '这是静态页面
' > /usr/local/nginx/html/index.html
[root@ux opt]# mkdir /usr/local/nginx/html/img
[root@ux opt]# cp /root/game.jpg /usr/local/nginx/html/img
[root@ux opt]# vim /usr/local/nginx/conf/nginx.conf
......
http {
......
#gzip on;
#配置负载均衡的服务器列表,weight参数表示权重,权重越高,被分配到的概率越大
upstream tomcat_server {
server 192.168.80.70:8080 weight=1;
server 192.168.80.80:8080 weight=1;
server 192.168.80.80:8081 weight=1;
}
server {
listen 80;
server_name www.kgc.com;
charset utf-8;
#access_log logs/host.access.log main;
#配置Nginx处理动态页面请求,将 .jsp文件请求转发到Tomcat 服务器处理
location ~ .*\.jsp$ {
proxy_pass http://tomcat_server;
#设置后端的Web服务器可以获取远程客户端的真实IP
##设定后端的Web服务器接收到的请求访问的主机名(域名或IP、端口),默认HOST的值为proxy_pass指令设置的主机名。如果反向代理服务器不重写该请求头的话,那么后端真实服务器在处理时会认为所有的请求都来在反向代理服务器,如果后端有防攻击策略的话,那么机器就被封掉了。
proxy_set_header HOST $host;
##把$remote_addr赋值给X-Real-IP,来获取源IP
proxy_set_header X-Real-IP $remote_addr;
##在nginx 作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#配置Nginx处理静态图片请求
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
root /usr/local/nginx/html/img;
expires 10d;
}
location / {
root html;
index index.html index.htm;
}
......
}
......
}
测试静态页面效果
浏览器访问 http://192.168.80.10/
浏览器访问 http://192.168.80.10/game.jpg