zoukankan      html  css  js  c++  java
  • 配置Tomcat

    1 安装 Tomcat

      1.1 安装JDK

      1.2 安装Tomcat

    2 配置Tomcat

      2.1 配置Tomcat服务的访问端口

      2.2 虚拟主机

        2.2.1 server.xml文件的内容

        2.2.2 增加一个虚拟主机

    3 测试 Tomcat解析JSP

    4 Tomcat日志

    5 Tomcat连接MySQL

    配置Tomcat

    目前有很多网站使用Java编写的,所以解析Java程序就必须有相关的软件来完成,Tomcat就是其中一个。Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,有Apache、Sun和其他一些公司及个人共同开发而成。

    Tomcat技术先进、性能稳定而且免费,因而深受Java爱好者的喜爱,并得到部分软件开发商的认可,成为目前比较流行的Web应用服务。

    Tomcat是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试Java程序的首选。对于初学者来说,在一台机器上配置好Apache服务器之后,可利用它响应对HTML页面的访问请求。实际上,Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行Tomcat是,它是作为一个独立的进程运行的。

    1 安装 Tomcat

    Tomcat的安装分为安装JDK和安装Tomcat两个步骤。JDK(Java Development Kit)是Sun Microsystems针对Java开发的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK是整个Java的核心,它包括了Java运行环境、Java工具和Java基础的类库。所以想要运行Java程序必须要有JDK的支持,而安装Tomcat的前提也是安装好JDK。

    1.1 安装JDK

    官方下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    或:http://r.aminglinux.com

    需先下载再借助FTP服务上传到Linux

    # cd /usr/local/scr
    # tar zxvf jdk-8u101-linux-x64.tar.gz
    # mv jdk1.8.0_101 /usr/local/jdk1.8

    设置环境变量
    # vim /etc/profile //末尾输入
    JAVA_HOME=/usr/local/jdk1.8/
    JAVA_BIN=/usr/local/jdk1.8/bin
    JRE_HOME=/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 //检测是否正确
    java version "1.8.0_101"
    java(TM) SE Runtime Environment (build 1.8.0_101-b13)
    java HotSpot(TM) 64-Bit Server VM (build 25.101-b13,mixed mode)

    如果检测结果不一样,可能是系统调用了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,显示正常

    1.2 安装Tomcat

    官方网站:http://tomcat.apache.org

    或 当前下载的版本为Tomcat 8

    # cd /usr/local/scr/
    # wget http://apache.fayea.com/tomcat/tomcat-8/v8.5.13/bin/apache-tomcat-8.5.13.tar.gz
    # tar zxvf apache-tomcat-8.5.13.tar.gz
    # mv apache-tomcat-8.5.13 /usr/local/tomcat
    //二进制报,免去编译过程
    # /usr/local/tomcat/bin/startup.sh
    ...
    tomcat started.
    # ps aux |grep tomcat
    # netstat -lntp |grep java
    //正常会有8080端口、8005管理端口、8009第三方服务调用的端口,如httpd和Tomcat结合时会用到

    开机启动
    # echo "/usr/local/tomcat/bin/startup.sh" >> /etc/rc.d/rc.local
    # chmod a+x /etc/rc.d/rc.local //默认该文件没有x权限

    浏览器输入http://192.168.188.128:8080,看到Tomcat默认页面

    image-20201231160606769

    2 配置Tomcat

    2.1 配置Tomcat服务的访问端口

    Tomcat默认启动的端口是8080,在/usr/local/Tomcat/conf/server.xml文件修改。

    # vim /usr/local/Tomcat/conf/server.xml
    Connector port="80" protocol="HTTP/1.1"

    重启Tomcat
    # /usr/local/Tomcat/bin/shutdown.sh
    # /usr/local/Tomcat/bin/startup.sh

    Tomcat的关闭和启动需使用自带的脚本实现。

    再生产环境中,Tomcat使用8080端口,Nginx使用80端口。想访问Tomcat,需要使用Nginx代理。

    2.2 虚拟主机

    配置文件/usr/local/tomcat/conf/server.xml,其中<!--和-->之间的内容为注释掉的

    2.2.1 server.xml文件的内容

    内容(不好包含注释掉的):

    <?xml version="1.0" encoding="UTF-8"?>
    <Server port="8005" shutdown="SHUTDOWN">
    <Listener className="orgapache.catalina.startup.VersionLoggerListener" />
    <Listener className="orgapache.catalina.core.AprLifecycleListener" SSLEngine="on" />
    <Listener className="orgapache.catalina.core.JreMenoryLeakPreventionListener" />
    <Listener className="orgapache.catalina.mbeans.GloalResourcesLifecycleListener" />
    <Listener className="orgapache.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.MenoryUserDatabaseFactory"
    pathname="conf/tomcat-users.xml" />
    </GlobalNamingResources>
    <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
      connectionTimeout="20000"
      redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" 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>

    <Host></Host>之间的配置为虚拟主机配置部分,name定义域名,appBase定义应用的目录/usr/local/tomcat/webapps

    Java的应用通常是一个jar的压缩包,将jar的压缩包放到appBase目录下面。

    刚刚访问的Tomcat默认页在appBase目录下面,不过是在它子目录ROOT里:

    # ls /usr/local/tomcat/webapps/ROOT/
    ... tomcat.gif index.jsp
    #curl localhost:8080/tomcat.gif -I
    //200 ok

    在appBase(/usr/local/Tomcat/webapps)目录下有很多子目录,每一个子目录都可以被访问,可以把自定义的应用放到webapps目录里(假设应用名字为xxx,xxx为一个目录),可以通过http://ip/xxx/来访问这个应用。

    2.2.2 增加一个虚拟主机

    增加一个虚拟主机,并定义域名,编辑server.xml,在</Host>下一行插入新的<Host>,如下:

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

    其中多了一个docBase,这个参数用来定义网站的文件存在放的路径,如果不定义,默认是在/usr/local/tomcat/webapps/ROOT/下面的。

    定义了docBase就以该目录为主了,其中appBase和docBase可以一样。

    测试:

    # mkdir /data/tomcatweb
    # echo "Tomcat test page." > /data/tomcatweb/1.html

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

    # curl -x127.0.0.1:8080 www.123.cn/1.html
    Tomcat test page.

    3 测试 Tomcat解析JSP

    Tomcat主要用来解析JSP页面。创建一个JSP的测试页面:

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

    # curl -x127.0.0.1:8080 www.123.cn/111.jsp
    <html><body><center>
    Now time is: Mon Apr 03 12:59:13 CST 2017
    </center></body></html>

    浏览器测试需设置hosts文件

    4 Tomcat日志

    Tomcat的日志目录为/usr/local/tomcat/logs,主要有四大类日志:

    # cd /usr/local/tomcat/logs
    # ls
    catalina.2017-04-03.log catalina.out host-manager.2017-04-03.log localhost.2017-04-03.log localhost_access_log.2017-04-03.txt
    manager.2017-04-03.log WEB-INF

    catalina开头的日志为Tomcat的综合日志,他记录Tomcat服务相关信息,也会记录错误日志。

    catalina.2017-04-03.logcatalina.out内容相同,前者会每天生成一个新的日志。

    host-managermanager为管理相关的日志,其中host-manager为虚拟主机的管理日志。

    Localhostlocalhost_access为虚拟机相关日志,其中带access字样的日志为访问日志,不带access字样的为默认虚拟主机的错误日志。

     

    访问日志默认不会生成,需要在server.xml中配置一下。

    具体方法是在对应虚拟主机的<Host></Host>里面加入下面的配置(假如域名为123.cn):

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
      prefix="123.cn_access_log" suffix=".txt"
      pattern="%h %l %u %t &quot;%r&quot; %s %b" />

    prefix定义访问日志的前缀,suffix定义日志的后缀,pattern定义日志格式。

    新增加的虚拟主机默认并不会生成类似默认虚拟主机的那个“localhost.日期.log”日志,错误日志会统一记录到catalina.out中。关于Tomcat日志,最需要关注catalina.out,出现问题是应该首先查看。

    5 Tomcat连接MySQL

    Tomcat连接MySQL是通过自带的JDBC驱动实现,网上很多资料介绍需要下载mysql-connector-java-xxx.jar(xxx为版本号),并放到Tomcat的lib目录下面才可以

    经实验得出结论:无需做此步操作。

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

    # mysql -uroot -p'123456'
    mysql> create database java_test;
    mysql> use java_test;
    mysql> grant all on java_test.* to 'java'@'127.0.0.1' identified by 'aminglinux';
    mysql> create table aminglinux (`id` int(4), `name` char(40));
    mysql> insert into aminglinux values (1, 'abc');
    mysql> insert into aminglinux values (2, 'aaa');
    mysql> insert into aminglinux values (3, 'ccc');

    验证用户是否可用

    # mysql -ujava -paminglinux -h127.0.0.1
    mysql>

    配置Tomcat相关的配置文件

    /usr/local/tomcat/conf/context.xml

    # vim /usr/local/tomcat/conf/context.xml        //在</Context>上面增加以下内容
    <Resource name="jdbc/mytest"
    auth="Container"
    type="javax.sql.DataSource"
    maxActive="100" maxIdle="30" maxWait="10000"
    username="java" password="aminglinux"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://127.0.0.1:3306/java_test">
    </Resource>

    name定义jdbc/mytest,后面的mytest可以自定义,后面用到

    username为mysql的用户,password为密·码

    url定义MySQL的IP、端口、库名。

     

    另一配置文件:

    /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml

    # vim /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml    //在</web-app>上面增加
    <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>

     

    每一个应用(上文提到的webapps/ROOT、webapps/aming等)目录下都应该有一个WEB-INF目录,它里面都会有的配置文件,比如web.xml就是用来定义JDBC相关资源的,其中的res-ref-name和前面定义的Resource name保持一致

    既然选择了webapps/ROOT作为实验应用对象,就需要在ROOT目录下面创建测试JSP文件(用浏览器访问的文件):

    JSP脚本

    # vim /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 aminglinux";
    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();
    %>

    上面代码为JSP脚本,不会不用深究,知道是用于连接MySQL,并且查询一个库、表的数据即可。

    重启Tomcat
    # /usr/local/tomcat/bin/shutdown.sh
    # /usr/local/tomcat/bin/startup.sh

    浏览器访问http://192.168.188.128:8080/t.jsp,他会查询java_test库的aminglinux表,并列出具体数据,

    image-20210101131247471

    这和直接用MySQL命令行得到的结果是一致的:

    # mysql -ujava -paminglinux -h127.0.0.1 java_test -e "select * from aminglinux"
    id name
    1 abc
    2 aaa
    3 ccc

    出处:《跟阿铭学Linux》

    配置若有遗漏或错误,请评论留言。
  • 相关阅读:
    又过了一周
    本周学习情况
    5.12
    一周回顾
    npm修改全局包安装路径
    热力图之heatmap
    前端的发展历程
    idea打开maven项目没有别识别是maven项目
    nginx下部署vue项目
    WEB前端开发NodeJS
  • 原文地址:https://www.cnblogs.com/BrokenEaves/p/14426995.html
Copyright © 2011-2022 走看看