就业班 第三阶段(tomcat) 2401--4.28 day1 tomcat1安装配置及单机多实例

企业 Tomcat 运维

文章目录

一、Tomcat 简介

Tomcat是Apache软件基金会(Apache Software Foundation)项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。

Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。

解析java代码: JAVA容器,WEB容器,WEB中间件:

shell 复制代码
Tomcat,JBOSS、resin、weblogic等   ---解析动态页面
Weblogic  ---收费。

其他web容器如:

shell 复制代码
Python-------->uwsgi 
php----------->php

======================================================================

Tomcat和Nginx、Apache(httpd)、Web服务器一样,具有处理HTML页面的功能不过Tomcat处理静态HTML的能力不如Nginx/Apache服务器。

一个tomcat默认并发是200(官方),可以修改,但实际用的时候也就200并发左右。

https端口:443

使用方案

建议使用Nginx和Tomcat配合,Nginx处理静态,Tomcat处理动态程序

方案三中后端Tomcat可以运行在单独的主机,也可以是同一台主机上的多实例

Tomcat官网: http://tomcat.apache.org

1、Tomcat好帮手---JDK

JDK是 Java 语言的软件开发工具包,JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

JDK下载面页:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

2、安装Tomcat & JDK

安装时候选择tomcat软件版本要与程序开发使用的版本一致。jdk版本要进行与tomcat保持一致。

1、系统环境说明
shell 复制代码
[root@java-tomcat1 ~]# getenforce 
Disabled 
[root@java-tomcat1 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)
2 、安装JDK
shell 复制代码
上传jdk1.8到服务器。安装jdk
[root@java-tomcat1 ~]# tar xzf jdk-8u191-linux-x64.tar.gz -C /usr/local/
[root@java-tomcat1 ~]# cd /usr/local/
[root@java-tomcat1 local]# mv jdk1.8.0_191/ java
设置环境变量:
[root@java-tomcat1 local]# vim /etc/profile.d/jdk.sh
    export JAVA_HOME=/usr/local/java   #指定java安装目录
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH    #用于指定java系统查找命令的路径
    export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar  #类的路径,在编译运行java程序时,如果有调用到其他类的时候,在classpath中寻找需要的类。
检测JDK是否安装成功:
[root@java-tomcat1 local]# source /etc/profile.d/jdk.sh
[root@java-tomcat1 local]# 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)
3、安装Tomcat
shell 复制代码
[root@java-tomcat1 ~]# mkdir /data/application -p
[root@java-tomcat1 ~]# cd /usr/src/
[root@java-tomcat1 src]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.98/bin/apache-tomcat-8.5.98.tar.gz
[root@java-tomcat1 src]# tar xzf apache-tomcat-8.5.49.tar.gz -C /data/application/
[root@java-tomcat1 src]# cd /data/application/
[root@java-tomcat1 application]# mv apache-tomcat-8.5.49/ tomcat
设置环境变量:
[root@java-tomcat1 application]# vim /etc/profile
export TOMCAT_HOME=/data/application/tomcat   #指定tomcat的安装目录
[root@java-tomcat1 application]# source  /etc/profile
查看tomcat是否安装成功:
[root@java-tomcat1 tomcat]# /data/application/tomcat/bin/version.sh
Using CATALINA_BASE:   /data/application/tomcat
Using CATALINA_HOME:   /data/application/tomcat
Using CATALINA_TMPDIR: /data/application/tomcat/temp
Using JRE_HOME:        /usr/local/jdk
Using CLASSPATH:       /data/application/tomcat/bin/bootstrap.jar:/data/application/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/8.5.49
Server built:   Nov 17 2019 18:45:30 UTC
Server number:  8.5.49.0
OS Name:        Linux
OS Version:     3.10.0-514.el7.x86_64
Architecture:   amd64
JVM Version:    1.8.0_211-b12
JVM Vendor:     Oracle Corporation

二、Tomcat目录介绍

