Tomcat服务部署与Nginx负载均衡配置
一、中间键产品介绍
目前来说IBM的WebSphere,Oracle的Weblogic占据了市场上java语言Web站点的部分份额,该两种软件都是商业化的软件,由于性能优越,可靠性高等优点应用于大型互联网公司的Web场景中。
Tomcat自5.x版本以来,其性能上已经得到了大幅度的提升,开放性的架构和二次开发等特性,可以完全用在访问量不是很大的生产环境下,目前大多数用于JSP技术开发的电子商务网站基本上都应用了Tomcat。
中间键(提供JSP服务的软件)产品:
- RedHat JBoss
- Oracle Tuxedo
- Oracle Weblogic
- caucho Resin
- IBM WebSphere
- JSP Tomcat
页面:
- html Apache
- php LAMP LNMP
- jsp Tomcat
二、Tomcat软件简介
Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。Tomcat最初是由Sun的软件构架师詹姆斯·邓肯·戴维森开发的。后来他将其变为开源项目,并由Sun贡献给Apache软件基金会。
三、Tomcat应用场景
Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,应用在中小型系统和并发访问用户不是很多的场合,是开发和调试JSP页面的首选,Tomcat也可处理静态的HTML页面但是能力不及Apache或Nginx,所以Tomcat通常作为一个servlet和JSP容器,单独运行在后端。
四、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(主机192.168.200.112)
1、关闭防火墙和安全机制
[root@localhost ~]# systemctl stop firewalld [root@localhost ~]# iptables -F [root@localhost ~]# setenforce 0
2、查看JDK是否安装
[root@localhost ~]# java -version openjdk version "1.8.0_222" OpenJDK Runtime Environment (build 1.8.0_222-b10) OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
3、卸载用rpm方式安装的JDK
方法一
[root@localhost ~]# rpm -qa | grep -i openjdk java-1.8.0-openjdk-headless-1.8.0.222.b10-0.el7_6.x86_64 java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64 [root@localhost ~]# rpm -e java-1.8.0-openjdk --nodeps //有依赖关系,解除依赖关系后面加 --nodeps [root@localhost ~]# rpm -e java-1.8.0-openjdk-headless [root@localhost ~]# rpm -qa | grep -i openjdk
方法二
[root@localhost ~]# which java /usr/bin/java [root@localhost ~]# rm -rf /usr/bin/java [root@localhost ~]# java -version -bash: /usr/bin/java: 没有那个文件或目录
4、安装JDK
[root@localhost ~]# tar -xf jdk-8u191-linux-x64.tar.gz [root@localhost ~]# mv jdk1.8.0_191/ /usr/local/java //将解压后的包移动到指定目录下 [root@localhost ~]# /usr/local/java/bin/java -version //此时只有通过绝对路径才可以查看java的版本号信息 [root@localhost ~]# vim /etc/profile //修改 export JAVA_HOME=/usr/local/java //设置java的根目录 export PATH=$PATH:$JAVA_HOME/bin //在PATH环境变量中添加java根目录下的bin子目录 [root@localhost ~]# echo $PATH //在未执行修改的脚本时查看PATH变量 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin [root@localhost ~]# source /etc/profile //重置一下脚本 [root@localhost ~]# echo $PATH //再查一遍 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/java/bin
5、Tomcat安装
[root@localhost ~]# tar -xf apache-tomcat-8.5.16.tar.gz [root@localhost ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat8 [root@localhost ~]# ls /usr/local/tomcat8/bin bootstrap.jar setclasspath.sh catalina.bat shutdown.bat catalina.sh shutdown.sh catalina-tasks.xml startup.bat commons-daemon.jar startup.sh (启动文件) commons-daemon-native.tar.gz tomcat-juli.jar configtest.bat tomcat-native.tar.gz configtest.sh tool-wrapper.bat daemon.sh tool-wrapper.sh digest.bat version.bat digest.sh version.sh setclasspath.bat //.bat Windows版本 //.sh Linus版本
6、启动
[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 ~]# netstat -anpt | grep :8080 tcp6 0 0 :::8080 :::* LISTEN 3226/java
7、测试
六、设置Tomcat网页存放位置(主机192.168.200.112)
[root@localhost ~]# mkdir -p /web/webapp/ //创建存放网页的目录 [root@localhost ~]# vim /web/webapp/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> [root@localhost ~]# vim /usr/local/tomcat8/conf/server.xml <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context docBase="/web/webapp" path="" reloadable="flash"></Context> 注释:docBase="/web/webapp" //web应用的文档基准目录 path=" " //设置默认"类" reloadable="flase" //设置监视"类"是否变化 [root@localhost ~]# /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@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.
测试
七、nginx负载均衡配置(主机192.168.200.111)
确保安装了nginx,80端口已经打开,直接修改配置文件
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf upstream tomcat_server { server 192.168.200.112:8080 weight=1; } server { listen 80; server_name localhost; location / { rewrite ^(.*)$ https://$host$1 permanent; } location ~ \.jsp$ { proxy_pass http://tomcat_server; } charset utf-8; [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 nginx: [emerg] bind() to 0.0.0.0:80 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:80 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:80 failed (98: Address already in use) nginx: [emerg] still could not bind() [root@localhost ~]# nginx -s reload
测试