• 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文件里之后浏览网页就好使了

     就是这个包。

  • 相关阅读:
    深入理解JavaScript系列
    Knockout应用开发指南(完整版) 目录索引
    js原生设计模式——8单例模式之简约版属性样式方法库
    彻底理解JavaScript原型
    Javascript模块化编程(一):模块的写法
    使用Grunt构建自动化开发环境
    js原生之一个面向对象的应用
    js原生之函数
    angular源码分析:angular中的依赖注入式如何实现的
    js原生之scrollTop、offsetHeight和offsetTop等属性用法详解
  • 原文地址:https://www.cnblogs.com/daiqinghui/p/14118739.html
Copyright © 2020-2023  润新知