1、tomcat主目录介绍
shell 复制代码
[root@java-tomcat1 ~]# cd /data/application/tomcat/
[root@java-tomcat1 tomcat]# yum install -y tree
[root@java-tomcat1 tomcat]# tree -L 1
.
├── bin     #存放tomcat的管理脚本
├── BUILDING.txt
├── conf    #tomcat的配置文件
├── CONTRIBUTING.md
├── lib     #web应用调用的jar包存放路径
├── LICENSE
├── logs    #tomcat日志存放目录,catalina.out日志为只要输出日志
├── NOTICE
├── README.md
├── RELEASE-NOTES
├── RUNNING.txt
├── temp    #存放临时文件
├── webapps #默认网站发布目录
└── work    #存放编译生产的.java与.class文件

7 directories, 7 files
2、webapps目录介绍
shell 复制代码
[root@java-tomcat1 tomcat]# cd webapps/
[root@java-tomcat1 webapps]# tree
.
├── docs  #tomcat的帮助文档
├── examples  #web应用实例
├── host-manager  #主机管理
├── manager    #管理
└── ROOT    #默认站点根目录

5 directories, 0 files
3、Tomcat配置介绍(conf)
shell 复制代码
[root@java-tomcat1 webapps]# cd ../conf/
[root@java-tomcat1 conf]# tree
.
├── Catalina
├── catalina.policy
├── catalina.properties
├── context.xml # Tomcat 公用的环境配置,tomcat 服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器。
├── logging.properties
├── logs
├── server.xml           # tomcat 主配置文件 tomcat的设置,可以设置端口号,添加虚拟机这些的,是对服务器的设置
├── server.xml.bak
├── server.xml.bak2
├── tomcat-users.xml    # tomcat 管理用户配置文件 Tomcat Manager是Tomcat自带的、用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用。Tomcat是Java领域使用最广泛的服务器之一,因此Tomcat Manager也成为了使用非常普遍的功能应用。Tomcat Manager的用户配置是在Tomcat安装目录/conf/tomcat-users.xml文件中进行管理的
├── tomcat-users.xsd
└── web.xml # Web应用程序描述文件,都是关于是Web应用程序的配置文件。所有Web应用的 web.xml 文件的父文件。

2 directories, 10 files
4、Tomcat的管理
shell 复制代码
启动程序 #/data/application/tomcat/bin/startup.sh  #启动
关闭程序 #/data/application/tomcat/bin/shutdown.sh #关闭

启动

shell 复制代码
[root@java-tomcat1 conf]# cd ../bin/
[root@java-tomcat1 bin]# ./startup.sh 
Using CATALINA_BASE:   /data/application/tomcat
Using CATALINA_HOME:   /data/application/tomcat
Using CATALINA_TMPDIR: /data/application/tomcat/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /data/application/tomcat/bin/bootstrap.jar:/data/application/tomcat/bin/tomcat-juli.jar
Tomcat started.

注意:tomcat未启动的情况下使用shutdown脚本,会有大量的输出信息。

检查tomcat是否启动正常

shell 复制代码
[root@java-tomcat1 bin]# netstat -lntp  |grep java
tcp6       0      0 :::8080         :::*                   LISTEN      30560/java
tcp6       0      0 127.0.0.1:8005          :::*          LISTEN      30560/java
tcp6       0      0 :::8009                 :::*           LISTEN      30560/java

端口:

8005:这个端口负责监听关闭Tomcat的请求 shutdown:向以上端口发送的关闭服务器的命令字符串。

8009: 与其他http服务通信接口。

8080: 建立http也就是客户端访问连接用。可以修改

启动完成浏览器进行访问

查看日志

shell 复制代码
[root@java-tomcat1 bin]# tail -f /data/application/tomcat/logs/catalina.out 
org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/data/application/tomcat/webapps/host-manager] has finished in [21] ms
04-Jul-2019 22:40:00.026 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/data/application/tomcat/webapps/manager]
04-Jul-2019 22:40:00.042 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/data/application/tomcat/webapps/manager] has finished in [16] ms
04-Jul-2019 22:40:00.048 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
04-Jul-2019 22:40:00.058 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
04-Jul-2019 22:40:00.062 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 479 ms

