Tomcat安装与配置

安装JDK

上传JDK

# cd /usr/local/src/

# tar zxvf jdk-8u271-linux-x64.tar.gz

# mv jdk1.8.0_271/ /usr/local/jdk1.8

# vi /etc/profile

JAVA_HOME=/usr/local/jdk1.8/

JAVA_BIN=/usr/local/jdk1.8/bin

JRE_H0ME=/usr/local/jdk1.8/jre

PATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin

CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib/charsets.jar

# source /etc/profile //使其生效

# java -version //检测配置是否正确

如果显示不正常,可能是系统调用了rpm的openjdk。

# which java //检测

如果结果是/usr/bin>Java则说明这是rpm的JDK,而且执行java -version时会有openjdk字样。其实 我们也可以直接使用openjdk做后续实验,但为了和实验结果保持一致,需要做一个临时处理:

# mv /usr/bin/java /usr/bin/java_bak

# source /etc/profile

再次执行java -version,显示结果就正常了。

安装tomcat

上传包

# tar zxvf apache-tomcat-8.5.60.tar.gz 
# mv apache-tomcat-8.5.60 /usr/local/tomcat
# /usr/local/tomcat/bin/startup.sh     //因为是二进制包就免去了编译,启动toncat
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
查看是否启动
# ps aux |grep tomcat
# netstat -lnpt |grep java        //正常来说这里应该有三个端口,8080(提供web服务的端口)。8005(管理端口)8009(为第三方服务调用的端口)。

如果你这里没有8009端口那么不要慌,后面我会附上一个配置文件,将那个配置文件放在server.xml文件里就好了。

# echo "/usr/local/tomcat/bin/startup.sh" >> /etc/rc.d/rc.local /这里将启动命令加到这个文件里,使其可以开机启动。

# chmod a+x /etc/rc.d/rc.local

在登陆浏览也之前别忘记关闭防火墙

# setenforce 0

# systemctl stop firewalld

这里我们就成功安装Tomcat

------------------------

配置tomcat

配置tomcat的访问端口

tomcat的默认启动端口是8080,想要修改为80的话,就要修改它的配置文件

# vi /usr/local/tomcat/conf/server.xml
将<Connector port="8080" protocol="HTTP/1.1”修改为<Connector port="80" protocol="HTTP/1.1"
# /usr/local/tomcat/bin/shutdown.sh         //关闭服务
# /usr/local/tomcat/bin/startup.sh        //启动服务
//tomcat的关闭启动需要使用它自带的脚本,在正常的生产环境中tomcat使用的是8080端口,80端口是留给nginx的就是说正常访问tomcat是需要tomcat代理的。

tomcat的虚拟主机

tomcat的虚拟主机配置中<!-- --!>里面的都是注释,正常的内容(这里的内容复制到你的server.xml文件里面就会出现8009端口了):

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  <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" />
  </GlobalNamingResources>

  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector protocol="AJP/1.3"
               port="8009"
               redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
          <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps"
            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>
    </Engine>
  </Service>
</Server>

<Host></Host>之间为虚拟机主体的部分,name定义域名,appbase定义应用的目录,访问的tomcat默认页就是在appbase下面,在它的子目录ROOT中。

增加一个虚拟主机  //这是为测试准备的

<Host name="www.123.cn" appBase="/data/tomcatweb/"
      unpackWARs="false" autoDeploy="ture"
      xmlValidation="false" xmlNamespaceAware="false">
      <Context path="" docBase="/data/tomcatweb/" debug="0" reloadable="ture" crossContext="ture"/>
</Host>

docBase是定义一个存储位置的,如果不定义的话,默认是在appBase/ROOT目录下的。

创建目录和测试文档:

# mkdir -p /data/tomcatweb
# echo "tomcat test page." > /data/tomcatweb/1.html
重启tomcat
# /usr/local/tomcat/bin/shutdown.sh 
# /usr/local/tomcat/bin/startup.sh 
# curl -x127.0.0.1:80 www.123.cn/1.html        //访问一下刚才创建的html
tomcat test page.

测试tomcat解析JSP

先创建一个测试页面

# vi /data/tomcatweb/111.jsp
<html><body><center>
    Now time is : <%=new java.util.Date()%>
</center></body></html>

保存后进行curl

<html><body><center>
    Now time is : Wed Dec 09 03:09:30 CST 2020
</center></body></html>

同时也可以在本地电脑上配置hosts然后在浏览器上进行访问。

