CentOS 7安装部署Tomcat(8.5.5)

文章目录


系统环境

[root@db1 ~]# cat /etc/redhat-release 
CentOS Linux release 7.0.1406 (Core)

1 JDK下载安装

1.1 下载JDK

官网下载地址:https://www.oracle.com/java/technologies/javase-downloads.html

1.2 安装

[root@db1 ~]# rpm -ivh jdk-8u251-linux-x64.rpm
警告:jdk-8u251-linux-x64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID ec551f03: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:jdk1.8-2000:1.8.0_251-fcs        ################################# [100%]
Unpacking JAR files...
        tools.jar...
        plugin.jar...
        javaws.jar...
        deploy.jar...
        rt.jar...
        jsse.jar...
        charsets.jar...
        localedata.jar...

1.3 配置环境变量

[root@db1 ~]# vim /etc/profile

export JAVA_HOME=/usr/java/jdk1.8.0_251-amd64                           #java家目录
export JAVA_BIN=/usr/java/jdk1.8.0_251-amd64/bin                        #java可执行文件目录
export PATH=${JAVA_HOME}/bin:$PATH                                      #修改系统环境变量
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar   #类路径

1.4 生效配置

[root@db1 ~]# source /etc/profile

1.5 验证

[root@db1 ~]# java -version
java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)

2 Tomcat下载安装

2.1 Tomcat下载

官网下载地址:https://tomcat.apache.org/

2.2 解压

[root@db1 ~]# tar -zxvf apache-tomcat-8.5.55.tar.gz

2.3 移动到对应目录

[root@db1 ~]# mv apache-tomcat-8.5.55 /usr/local/tomcat

2.4 启动tomcat服务

