Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,是开发和调试JSP程序的首选。因为Tomcat处理静态HTML的能力运不及Apache或者Nginx,因此Tomcat一般是做为一个Servlet和JSP容器,单独运行在后端。html
一般状况下,一个Tomcat站点因为可能出现单点故障及没法应付过多客户复杂请求等问题,不能单独应用于生产环境下,目前不少大型网站都应用Nginx服务器做为后端网站程序的反向代理及负载均衡器,简单来讲就是Nginx做为负载均衡器,响应客户端的请求,Tomcat做为应用服务器的负载集群,处理客户端的请求,也就是说Nginx将访问请求转发给后端服务器池的服务器来处理。网站拓扑图如图所示:java
案例环境:linux
主机操做系统IP地址主要软件Nginx服务器RedHat7.3 x86_64192.168.113.151nginx-1.12.0.tar.gzTomcat服务器1CentOS7.4 x86_64192.168.113.129jdk-8u91-linux-x64.tar.gz / apache-tomcat-8.5.16.tar.gzTomcat服务器2CentOS7.4 x86_64192.168.113.150jdk-8u91-linux-x64.tar.gz / apache-tomcat-8.5.16.tar.gznginx
1.启动主机后关闭防火墙c++
复制代码
systemctl disable firewalld.service //禁用防火墙服务 systemctl stop firewalld.service //关闭防火墙服务 复制代码
2.安装JDK,配置Java环境web
(1).解压jdk软件至/opt目录下,并将解压后生成的jdk文件夹移到/usr/local/下,更名为java。shell
复制代码
tar zxvf jdk-7u65-linux-x64.gz -C /opt mv jdk1.7.0_65/ /usr/local/java 复制代码
(2).在/etc/profile.d/下创建java.sh脚本。apache
复制代码
[root@centos7-1 ~]# vim /etc/profile.d/java.sh export JAVA_HOME=/usr/local/java //设置Java根目录 export PATH=$PATH:$JAVA_HOME/bin //在PATH环境变量中添加Java根目录下的bin/子目录 复制代码
(3).将java.sh脚本导入到环境变量,使其生效bootstrap
复制代码
source /etc/profile.d/java.sh 复制代码
(4).运行java-version命令查看java版本是否和以前安装的一致。vim
复制代码
[root@centos7-1 ~]# java -version openjdk version "1.8.0_131" OpenJDK Runtime Environment (build 1.8.0_131-b12) OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode) 复制代码
3.安装配置Tomcat
(1).解压apache-tomcat-8.5.16.tar.gz包至/opt目录,并将解压后生成的文件夹移动到/usr/local/下,更名为tomcat8。
复制代码
tar zxvf apache-tomcat-8.5.16.tar.gz -C /opt/ mv apache-tomcat-8.5.16/ /usr/local/tomcat8 复制代码
(2).启动Tomcat
复制代码
[root@centos7-1 ~]# /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. 复制代码
Tomcat默认运行在8080端口,运行netstat命令查看8080端口监听的信息。
复制代码
[root@centos7-1 ~]# netstat -ntap | grep 8080 tcp6 0 0 :::8080 :::* LISTEN 1583/java 复制代码
(3).打开浏览器访问测试http://192.168.113.129:8080/, 若是出现x下面的界面,则表示Tomcat已经配置启动成功。
4.创建Java的web站点
(1).在根目录下创建一个web目录,并在里面创建一个webapp1目录,用于存放网站文件。
复制代码
[root@centos7-1 ~]# mkdir -pv /web/webapp1 mkdir: 已建立目录 "/web" mkdir: 已建立目录 "/web/webapp1" 复制代码
(2).在webapp1目录下创建一个index.jsp的测试页面。
复制代码
[root@centos7-1 ~]# vim /web/webapp1/index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> //注释 <html> <head> <title>JSP test1 page</title> //测试页标题 </head> <body> <% out.println("Welcome to test site,http://www.test1.com");%> //测试页主体内容 </body> </html> 复制代码
(3).修改Tomcat的server.xml文件。
定义一个虚拟主机,并将网站文件路径指向已经创建的/web/webapp1,在host段增长context段。
复制代码
[root@centos7-1 ~]# vim /usr/local/tomcat8/conf/server.xml <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context docBase="/web/webapp1" path="" reloadable="false"> </Context> 复制代码
(4).关闭Tomcat,再从新启动。
复制代码
/usr/local/tomcat8/bin/shutdown.sh //关闭Tomcat /usr/local/tomcat7/bin/startup.sh //重启Tomcat 复制代码
(5).经过浏览器访问http://192.168.113.129:8080/, 出现下面的界面,说明Tomcat站点配置成功而且可以运行JSP了。
1.启动主机后关闭防火墙。
2.安装JDK,配置Java环境,版本与Tomcat1 server一致。
3.安装配置Tomcat,版本与Tomcat1 server一致。
4.建立/web/webapp1目录,修改Tomcat配置文件server.xml文件,将网站文件目录更改到/web/webapp1/路径下。
5.在/web/webapp1/路径下创建index.jsp,为了区别将测试页index.jsp的内容更改以下:
复制代码
[root@localhost ~]# vim /web/webapp1/index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> //注释 <html> <head> <title>JSP test2 page</title> //测试页标题 </head> <body> <% out.println("Welcome to test site,http://www.test2.com");%> //测试页主体内容 </body> </html> 复制代码
6.启动tomcat,浏览器访问http://192.168.113.150:8080/, 出现下面的界面,说明Tomcat站点配置成功而且可以运行JSP了。
复制代码
systemctl disable firewalld.service systemctl stop firewalld.service 复制代码
复制代码
yum install gcc gcc-c++ make pcre pcre-devel zlib-devel openssl-devel -y 复制代码
复制代码
useradd -s /bin/false www //建立运行用户www,强制禁止登录系统shell环境 tar zxvf nginx-1.12.0.tar.gz -C /opt //解压nginx软件至/opt目录下 cd /opt/nginx-1.12.0/ //切换到解压后的nginx文件夹目录下 ./configure \ //配置nginx的具体选项 --prefix=/usr/local/nginx \ --user=www \ --group=www \ --with-file-aio \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-http_flv_module \ --with-http_ssl_module 复制代码
加q群:834962734,可获取一份Java架构进阶技术学习资源。(高并发+Spring源码+JVM原理解析+分布式架构+微服务架构+多线程并发原理等...这些成为架构师必备的内容)以及Java进阶学习路线图。
4.配置nginx.conf
复制代码
vim /usr/local/nginx/conf/nginx.conf 复制代码
(1).在http{...}中加入如下代码,设定负载均衡的服务器列表,weight参数表示权值,权值越高被分配到的几率越大。为了使测试效果明显,把权重设置为同样。
复制代码
upstream tomcat_server { server 192.168.113.129:8080 weight=1; server 192.168.113.150:8080 weight=1; } //配置后端服务池tomcat_server,以提供响应数据 复制代码
(2).在http{...} - server{...} - location /{...}中加入一行“proxy_pass http://tomcat_server;” 。
复制代码
location / { root html; index index.html index.htm; proxy_pass http://tomcat_server; //配置将访问请求转发给后端服务器池的服务器处理 } 复制代码
利用以上方式,把Nginx的默认站点经过proxy_pass方法代理到了设定好的tomcat_server负载均衡服务器组上。
5.测试nginx配置文件是否正确。
复制代码
[root@RedHat7-1 ~]# /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 复制代码
6.启动Nginx服务并查看其端口
复制代码
[root@RedHat7-1 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ //建立nginx主程序的软连接,方便调用nginx命令 [root@RedHat7-1 ~]# nginx //启动nginx服务 [root@RedHat7-1 ~]# netstat -ntap | grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 17819/nginx: master [root@RedHat7-1 ~]# killall -1 nginx //重启nginx服务 复制代码
1.打开浏览器访问http://192.168.113.151/.
2.不断刷新浏览器测试,能够看到因为权重相同,页面会反复在如下两个页面切换。
第一次访问,出现test1的测试页面,刷新后,第二次访问出现test2的测试页面,这说明负载均衡集搭建成功,已经能够在两个tomcat server站点间进行切换了。
真实环境中,服务器集群站点的内容相同,这里是为了测试负载均衡集的效果而创建2个不一样的测试页面。