目录
一、环境准备
二、tomcat1和tomcat2服务器,安装配置tomcat
1.tomcat服务器介绍
2.JDK软件介绍
3.查看JDK是否安装
4.tomcat1和tomcat2服务器,安装JDK1.8.0_191(JDK必须和nginx版本相适应,不然一直报错)
5.安装并启动apache-tomcat-8.5.16
6.关闭tomcat
7.tomcat配置目录及文件说明
三、自定义默认网站目录
1、首先在跟目录下建立一个web目录,并在里面建立一个webapp目录,用于存放网站文件
2、在webapp目录下建立一个index.jsp的测试页面
3、修改Tomcat的server.xml文件
四、nginx+tomcat负载均衡集群(cluster)
1.正向代理和反向代理
2.nginx服务器配置(192.168.1.12)
3.配置nginx.conf
4.测试轮询
5.Nginx负载均衡算法
五、tomcat数据库连接
1.下载模拟项目
2.在192.168.1.135(mysql)上安装mysql
六、部署开源站点jpress
1.配置数据库
2.jpress站点上线
一、环境准备
准备3台服务器
192.168.1.12(nginx)
192.168.1.133(tomcat1)
192.168.1.134(tomcat2)
192.168.1.135(mysql)
关闭防火墙
[root@nginx ~] systemctl stop firewalld
[root@nginx ~] setenforce 0
[root@nginx ~] iptables -F
二、tomcat1和tomcat2服务器,安装配置tomcat
1.tomcat服务器介绍
Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,应用在中小型系统和并发访问用户不是很多的场合,是开发和调试JSP页面的首选,Tomcat也可处理静态的HTML页面但是能力不及Apache或Nginx,所以Tomcat通常作为一个servlet和JSP容器,单独运行在后端。
2.JDK软件介绍
在安装Tomcat之前必须先安装JDK,JDK全称是Java Development Kit,是SUN公司免费提供的java语言的软件开发工具包,其中包含Java虚拟机(JVM),编写好的java源程序经过编译可生产java字节码,只要安装了JDK,就可以利用JVM解释这些字节码文件,从而保证了Java的跨平台性。JDK中还包括完整的JRE(Java Runtime Environment),Java运行环境,也被称为private runtime。
3.查看JDK是否安装
[root@tomcat1 ~] java -version
bash: java: 未找到命令
#如果有:rm -rf /usr/bin/java 卸载
4.tomcat1和tomcat2服务器,安装JDK1.8.0_191(JDK必须和nginx版本相适应,不然一直报错)
[root@tomcat1 ~] tar xf jdk-8u191-linux-x64.tar.gz
[root@tomcat1 ~] mv jdk1.8.0_191/ /usr/local/java
[root@tomcat1 ~] vim /etc/profile
#最下面插入
export JAVA_HOME=/usr/local/java #设置java目录
export PATH=$PATH:$JAVA_HOME/bin #在PATH环境变量中添加java根目录的bin子目录
[root@tomcat1 ~] source /etc/profile
[root@tomcat1 ~] java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
5.安装并启动apache-tomcat-8.5.16
[root@tomcat1 ~] tar xf apache-tomcat-8.5.16.tar.gz
[root@tomcat1 ~] mv apache-tomcat-8.5.16 /usr/local/tomcat8
[root@tomcat1 ~] /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.
6.关闭tomcat
[root@tomcat1 ~] /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
7.tomcat配置目录及文件说明
[root@tomcat1 ~] ll /usr/local/tomcat8/
总用量 92
drwxr-x---. 2 root root 4096 7月 5 18:29 bin
drwx------. 3 root root 254 7月 5 18:30 conf
drwxr-x---. 2 root root 4096 7月 5 18:29 lib
-rw-r-----. 1 root root 57092 6月 22 2017 LICENSE
drwxr-x---. 2 root root 197 7月 5 18:30 logs
-rw-r-----. 1 root root 1723 6月 22 2017 NOTICE
-rw-r-----. 1 root root 7064 6月 22 2017 RELEASE-NOTES
-rw-r-----. 1 root root 15946 6月 22 2017 RUNNING.txt
drwxr-x---. 2 root root 30 7月 5 18:29 temp
drwxr-x---. 7 root root 81 6月 22 2017 webapps
drwxr-x---. 3 root root 22 7月 5 18:30 work
bin //存放windows或linux平台上启动或关闭的Tomcat的脚本文件
conf //存放Tomcat的各种全局配置文件,其中最主要的是server.xml和web.xml
lib //存放Tomcat运行需要的库文件(JARS)
logs //存放Tomcat执行时的LOG文件
webapps //Tomcat的主要Web发布目录、类似于nginx的html(包括应用程实例)
work //存放jsp编译后产生的.class文件
temp //存放临时文件
三、自定义默认网站目录
1、首先在跟目录下建立一个web目录,并在里面建立一个webapp目录,用于存放网站文件
[root@tomcat1 ~] mkdir -pv /web/webapp
mkdir: 已创建目录 "/web"
mkdir: 已创建目录 "/web/webapp"
2、在webapp目录下建立一个index.jsp的测试页面
[root@tomcat1 ~] vim /web/webapp/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test page</title>
</head>
<body>
<% out.println("Welcome to test site,http://www.test2.com");%>
</body>
</html>
~
3、修改Tomcat的server.xml文件
定义一个虚拟主机,并将网站文件路径指向已经建立的/web/webapp,在host段增加context段
#{,.-$(date +%F)}时间戳
[root@tomcat1 ~] cp /usr/local/tomcat8/conf/server.xml{,.-$(date +%F)} #虚拟主机
[root@tomcat1 ~] ll /usr/local/tomcat8/conf/server.xml
server.xml server.xml.- server.xml.-2023-07-05 #备份
[root@tomcat1 ~] vim /usr/local/tomcat8/conf/server.xml
<Host name="localhost" appBase="webapps"
149 unpackWARs="true" autoDeploy="true">
150
#指向/web/webapp
151 <Context docBase="/web/webapp" path="" reloadable="flase" >
152 </Context>
四、nginx+tomcat负载均衡集群(cluster)
1.正向代理和反向代理
正向代理:VPN就是正向代理作用,连上VPN通过VPN访问目标服务器。
反向代理:客户端访问反向代理服务器,反向代理服务器选择目标服务器获取数据后返回给客户端,客户端不需要任何配置,反向代理服务器就代替了目标服务器。
2.nginx服务器配置(192.168.1.12)
[root@nginx ~] yum -y install pcre-devel zlib-devel openssl-devel lrzsz
[root@nginx ~] tar xf nginx-1.16.0.tar.gz -C /usr/src/
[root@nginx ~] cd /usr/src/nginx-1.16.0/
[root@nginx nginx-1.16.0] yum -y install gcc gcc-c++
[root@nginx nginx-1.16.0] ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module && make && make install
--prefix=/usr/local/nginx //指定安装目录
--user=nginx --group=nginx //指定运行的用户和组
--with-file-aio //启用文件修改支持
--with-http_stub_status_module //启用状态统计
--with-http_ssl_module //启用ssl模块
--with-http_flv_module //启用flv模块,提供寻求内存使用基于时间的偏移量文件
--with-http_gzip_static_module //启用gzip静态压缩
3.配置nginx.conf
[root@nginx nginx-1.16.0] vim /usr/local/nginx/conf/nginx.conf
user nginx;
worker_processes 1;
#keepalive_timeout 0;
keepalive_timeout 65;
upstream tomcat {
server 192.168.1.133:8080 weight=1;
server 192.168.1.134:8080 weight=1;
}
location / {
root html;
index index.html index.htm;
}
location ~ \.jsp$ {
proxy_pass http://tomcat;
}
[root@nginx nginx-1.16.0] /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
[root@nginx nginx-1.16.0] /usr/local/nginx/sbin/nginx
[root@nginx nginx-1.16.0] netstat -anptl|grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 11644/nginx: master
[root@nginx nginx-1.16.0] ps aux |grep nginx |grep -v grep
root 11644 0.0 0.0 45980 1156 ? Ss 20:11 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 11645 0.0 0.1 46368 1908 ? S 20:11 0:00 nginx: worker process
4.测试轮询
5.Nginx负载均衡算法
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台服务器死机,自动剔除故障系统,使用户访问不受影响。
upstream tomcat_server {
server 192.168.200.112:8080 weight=1;
server 192.168.200.113:8080 weight=1;
weight(轮询权值)
weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下。或者仅仅为在主从的情况下设置不同的权值,达到合理有效的地利用主机资源。
upstream tomcat_server {
server 192.168.200.112:8080 weight=1;
server 192.168.200.113:8080 weight=2;
2、least_conn
least-connected方式可以更公平的将负载分配到多个机器上面。使用least-connected,nginx不会将请求分发到繁忙的机器上面,而且将新的请求分发的较清闲的机器上面。
upstream tomcat_server {
least_conn;
server 192.168.200.112:8080 weight=1;
server 192.168.200.113:8080 weight=1;
3、ip_hash
每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的session共享问题。
upstream tomcat_server {
ip_hash;
server 192.168.200.112:8080 weight=1;
server 192.168.200.113:8080 weight=1;
4、fair
比 weight、ip_hash更加智能的负载均衡算法,fair算法可以根据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身不支持fair,如果需要这种调度算法,则必须安装upstream_fair模块。
upstream tomcat_server {
fair;
server 192.168.200.112:8080 weight=1;
server 192.168.200.113:8080 weight=1;
5、url_hash
按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身不支持url_hash,如果需要这种调度算法,则必须安装Nginx的hash软件包。
upstream tomcat_server {
hash $request_uri;
hash_method crc32;
server 192.168.200.112:8080;
server 192.168.200.113:8080;
五、tomcat数据库连接
1.下载模拟项目
[root@tomcat1 ~] rz -E
rz waiting to receive.
[root@tomcat1 ~] tar xf SLSaleSystem.tar.gz -C /web/webapp/
[root@tomcat1 ~] ls /web/webapp/SLSaleSystem/
logs META-INF statics WEB-INF
[root@tomcat1 ~] vim /usr/local/tomcat8/conf/server.xml
<Context docBase="/web/webapp/SLSaleSystem" path="" reloadable="flase" >
151 </Context>
[root@tomcat1 ~] /usr/local/tomcat8/bin/shutdown.sh
[root@tomcat1 ~] /usr/local/tomcat8/bin/startup.sh
2.在192.168.1.135(mysql)上安装mysql
[root@mysql ~] yum -y install mariadb-server mariadb
[root@mysql ~] systemctl start mariadb.service
[root@mysql ~] mysql
MariaDB [(none)]> create database slsaledb;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all on slsaledb.*to admin@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
[root@tomcat1 ~] vim /web/webapp/SLSaleSystem/WEB-INF/classes/jdbc.properties
url=jdbc\:mysql\://192.168.1.135\:3306/slsaledb?useUnicode\=true&characterEncoding\=UTF-8
uname=admin
[root@tomcat1 ~] /usr/local/tomcat8/bin/shutdown.sh
[root@tomcat1 ~] /usr/local/tomcat8/bin/startup.sh
# 账号:admin 密码:123456
六、部署开源站点jpress
1.配置数据库
[root@mysql ~] mysql
MariaDB [(none)]> create database jpress DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all on jpress.* to jpress@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
2.jpress站点上线
[root@tomcat1 ~] ll #下载jpress站点文件
-rw-r--r--. 1 root root 20764271 9月 19 2016 jpress-web-newest.war
[root@tomcat1 ~] vim /usr/local/tomcat8/conf/server.xml #注释一下两行
# <Context docBase="/web/webapp/SLSaleSystem" path="" reloadable="flase" >
# </Context>
[root@tomcat1 ~] mv jpress-web-newest.war /usr/local/tomcat8/webapps/
[root@tomcat1 ~] ls /usr/local/tomcat8/webapps/
docs examples host-manager jpress-web-newest jpress-web-newest.war manager ROOT
#webapps/ 里面的.war文件会自动解压 jpress-web-newest
[root@tomcat1 ~] /usr/local/tomcat8/bin/shutdown.sh
[root@tomcat1 ~] /usr/local/tomcat8/bin/startup.sh