扩展:解决Tomcat启动慢的方法

shell 复制代码
Tomcat启动慢主要原因是生成随机数的时候卡住了,导致tomcat启动不了。
yum install rng-tools # 安装rngd服务(熵服务,增大熵池)
systemctl start rngd  # 启动服务
5、tomcat 配置管理页面(了解)
shell 复制代码
[root@tomcat ~]# vim /usr/local/tomcat/conf/tomcat-users.xml 
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="user" password="password" roles="tomcat,manager-gui,manager-script,admin-gui,admin-script"/>

[root@tomcat ~]# vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml 
[root@tomcat ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml 
# 内容均修改为如下图片,然后重启tomcat
6、server.xml配置文件
shell 复制代码
主配置文件 server.xml
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
  <!--
  port: 指定用于接受关闭命令的端口号
  shutdown: 指定关闭命令,可自定义,与启动脚本中的命令相对应
  -->

  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <!--
  Listener: 用于配置全局监听器,此处为使用APR库进行性能优化的监听器
  className: 监听器类的完全限定名
  SSLEngine: 指定是否启用SSL引擎
  -->

  <Listener className="org.apache.catalina.core.JasperListener" />
  <!--
  Listener: JSP引擎的监听器,用于编译和加载JSP页面
  className: 监听器类的完全限定名
  -->
  <GlobalNamingResources>
      <!--
      全局命名资源的配置部分,这里包含了一个可编辑的用户数据库的资源配置
      -->

      <Resource name="UserDatabase" auth="Container"
                type="org.apache.catalina.UserDatabase"
                description="User database that can be updated and saved"
                factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
                pathname="conf/tomcat-users.xml" />
      <!--
      Resource: 定义了一个资源
      name: 资源的名称,这里为"UserDatabase"
      auth: 认证方式,Container表示使用容器的身份验证
      type: 资源的类型,这里为"org.apache.catalina.UserDatabase"
      description: 资源的描述信息
      factory: 创建资源的工厂类的完全限定名
      pathname: 用户数据库文件的路径,这里为"conf/tomcat-users.xml"
      -->
  </GlobalNamingResources>


  <Service name="Catalina">
    <!--
    Service: Tomcat服务的配置
    name: 服务名称
    -->

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <!--
    Connector: 配置用于接受HTTP请求的连接器
    port: 监听的端口号
    protocol: 使用的协议
    connectionTimeout: 连接超时时间
    redirectPort: 重定向端口,用于HTTPS连接
    -->

    <!-- 其他连接器的配置 -->

    <Engine name="Catalina" defaultHost="localhost">
      <!--
      Engine: Web容器引擎的配置
      name: 引擎名称
      defaultHost: 默认的主机名
      -->

      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <!--
        Realm: 安全领域的配置
        className: 安全领域实现类的完全限定名
        -->

        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
        <!--
        嵌套的Realm配置,这里使用UserDatabaseRealm作为默认的安全领域
        resourceName: 资源名称,对应于conf/tomcat-users.xml文件中的UserDatabase
        -->

      </Realm>

      <Host name="localhost" appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <!--
        Host: 虚拟主机的配置
        name: 主机名
        appBase: Web应用程序的基础路径
        unpackWARs: 是否自动解压部署的WAR文件
        autoDeploy: 是否自动部署Web应用程序
        -->

        <!-- 其他虚拟主机的配置 -->

        <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" />
        <!--
        Valve: 用于记录访问日志
        className: 完全限定名
        directory: 日志存储的目录
        prefix: 日志文件名的前缀
        suffix: 日志文件名的后缀
        pattern: 日志格式
        -->

      </Host>

      <!-- 其他虚拟主机的配置 -->

    </Engine>
  </Service>
</Server>
7、Connector主要参数说明
shell 复制代码
port:指定服务器端要创建的端口号,并在这个端口监听来自客户端的请求。
protocol:连接器使用的协议,支持HTTP和AJP。AJP(Apache Jserv Protocol)专用于tomcat与apache建立通信的.
redirectPort:指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
maxThreads:接收最大请求的并发数
connectionTimeout  指定超时的时间数(以毫秒为单位)

host参数详解

shell 复制代码
host:表示一个虚拟主机
name:指定主机名
appBase:应用程序基本目录,即存放应用程序的目录.一般为appBase="webapps",相对于CATALINA_HOME而言的,也可以写绝对路径。
unpackWARs:如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序
autoDeploy:在tomcat启动时,是否自动部署

三、WEB站点部署

上线的代码有两种方式:

第一种方式是直接将程序目录放在webapps目录下面,这种方式大家已经明白了,就不多说了。

第二种方式是使用开发工具将程序打包成war包,然后上传到webapps目录下面。

1、使用war包部署web站点
shell 复制代码
[root@java-tomcat1 ~]# pwd
/root
下载jenkins的war包
[root@java-tomcat1 ~]# wget http://updates.jenkins-ci.org/download/war/2.129/jenkins.war
[root@java-tomcat1 ~]# ls
jenkins.war                
[root@java-tomcat1 ~]# cd /data/application/tomcat   #进入tomcat目录
[root@java-tomcat1 tomcat]# cp -r webapps/ /opt/    #将原来的发布网站目录备份
[root@java-tomcat1 tomcat]# cd webapps/
[root@java-tomcat1 webapps]# ls
docs  examples  host-manager  manager  ROOT
[root@java-tomcat1 webapps]# rm -rf *    #清空发布网站里面的内容
[root@java-tomcat1 webapps]# cp /root/jenkins.war .   #将war包拷贝到当前目录
[root@java-tomcat1 webapps]# ../bin/startup.sh   #启动
Using CATALINA_BASE:   /data/application/tomcat
Using CATALINA_HOME:   /data/application/tomcat
Using CATALINA_TMPDIR: /data/application/tomcat/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /data/application/tomcat/bin/bootstrap.jar:/data/application/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@java-tomcat1 webapps]# ls
jenkins  jenkins.war