tomcat日志

tomcat的日志在/usr/local/tomcat/logs

tomcat的日志分为四大类,catalina开头的是综合日志,catalina.20....catalinaout的内容相同,前者会每天生成一个新的日志,host-managermanager是管理相关的日志,其中带access字样的日志为访问日志,不带access字样的为默认虚拟主机的错误日志,访问日志默认不会生成,需要在serverxml中进行配置:

# vi /usr/local/tomcat/conf/server.xml
             <Host name="localhost"  appBase="webapps"
            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>

tomcat连接MySQL

tomcat连接MySQL是通过自带的JDBC驱动实现的

首先配置mysql 创建实验用的库,表以及用户:

# mysql -uroot                //# /usr/local/mysql/bin/mysql -uroot 这里如果你没有安装mariadb就用绝对路劲进吧
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 2
Server version: 5.6.43 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 java_test;
Query OK, 1 row affected (0.00 sec)

mysql> use java_test
Database changed
mysql> grant all on java_test.* to 'java'@'127.0.0.1' identified by 'dailinux';
Query OK, 0 rows affected (0.00 sec)

mysql> create table dailinux (`id` int(4), `name` char(40));
Query OK, 0 rows affected (0.00 sec)

mysql> insert into dailinux values (1,'abc');
Query OK, 1 row affected (0.00 sec)

  sql> insert into dailinux values (2,'aaa'); 
Query OK, 1 row affected (0.00 sec)

mysql> insert into dailinux values (3,'ccc'); 
Query OK, 1 row affected (0.00 sec)

mysql> Ctrl-C -- exit!
Aborted

创建完表以及用户后退出mysql并验证用户是否可用:

[root@localhost ~]# mysql -ujava -pdailinux -h127.0.0.1
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MySQL connection id is 3
Server version: 5.6.43 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MySQL [(none)]> Ctrl-C -- exit!
Aborted

验证用户是否可用

# mysql -ujava -pdailinux -h127.0.0.1

正常进入说明没有问题,接下来去配置tomcat相关文件。在</Context>下添加

# vi /usr/local/tomcat/conf/context.xml
<Resource name="jdbc/mytest"
    auth="Container"
    type="javax.sql.DataSource"
    maxActive="100" maxIdle="30" maxwait="10000"
    username="java" password="dailinux"
    driverclassName=" com.mysql.jdbc.Driver"
    url="jdbc:mysql://127.0.0.1:3306/java_test">
</Resource>

//name定义为jdbc/mytest,这里的mytest可以自定义,后面还会用到它。usernamemysql用户,password为密码,url定义MySQLIP、端口以及库名,接下来还要修改另一个配置文件。

# vi /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml 
<resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/mytest</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>
//每一个应用下面都有一个WEB-INF目录,里面有对应的配置文件,web.xml
//用来定义JDBC相关资源的,res-ref-name和前面定义的resource name保
//持一样,还需要再ROOT目录下创建测试JSP文件。

# vi /usr/local/tomcat/webapps/ROOT/t.jsp


<%@page import="java.sql.*"%>


<%@page import="javax.sql.DataSource"%>


<%@page import="javax.naming.*"%>




<%


Context ctx = new InitialContext();


DataSource ds = (DataSource) ctx


.lookup("java:comp/env/jdbc/mytest");


Connection conn = ds.getConnection();


Statement state = conn.createStatement();


String sql = "select * from dailinux";


ResultSet rs = state.executeQuery(sql);




while (rs.next()) {


    out.println(rs.getString("id") +"<tr>");


    out.println(rs.getString("name") +"<tr><br>");


}




rs.close();


state.close();


conn.close();


%>


# /usr/local/tomcat/bin/shutdown.sh


# /usr/local/tomcat/bin/startup.sh 

 

使用浏览器查看

 这个时候如果显示的是404,就重新登陆tomcat界面就会发现那个界面也404,不要担心回过头重新检查配置文件,里面一定有错误,因为有的错误重启的时候不会进行提示,在浏览器上访问不了但是在本地虚拟机上却你够访问。

我在进行检查配置文件排错后浏览器访问变成了500显示配置文件错误,但是无任何错误,将哪一行打了一遍之后变成了解析jsp错误,应该是前面出错了,又重来了一边,将一个MySQL包下载上传到tomca/lib文件里之后浏览网页就好使了

 就是这个包。

原文地址:https://www.cnblogs.com/daiqinghui/p/14118739.html