[root@db1 bin]# pwd
/usr/local/tomcat/bin
[root@db1 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/java/jdk1.8.0_251-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

2.5 查看启动日志

[root@db1 ~]# tail -f /usr/local/tomcat/logs/catalina.2020-05-28.log

2.6 添加systemd服务管理

[root@db1 ~]# vim /etc/init.d/tomcat 

#!/bin/bash
# chkconfig:2345 96 14
# description:The Apache Tomcat server/JSP container
JAVA_OPTS='-server -Xms64m -Xmx128m'	# 设置最小和最大java heap内存大小
JAVA_HOME=/usr/java/jdk1.8.0_251-amd64	# jdk家目录
CATALINA_HOME=/usr/local/tomcat			# 指定tomcat家目录
$CATALINA_HOME/bin/catalina.sh $*		# 指定启动或运行tomcat脚本

[root@db1 ~]# chkconfig --add tomcat
[root@db1 ~]# chmod +x /etc/init.d/tomcat 
[root@db1 ~]# systemctl stop tomcat
[root@db1 ~]# systemctl start tomcat

2.7 查看监听端口

[root@db1 ~]# netstat -nltup |grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      42645/java

2.8 防火墙放行端口

[root@db1 ~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent 
success
[root@db1 ~]# firewall-cmd --zone=public --add-port=8009/tcp --permanent    
success
[root@db1 ~]# firewall-cmd --reload 
success

# 查看放行的public端口
[root@db1 ~]# firewall-cmd --zone=public --list-ports 
8009/tcp 8080/tcp

2.9 测试

3 配置管理Manager APP

3.1 关闭tomcat

[root@db1 ~]# systemctl stop tomcat

在这里插入图片描述
在这里插入图片描述

3.2 配置tomcat-users.xml文件

添加上图代码,用户名密码自定义,roles角色可以多个,使用,分开即可。

[root@db1 ~]# vim /usr/local/tomcat/conf/tomcat-users.xml

<role rolename="manager-gui"/>
<user username="tomcat-manager" password="tomcat123" roles="manager-gui"/>

3.3 添加并配置manager.xml文件

[root@db1 ~]# vim /usr/local/tomcat/conf/Catalina/localhost/manager.xml

<Context privileged="true" antiResourceLocking="false"   
         docBase="${catalina.home}/webapps/manager">
    <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>

3.4 启动tomcat

[root@db1 ~]# systemctl start tomcat

3.5 点击Manager APP测试


4 配置JSP连接MySQL

4.1 下载MySQL Connector

官网地址:https://dev.mysql.com/downloads/


4.2 上传并解压包

[root@db1 ~]# ls mysql-connector-java-5.1.38.tar.gz 
mysql-connector-java-5.1.38.tar.gz
[root@db1 ~]# tar -zxf mysql-connector-java-5.1.38.tar.gz

4.3 拷贝jar包到tomcat目录

[root@db1 ~]# cd mysql-connector-java-5.1.38/
[root@db1 mysql-connector-java-5.1.38]# ls
build.xml  COPYING  mysql-connector-java-5.1.38-bin.jar  README.txt
CHANGES    docs     README                               src
[root@db1 mysql-connector-java-5.1.38]# cp mysql-connector-java-5.1.38-bin.jar /usr/local/tomcat/lib/

4.4 安装MySQL(略)

参考文档:https://blog.csdn.net/weixin_40720406/article/details/105899214

当然也可以使用yum install mysql-server -y进行安装

4.5 修改MySQL密码

[root@db1 ~]# mysqladmin -uroot password 123   
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

4.6 指定MySQL字符集和客户端字符集

[root@db1 ~]# vim/etc/my.cnf

[mysqld]
user=mysql
basedir=/software/database/mysql
datadir=/data/3306/
server_id=6
port=3306
socket=/tmp/mysql.sock
character-set-server=utf8

[mysql]
socket=/tmp/mysql.sock

[client]
default-character-set=utf8

4.7 查看MySQL字符集编码

[root@db1 ~]# mysql -uroot -p123

mysql> mysql> show variables where variable_name like '%chara%';
+--------------------------+------------------------------------------------------------------------+
| Variable_name            | Value                                                                  |
+--------------------------+------------------------------------------------------------------------+
| character_set_client     | utf8                                                                   |
| character_set_connection | utf8                                                                   |
| character_set_database   | utf8                                                                   |
| character_set_filesystem | binary                                                                 |
| character_set_results    | utf8                                                                   |
| character_set_server     | utf8                                                                   |
| character_set_system     | utf8                                                                   |
| character_sets_dir       | /software/database/mysql-5.7.28-linux-glibc2.12-x86_64/share/charsets/ |
+--------------------------+------------------------------------------------------------------------+
8 rows in set (0.00 sec)

4.8 验证

4.8.1 创建tomcat数据库

mysql> create database tomcat charset utf8mb4;

4.8.2 创建表

mysql> use tomcat
Database changed

mysql> create table t1(id int,name varchar(128)) charset utf8mb4; 
Query OK, 0 rows affected (0.07 sec)

4.8.3 插入数据

mysql> insert into t1 values(1,'wzx');
mysql> insert into t1 values(2,'gld');

4.8.4 授权tomcat用户

mysql> grant all on tomcat.* to tomcat@localhost identified by 'tomcat';

4.8.5 测试tomcat用户连接数据库

mysql> exit
Bye
[root@db1 ~]# mysql -utomcat -ptomcat

mysql> select user();
+------------------+
| user()           |
+------------------+
| tomcat@localhost |
+------------------+
1 row in set (0.00 sec)

4.8.6 编写测试JSP文件

[root@db1 ~]# vim /usr/local/tomcat/webapps/ROOT/test_jsp.jsp

<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://localhost/tomcat?user=tomcat&password=tomcat&useUnicode=true&characterEncoding=utf-8"; 
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from t1";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
step:<%=rs.getString(1)%>
context:<%=rs.getString(2)%><br><br>
<%}%>
<%out.print("Congratulations!!! JSP connect MYSQL IS OK!!!!");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>

4.8.7 测试JSP连接MySQL

http://192.168.10.200:8080/test_jsp.jsp

5 网站根目录修改

默认根目录路径如下:即webapps(主页:/usr/local/tomcat/webapps/ROOT/index.jsp)

[root@db1 ~]# vim /usr/local/tomcat/conf/server.xml 

 <Host name="localhost"  appBase="/var/www/html"
	 unpackWARs="true" autoDeploy="true">

5.1 创建网站根目录

[root@db1 ~]# mkdir -p /var/www/html/ROOT/

5.2 编写网页

[root@db1 ~]# systemctl restart tomcat
echo "<h2>Hello World</h2>" >/var/www/html/ROOT/test.html

5.3 测试访问

浏览器输入地址:http://192.168.10.200:8080/test.html

6 修改网站根目录及默认网页

6.1创建网站根目录

[root@db1 ~]# mkdir -p /www/html

6.2 编写测试网页

[root@db1 html]# echo "hello world" >test.html

6.3 修改server.xml默认发布页面

server.xml文件</Host>前添加如下内容

[root@db1 ~]# vim /usr/local/tomcat/conf/server.xml

<Context path="" docBase="/www/html" debug="0"/> 

6.4 添加测试网页

web.xml文件<welcome-file-list>后添加一行测试网页名即可

[root@db1 ~]# vim /usr/local/tomcat/conf/web.xml

<welcome-file-list>
    <welcome-file>test.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

6.5 重启tomcat服务

注意:tomcat服务不一定支持restart命令,可以先stop再start

[root@db1 ~]# systemctl restart tomcat

6.6 访问

此时,浏览器直接输入192.168.10.200:8080即可访问到我们的网页。

7 虚拟主机配置

7.1 添加主机

分别添加主机:www.webapps1.comwww.webapps2.com

[root@db1 ~]# vim /usr/local/tomcat/conf/server.xml
# 主机 www.webapps1.com
<Host name="www.webapps1.com"  appBase="webapps1"
			unpackWARs="true" autoDeploy="true">	   
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
		prefix="localhost_access_log" suffix=".txt"
		pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
# 主机 www.webapps2.com
<Host name="www.webapps2.com"  appBase="webapps2"
			unpackWARs="true" autoDeploy="true">	   
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
		prefix="localhost_access_log" suffix=".txt"
		pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

7.2 创建相关目录

[root@db1 ~]# mkdir -p /usr/local/tomcat/webapps1 
[root@db1 ~]# mkdir -p /usr/local/tomcat/webapps2

7.3 编写测试网页

[root@db1 ~]# echo "<h1>www.webapps1.com<h1>" >/usr/local/tomcat/webapps1/ROOT/index.html
[root@db1 ~]# echo "<h1>www.webapps1.com<h1>" >/usr/local/tomcat/webapps2/ROOT/index.html 

7.4 添加欢迎页index.html

[root@db1 ~]# vim /usr/local/tomcat/conf/web.xml
<welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>test.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

7.5 修改默认的8080端口

[root@db1 ~]# vim /usr/local/tomcat/conf/server.xml	

 <Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

7.6 添加hosts文件

[root@db1 ~]# vim /etc/hosts
192.168.10.200  www.webapps1.com
192.168.10.200  www.webapps2.com

7.7 重启tomcat服务

[root@db1 ~]# systemctl restart tomcat

7.8 测试访问

需要在虚拟机测试

7.8.1 虚拟机测试


7.8.2 真机测试

真机测试需先配置hosts文件



8 tomcat集群部署

8.1 jdk安装配置

8.1.1 上传jdk包并安装

[root@tomcat8888 ~]# ls /usr/local/jdk-8u251-linux-x64.rpm
/usr/local/jdk-8u251-linux-x64.rpm
[root@tomcat8888 ~]# rpm -ivh /usr/local/jdk-8u251-linux-x64.rpm

8.1.2 配置环境变量

[root@tomcat8888 ~]# vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_251-amd64                           #java家目录
export JAVA_BIN=/usr/java/jdk1.8.0_251-amd6/bin                        #java可执行文件目录
export PATH=${JAVA_HOME}/bin:$PATH                                      #修改系统环境变量
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar   #类路径

8.1.3 生效配置

[root@tomcat8888 ~]# source /etc/profile

8.2 集群tomcat8888部署

系统环境及IP:
IP地址:192.168.10.88
[root@tomcat8888 ~]# cat /etc/redhat-release
CentOS Linux release 7.0.1406 (Core)

8.2.1 修改配置

修改Server port端口为:8015;
修改Connector port端口为:8888
修改Connector protocol port端口为:8019

[root@tomcat8888 ~]# vim /usr/local/tomcat8888/conf/server.xml

<Server port="8015" shutdown="SHUTDOWN">

 <Connector port="8888" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
               
 <Connector protocol="AJP/1.3"
               address="::1"
               port="8019"
               redirectPort="8443" />            

8.2.2 修改index.jsp

便于访问网页识别,可以不修改

8.2.3 添加tomcat服务

[root@tomcat8888 ~]# cat /etc/init.d/tomcat
#!/bin/bash
# chkconfig:2345 96 14
# description:The Apache Tomcat server/JSP container
JAVA_OPTS='-server -Xms64m -Xmx128m'    # 设置最小和最大java heap内存大小
JAVA_HOME=/usr/java/jdk1.8.0_251-amd64  # jdk家目录
CATALINA_HOME=/usr/local/tomcat8888                     # 指定tomcat家目录
$CATALINA_HOME/bin/catalina.sh $*               # 指定启动或运行tomcat脚本`

[root@tomcat8888 ~]# chkconfig --add tomcat

8.2.4 赋予权限

[root@tomcat8888 ~]# chmod +x /etc/init.d/tomcat

8.2.5 防火墙放行端口

[root@tomcat8888 ~]# firewall-cmd --zone=public --add-port=8888/tcp --permanent
success
[root@tomcat8888 ~]# firewall-cmd --reload
success

8.3 集群tomcat9999配置

参考tomcat8888修改对应的参数即可

系统环境及IP:
IP地址:192.168.10.99
[root@tomcat8888 ~]# cat /etc/redhat-release
CentOS Linux release 7.0.1406 (Core)

8.3.1 修改配置

修改Server port端口为:8015;
修改Connector port端口为:8888
修改Connector protocol port端口为:8019

[root@tomcat8888 ~]# vim /usr/local/tomcat9999/conf/server.xml

<Server port="8025" shutdown="SHUTDOWN">

 <Connector port="9999" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
             
<Connector protocol="AJP/1.3"
               address="::1"
               port="8029"
               redirectPort="8443" />        

8.4 启动两台tomcat集群服务

[root@tomcat8888 ~]# systemctl start tomcat
[root@tomcat9999 ~]# systemctl start tomcat

8.5 分别验证两台tomcat集群服务


8.6 Nginx部署(略)

参考文档:https://blog.csdn.net/weixin_40720406/article/details/106439943
系统环境及IP:

IP地址:192.168.10.200
[root@nginx ~]# cat /etc/redhat-release
CentOS Linux release 7.0.1406 (Core)

8.6.1 配置Nginx

# 注意:以下参数需配置在server模块的外面,配置在server模块(即server{}外面)里面启动nginx服务器会报错
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf

upstream serverpool{
        server 192.168.10.88:8888;
        server 192.168.10.99:9999;
}
# 添加虚拟主机,监听端口:8000
server{
        listen          8000;
        server_name     localhost;
        location / {
			# 反向代理配置
            proxy_pass http://serverpool/;
        }
}

8.6.2 重启nginx服务

[root@nginx sbin]# cd /usr/local/nginx/sbin/
[root@nginx sbin]# ./nginx -s reload	# 重新加载配置文件
[root@nginx sbin]# ./nginx -s reopen	# 重启nginx服务

8.6.3 防火墙放行端口

[root@nginx ~]# firewall-cmd --zone=public --add-port=8000/tcp --permanent
success
[root@nginx ~]# firewall-cmd --reload
success

8.7 测试访问集群是否生效

浏览器输入:http://192.168.10.200:8000,观察发现每次输入地址访问分别在tomcat8888和tomcat9999轮询,即负载均衡。

8.8 Tomcat集群负载均衡策略

upstream模块默认是负载均衡策略,即每个请求会按照时间时间顺序逐一分配到不同的后端服务器,可以通过如下weight参数,根据服务器性能来进行权重配置,数值越大,表示服务器被分配的请求几率越大。

8.8.1 轮询

每个请求会按照时间时间顺序逐一分配到不同的后端服务器

upstream serverpool{
        server 192.168.10.88:8888;
        server 192.168.10.99:9999;

8.8.2 weight 权重

权重方式,在轮询策略的基础上指定轮询的的几率。weight的默认值为1,数值大小与访问比率成正比。此策略适合服务器的硬件配置差别比较大的情况。

upstream serverpool{
        server 192.168.10.88:8888 weight=2;
        server 192.168.10.99:9999 weight=1;

8.8.3 ip_hash

指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的求情一直发送到相同的服务器,以保证session绘画。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。

upstream serverpool{
		ip_hash;
        server 192.168.10.88:8888 weight=2;
        server 192.168.10.99:9999 weight=1;

参数说明

参数描述
fail_timeout与max_fails结合使用
max_fails在fail_timeout参数设置的时间内最大失败次数,如果在这个时间内,所有针对该服务器的请求都失败了,那么该服务器会被认为是停机了
fail_time服务器会被认为停机的时间长度,默认为10s
backup标记该服务器为备用服务器,当主服务器停止时,请求会被发送到备用服务器
down标记该服务器永久停机了

8.9 Session共享

在Tomcat集群中,通过负载均衡之后,用户第一次请求的tomcat和第二次请求的tomcat基本不是同一个,也就是session值不一样。Session共享问题有以下解决方案。

8.9.1 ip_hash策略

一个用户发起的请求,只会请求到某一台tomcat上进行操作,另一个用户发起的请求只在另外一台tomcat上进行操作。即同一个用户发起的请求,都会通过Nginx的ip_hash策略,将请求转发到其中的一台tomcat上。

8.9.2 Session复制

将用户访问的session信息,复制到每一台tomcat集群的机器,这样无论用户访问的是哪一台tomcat集群,都会有它的session。
优点: 实现简单,适合tomcat集群不多和用户不多的情况。
缺点: tomcat的集群多的情况下,只要session发生变化,就需要将所有的信息同步到所有的tomcat集群的机器,也就是tomcat集群越多,占用带宽越大。

# tomcat8888修改配置
[root@tomcat8888 ~]# vim /usr/local/tomcat8888/conf/server.xml
# tomcat9999修改配置
[root@tomcat9999 ~]# vim /usr/local/tomcat9999/conf/server.xml
# 该参数被注释掉,将注释删除即可
 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
 # 打开自己项目的web.xml(注意:这里不是指/usr/local/tomcat9999/conf/web.xml),添加 <distributable/>参数即可
[root@tomcat8888 ~]# vim /usr/local/tomcat8888/webapps/ROOT/WEB-INF/web.xml
[root@tomcat9999 ~]# vim /usr/local/tomcat9999/webapps/ROOT/WEB-INF/web.xml


8.9.3 重启tomcat服务

[root@tomcat8888 ~]# systemctl restart tomcat
[root@tomcat9999 ~]# systemctl restart tomcat
Tomcat 8.5.x版本升级变化 By jmatrix_ds | Published 2017 年 1 月 9 日 1. 其中一些重要变化(对HTTP2,SSL支持的改动较多) 不再提供对HTTP BIO,AJP BIO的支持; 重构HTTP upgrade与AJP实现,减少重复; 支持HPACK header encoding与decoding; 增加JSSE的SSL engine,同时支持ALPN; 支持HTTP/2 server push; 不再支持Comet; 对不合法的HTTP method名字直接拒绝并返回400; AJP连接处理异步请求时,确保请求处理完成再继续处理下一个请求; 提高对HTTP/2 stream reset的处理; 支持64K的HTTP/2 header table size; 可以限制每个request的cookie大小; 可以通过配置maxConcurrentStreamExecution限制HTTP/2单个连接的并发stream数量; 2. Connector变化 不再支持BIO,支持NIO。如果细究会发现Tomcat有两个NIO Connector,一个是Http11NioProtocol,另一个是Http11Nio2Protocol。 如果配置Connector不指定class name,而是指定协议。那么如果没有配置APR,Tomcat会使用Http11NioProtocol。 为什么不使用NIO2,一看感觉像是加强版的NIO一样??其实两个是不同的东西。NIO是reactor模式,平常说的基本是只这个,比如说典型的Netty便是NIO扩建。NIO2则不同,是preator模式,是async io。async io是指client端只需提交请求,由操作系统来负责在事件就绪后回调应用逻辑。事实上,目前只有Window在OS级别提供了对async io的支持,也即IOCP,在Linux还是要通过select、poll、epoll等来实现这个机制。 所以一般来说,不需要使用NIO2。当然,也可能有些场景就适合使用NIO2,不过目前来说很少。 3. 其它问题 cache尺寸不足 org.apache.catalina.webresources.Cache.getResource Unable to add the resource at [xxx] to the cache because there was insufficient free space available after evicting expired cache entries – consider increasing the maximum size of the cache Tomcat默认cache尺寸是10M。新版本中,当evict以后仍没有空间存放新的数据时,则打印WARN信息。当然,不影响应用。 解决方法见:http://stackoverflow.com/questions/26893297/tomcat-8-throwing-org-apache-catalina-webresources-cache-getresource-unable-to 尊重他人成果, 转载于http://www.jmatrix.org/day/1186.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值