二、手动解压:
[root@java-tomcat1 webapps]# ../bin/shutdown.sh   #关闭tomcat
[root@java-tomcat1 ~]# cd /data/application/tomcat/webapps/
[root@java-tomcat1 webapps]# rm -rf *    
[root@java-tomcat1 webapps]# mkdir ROOT      #创建一个ROOT目录存放war包
[root@java-tomcat1 webapps]# ls
ROOT
[root@java-tomcat1 webapps]# cd ROOT/
[root@java-tomcat1 ROOT]# cp /root/jenkins.war .
[root@java-tomcat1 ROOT]# unzip jenkins.war

浏览器访问:http://192.168.1.7:8080/jenkins

2、自定义默认网站目录

1、修改默认发布目录:

shell 复制代码
[root@java-tomcat1 ~]# mkdir /data/application/webapp  #创建发布目录
[root@java-tomcat1 ~]# vim /data/application/tomcat/conf/server.xml

将原来的

修改为

shell 复制代码
[root@java-tomcat1 ~]# cp /root/jenkins.war /data/application/webapp/
[root@java-tomcat1 ~]# /data/application/tomcat/bin/startup.sh
Using CATALINA_BASE:   /data/application/tomcat
Using CATALINA_HOME:   /data/application/tomcat
Using CATALINA_TMPDIR: /data/application/tomcat/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /data/application/tomcat/bin/bootstrap.jar:/data/application/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@java-tomcat1 ~]# ll /data/application/webapp/   #已经自动解压
jenkins/     jenkins.war
3、部署开源站点(jspgou商城)

第一个里程碑:安装配置数据库

