文章目录
系统环境
[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.com
和www.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 "%r" %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 "%r" %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