shell 复制代码
[root@java-tomcat1 ~]# wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
[root@java-tomcat1 ~]# rpm -ivh mysql80-community-release-el7-3.noarch.rpm
[root@java-tomcat1 ~]# cd /etc/yum.repos.d/
[root@java-tomcat1 yum.repos.d]# vim mysql-community.repo
注意enabled中0表示关闭,1表示开启

修改如下

shell 复制代码
安装
[root@java-tomcat1 yum.repos.d]# yum -y install mysql-server mysql
[root@java-tomcat1 yum.repos.d]# cd
[root@java-tomcat1 ~]# systemctl start mysqld
[root@java-tomcat1 ~]# systemctl enable mysqld
查找密码并修改密码
[root@java-tomcat1 ~]# grep pass /var/log/mysqld.log   #过滤查找密码
2019-07-05T15:57:15.294365Z 1 [Note] A temporary password is generated for root@localhost: %6yx817IeX-J
[root@java-tomcat1 ~]# mysqladmin -u root -p'%6yx817IeX-J' password 'QianFeng@123' #修改密码

配置数据库

shell 复制代码
[root@java-tomcat1 ~]# mysql -u root -p'QianFeng@123'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.26 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database jspgou default charset=utf8;  #创建数据库设置字符集
Query OK, 1 row affected (0.00 sec)

mysql> \q
Bye

第二个里程碑:jspgou商城上线

shell 复制代码
上传jspgou商城的代码
[root@java-tomcat1 ~]# unzip jspgouV6.1-ROOT.zip
[root@java-tomcat1 ~]# cp -r ROOT/ /data/application/tomcat/webapps/
[root@java-tomcat1 ~]# cd /data/application/tomcat/webapps/
[root@java-tomcat1 webapps]# ls
ROOT
[root@java-tomcat1 webapps]# vim ROOT/WEB-INF/config/jdbc.properties

配置数据库连接----jdbc

shell 复制代码
将数据导入数据库:
[root@java-tomcat1 ~]# cd DB/
[root@java-tomcat1 DB]# ls
jspgou.sql
[root@java-tomcat1 DB]# mysql -uroot -p'QianFeng@123' -D jspgou < jspgou.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1067 (42000) at line 97: Unknown error 1067
[root@java-tomcat1 DB]# vim /etc/my.cnf    ----添加sql_mod
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUB
explicit_defaults_for_timestamp=1
[root@java-tomcat1 DB]# systemctl restart mysqld
[root@java-tomcat1 DB]# mysql -uroot -p'QianFeng@123' -D jspgou < jspgou.sql
启动tomcat访问:
[root@java-tomcat1 ~]# /data/application/tomcat/bin/startup.sh
[root@java-tomcat1 ~]# netstat -lntp

访问:http://192.168.1.7:8080/

四、Tomcat多实例配置

多实例(多进程):同一个程序启动多次,分为两种情况:

第一种:一台机器跑多个站点;

第二种:一个机器跑一个站点多个实例,配合负载均衡

1、复制程序文件
shell 复制代码
[root@java-tomcat1 ~]# cd /data/application/
[root@java-tomcat1 application]# ls
tomcat
[root@java-tomcat1 application]# cp -r tomcat/ tomcat_2
[root@java-tomcat1 application]# ls
tomcat  tomcat_2
修改端口,以启动多实例。多实例之间端口不能一致
[root@java-tomcat1 application]# sed -i 's#8005#8011#;s#8080#8081#' tomcat/conf/server.xml
[root@java-tomcat1 application]# sed -i 's#8005#8012#;s#8080#8082#' tomcat_2/conf/server.xml
[root@java-tomcat1 application]# sed -i 's#8009#8019#' tomcat/conf/server.xml
[root@java-tomcat1 application]# sed -i 's#8009#8029#' tomcat_2/conf/server.xml
[root@java-tomcat1 application]# diff tomcat/conf/server.xml tomcat_2/conf/server.xml  #对比文件不同之处
22c22
< <Server port="8011" shutdown="SHUTDOWN">
---
> <Server port="8012" shutdown="SHUTDOWN">
67c67
<          Define a non-SSL/TLS HTTP/1.1 Connector on port 8081
---
>          Define a non-SSL/TLS HTTP/1.1 Connector on port 8082
69c69
<     <Connector port="8081" protocol="HTTP/1.1"
---
>     <Connector port="8082" protocol="HTTP/1.1"
75c75
<                port="8081" protocol="HTTP/1.1"
---
>                port="8082" protocol="HTTP/1.1"
115,116c115,116
<     <!-- Define an AJP 1.3 Connector on port 8019 -->
<     <Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />
---
>     <!-- Define an AJP 1.3 Connector on port 8029 -->
>     <Connector port="8029" protocol="AJP/1.3" redirectPort="8443" />

启动tomcat多实例

shell 复制代码
[root@java-tomcat1 application]# cp -r /opt/webapps/ROOT/ tomcat/webapps/
[root@java-tomcat1 application]# cp -r /opt/webapps/ROOT/ tomcat_2/webapps/
[root@java-tomcat1 application]# echo 8081 >> tomcat/webapps/ROOT/index.jsp 
[root@java-tomcat1 application]# echo 8082 >> tomcat_2/webapps/ROOT/index.jsp
启动:
[root@java-tomcat1 application]# cd /data/application/tomcat_2/bin/
[root@java-tomcat1 bin]# vim start.sh
#!/bin/bash
#tomcat_2
export CATALINA_BASE="/data/application/tomcat_2"

case "$1" in

start)
    $CATALINA_BASE/bin/startup.sh
    ;;
stop)
    $CATALINA_BASE/bin/shutdown.sh
esac
[root@java-tomcat1 bin]# chmod +x start
#修改catalina.sh ---添加如下内容
[root@java-tomcat1 bin]# vim catalina.sh
CATALINA_HOME=/data/application/tomcat_2  #添加的环境变量注意修改
[root@java-tomcat1 bin]# cd /data/application/tomcat/bin/
[root@java-tomcat1 bin]# vim start.sh
#!/bin/bash
#tomcat
export CATALINA_BASE="/data/application/tomcat"

case "$1" in

start)
    $CATALINA_BASE/bin/startup.sh 
    ;;
stop)
    $CATALINA_BASE/bin/shutdown.sh
esac
[root@java-tomcat1 bin]# chmod +x start.sh
[root@java-tomcat1 bin]# vim catalina.sh
CATALINA_HOME=/data/application/tomcat
# 如果多实例部署使用JDK版本不同,修改catalina.sh再这里定义java
JAVA_HOME=
JRE_HOME=
shell 复制代码
启动:
[root@java-tomcat1 ~]# /data/application/tomcat/bin/start.sh start
[root@java-tomcat1 ~]# /data/application/tomcat_2/bin/start.sh start

检查端口查看是否启动:

shell 复制代码
[root@java-tomcat1 application]# netstat -lntp | grep java 
tcp6       0      0 127.0.0.1:8011          :::*                    LISTEN      1729/java           
tcp6       0      0 127.0.0.1:8012          :::*                    LISTEN      1783/java           
tcp6       0      0 :::8081                 :::*                    LISTEN      1729/java           
tcp6       0      0 :::8082                 :::*                    LISTEN      1783/java           
tcp6       0      0 :::8019                 :::*                    LISTEN      1729/java           
tcp6       0      0 :::8029                 :::*                    LISTEN      1783/java
2、在浏览器访问,进行测试

检查多实例的启动

http://192.168.50.114:8081/

http://192.168.50.114:8082/

五、tomcat反向代理集群

1、负载均衡器说明

关闭防火墙和selinux

shell 复制代码
yum安装nginx
[root@nginx-proxy ~]# cd /etc/yum.repos.d/
[root@nginx-proxy yum.repos.d]# vim nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
[root@nginx-proxy yum.repos.d]# yum install yum-utils -y
[root@nginx-proxy yum.repos.d]# yum install nginx -y
2、配置负载均衡器

备份原配置文件并修改

shell 复制代码
[root@nginx-proxy ~]# cd /etc/nginx/conf.d/
[root@nginx-proxy conf.d]# cp default.conf default.conf.bak
[root@nginx-proxy conf.d]# mv default.conf tomcat.conf
[root@nginx-proxy conf.d]# vim tomcat.conf
server {
    listen       80;
    server_name  localhost;
    access_log  /var/log/nginx/proxy.access.log  main;

    location / {
       proxy_pass http://testweb;
       proxy_set_header Host $host:$server_port;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }       
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    } 
}
创建upstream配置文件:
[root@nginx-proxy conf.d]# vim upstream.conf
upstream testweb {
	server 192.168.50.114:8081 weight=1 max_fails=1 fail_timeout=2s;
	server 192.168.50.114:8082 weight=1 max_fails=1 fail_timeout=2s;
}

启动nginx

shell 复制代码
[root@nginx-proxy ~]# systemctl start nginx
3、使用命令进行访问测试

使用curl 命令进行测试,tail进行关键字提取

复制代码
[root@nginx-proxy ~]# curl -s 192.168.50.118 | tail -1 
8082
[root@nginx-proxy ~]# curl -s 192.168.50.118 | tail -1 
8081
4、在浏览器上进行访问测试

http://192.168.50.118/

http://192.168.50.118/

补充

Tomcat

java:向下兼容

下载java可以搜索java密码共享,

安装

java

vim 进去之后出现很长,删除隐藏备份文件(.什么)

下载java后配置环境变量

Tomcat

windows的配置

不需要配置环境变量

在webapps

访问Root的话直接加端口就可以

8009 在server.xml注释掉了,用的人少

确保能访问的角色

在每一个里面允许访问

默认最大war包50M,修改

vim /usr/local/tomcat/webapps/manager/WEB-INF

上线项目:

jenkins的war包不能太新了

1 在浏览器点点点,在manager里面

2 在服务器的webapps里面,自动解压自动部署

账号密码:

admin

admin

配置文件

主配置文件

自动部署,自动解压

自定义默认网站目录

1、修改默认发布目录:

shell 复制代码
[root@java-tomcat1 ~]# mkdir /data/application/webapp  #创建发布目录
[root@java-tomcat1 ~]# vim /data/application/tomcat/conf/server.xml

将原来的

修改为

apt注释掉了,用得少

配置数据库连接:jsp包

下载数据库

启动并修改密码

上传包jsp并解压

db ROOT 必读.txt

把数据库文件导入会报错:

查看错误是锁定在jdbc

修改

配置数据库密码连接,添加密码即可

vim /etc/my.cnf 为了兼容之前版本

sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUB

explicit_defaults_for_timestamp=1

单机多实例

nginx

在一台服务器里面生成三个实例,

分别修改里面的两个端口,不能冲突,启动多实例,确保分别成功

然后配负载均衡,下载nginx,(LTS),修改配置文件(子配置文件或者主配置文件都行,端口号不能冲突)

然后在浏览器进行访问。

相关推荐
新加坡内哥谈技术27 分钟前
Meta计划借助AI实现广告创作全自动化
运维·人工智能·自动化
snetlogon2031 分钟前
JDK17 Http Request 异步处理 源码刨析
android·网络协议·http
zyjyyds11334 分钟前
win11系统 Docker Desktop 突然提示Docker Engine stopped解决情况之一
运维·docker·容器
Altairr35 分钟前
Docker基础(一)
运维·docker·容器·eureka
文牧之1 小时前
PostgreSQL 的扩展pageinspect
运维·数据库·postgresql
小兔子酱#1 小时前
【Docker 01】Docker 简介
运维·docker·容器
jugt3 小时前
CentOS 7.9安装Nginx1.24.0时报 checking for LuaJIT 2.x ... not found
linux·运维·centos
秋水丶秋水4 小时前
SSL安全证书怎么安装?
网络协议·http·https
hunter1274 小时前
Nginx 事件驱动理解
nginx
21号 15 小时前
9.进程间通信
linux·运维·服务器