• Tomcat


    一.安装Tomcat

    1.环境准备

    关闭防火墙并设置开机不自启,配置 SElinux 规则:
    systemctl stop firewalld.service
    systemctl disable firewalld.service
    hostnamectl set-hostname tomcat
    // 使用 hostnamectl 命令修改主机名,修改完后 Ctrl+D 退出后重新连接

    2.安装JDK

    cd  /usr/local/src 
    tar -zxvf  ~
    mv  ~  /usr/local/jdk1.8
     ls  /usr/local/

    设置环境变量:

    vi  /etc/profile    //在末尾输入以下内容

    JAVA_HOME=/usr/local/jdk1.8/
    JAVA_BIN=/usr/local/jdk1.8/bin
    JAVA_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

    注意:根据自己的安装路径修改(第一次需要加/src,之后没加过)

    保存文件后,使其生效:source  /etc/profile

    检测设置是否正确:java -version

    如果显示如下内容,说明配置正确:

     

    which java(如果结果为/usr/bin/java说明是rpmJDK,并且执行java -version时会有openjdk字样。若和书上保持一致,则做临时处理:mv  /usr/bin/java  /usr/bin/java_bak    source  /etc/profile,再执行java -version结果就和书上一样)

     3.安装Tomcat

    tar -zxvf  ~
    mv  apache-tomcat-8.5.60  /usr/local/tomcat
    启动Tomcat:/usr/local/tomcat/bin/startup.sh

    查看是否启动成功:ps aux |grep tomcat  //看是否有java相关进程,也可以查看监听端口
                   netstat  -lntp |grep  java    //正常会有三个端口8009,8005,8080,其中8080为提供web服务的端口,8005为管理端口,8009 端口为第三方服务调用的端口比如httpd和Tomcat结合时会用到

     

    若想开机,需要把启动命令放到/etc/rc.d/rc.local文件里:

    echo  “/usr/local/tomcat/bin/startup.sh” >> /etc/rc.d/rc.local
    chmod a+x /etc/rc.d/rc.local   //默认该文件没有x权限,加一下
    (输入http://192.168.134.130:8080/)

    二.配置Tomcat

    1.配置Tomcat服务的访问端口

    Tomcat默认端口是8080,若想把端口改成80需要修改server.xml文件。
    vi  /usr/local/tomcat/conf/server.xml   
    //找到Connector port
    =”8080” protocol=”HTTP/1.1
    修改为<Connector port=”80” protocol=”HTTP/1.1”。 保存文件后重启Tomcat: /usr/local/tomcat/bin/shutdown.sh /usr/local/tomcat/bin/startup.sh tomcat的关闭和开启需要使用它的自带脚本

    修改后测试:netstat -plnt | grep java

     Nginx 的默认端口也是 80,跟Tomcat 端口发生冲
     突。所以上面操作不出现80端口,我们需要关闭 Nginx 服务,重新启动 Tomcat  服务。
    service nginx stop
    /usr/local/tomcat/bin/shutdown.sh
    /usr/local/tomcat/bin/startup.sh 
    netstat -plnt | grep java

    浏览器访问:

    http://192.168.134.130/(注意你的 IP)

    2.Tomcat的虚拟主机

    先看它的配置文件/usr/local/tomcat/conf/server.xml

     

     

     

     

    其中<!---->之间的内容为注释掉的,可忽略。剩下内容:

    <?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 "%r" %s %b" />
          </Host>
        </Engine>
      </Service>
    </Server>

    其中,<Host></Host>之间的配置就是虚拟主机部分,name定义域名。appBase定义应用的目录。Java的应用通常是一个jar压缩包,将jar压缩包放到appBase目录下即可。

     

    Index.jsp就是默认的Tomcat页面

    curl localhost:8080/tomcat.svg  -I
    

    在增加一个虚拟主机,并定义域名:

    vi  /usr/local/tomcat/conf/server.xml

    <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"/>  //docBase是定义网站文件存放路径的,若不定义则默认为在appBase/ROOT下
    </Host>
    创建目录和测试文件并测试:
    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:8080 www.123.cn/1.html

    3. appBase 部署 Java 应用 

    下面我们通过部署个 Java 的应用来体会 appBase docBase 目录的区别。

    为了方便测试,下载一个 zrlog(Java 写的 blog 站点应用,轻量),zrlog

    际就是一个 war 包。

    (下载地址:http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war

    先暂时将 zrlog war 包下载到/usr/local/src 目录下

    wget  http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war (yum -y install wget)
    ls |grep zrlog 
    zrlog-1.7.1-baaecb9-release.war 

    appBase 支持自动解压,所以直接将 war 包拷贝到/usr/local/tomcat/webapps/

    目录下:

    cp zrlog-1.7.1-baaecb9-release.war   /usr/local/tomcat/webapps/
    ls /usr/local/tomcat/webapps/ 
    // 将 war 包拷贝到/usr/local/tomcat/webapps/目录下之后,包会自动解压。(前 
    提是 tomcat 正常启动。 )

    重命名 war 包的文件名: 
    cd /usr/local/tomcat/webapps/ 
    mv zrlog-1.7.1-baaecb9-release zrlog 
    ls 

    // 一但重命名或删除 war 包解压后的包的文件时,war 包就会在解压出一个

    文件夹。

    用浏览器访问 http://192. 168.134.130/zrlog(注意你的 IP)

    出现安装向导,这是一个配置数据库的过程。登入数据库,在数据库中创建一个 zrlog 数据库和 zrlog 用户。

    /usr/local/mysql/bin/mysql 
    mysql> create database zrlog;   //创建 zrlog 数据库 
    mysql> grant all on zrlog.* to 'zrlog'@127.0.0.1 identified by '000000'; //创建 zrlog 用户 
    mysql>exit 
    Byebye  //退出数据库

    检查创建用户是否可以登陆数据库,使用 zrlog 用户登录

    /usr/local/mysql/bin/mysql -u zrlog -h 127.0.0.1 -p 
    mysql> show databases; 
    //检查已有数据库
    +--------------------+ 
    | Database |+--------------------+ 
    | information_schema | 
    | test | 
    | zrlog | 
    +--------------------+ 
    3 rows in set (0.00 sec) 
    mysql> exit 
    Byebye

    检查完成,zrlog 用户登录成功。使用 zrlog 用户信息填写刚才在浏览器中打

    开的网页,Email 填写自己的邮箱,本次是实验,填写内容为自定义邮箱

    (tomcat@163.com),单击“下一步”按钮

    设置管理员账号(admin)和管理员密码(123456),网站标题和子标题按

    需填写,本次自定义内容(网站标题:“测试”,网站子标题:“linux”)

    填写完成后,单击“下一步”按钮,可以看到安装完成的界面。

    单击“点击查看”按钮,我们就可以进入搭建好的 zrlog 页面了

     

    我们也可以进入管理页面,写一些文章,单击上图主菜单栏中的“管理”按

    输入安装向导里已经设置好的账户名和密码(admin:123456),单击“登

    ”按钮,登录成功页面,如图所示:

     

    单击“文章撰写”栏目,写上自己想写的内容,然后保存

    4. ocBase 部署 Java 应用

    查看虚拟主机 docBase 的路径,结果如下:

    vi /usr/local/tomcat/conf/server.xml 

    <Host name="www.123.cn" appBase="" 
    unpackWARs="true" autoDeploy="true" 
    xmlValidation="false" xmlNamespaceAware="false"> 
    <Context path="" docBase="/data/wwwroot/123.cn/" debug="0" 
    reloadable="true" crossContext="true"/> 
    </Host> 
    //docBase 定义的目录为:/data/wwwroot/123.cn 

    创建 docBase 目录:

    mkdir -p /data/wwwroot/123.cn/

    将/usr/local/tomcat/webapps/zrlog 中的所有文件移动到/data/wwwroot/123.cn/

    目录下:

    mv /usr/local/tomcat/webapps/zrlog/* 
    /data/wwwroot/123.cn/ 

    接下来在 Windows 下绑定 hosts 文件

    hosts 文件路径:C:WindowsSystem32driversetc

    在文件下面添加

    192.168.134.130  www.123.cn

    测试

    打开命令提示符(CMD),用 ping 命令 ping www.123.cn IP 是否为虚拟

    IP,如果是的话,现在就可以访问了。

    接下来就用域名去访问 zrlog 页面,由于之前配置完虚拟主机后,并没有重

    启服务,这里要重启一下服务。

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

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

    三.测试Tomcat解析JSP

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

    vi /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

    四.Tomcat日志

    Tomcat的日志目录时/usr/local/tomcat/logs。主要四大日志为:

     

    其中catalina开头的日志为Tomcat的综合日志,他记录Tomcat服务相关信息,也会记录错误日志。其中,catalina.2020-10-23.logcatalina.out内容相同,前者会每天生成一个新的日志。host-managermanager为管理相关的日志,其中host-manager为虚拟主机的管理日志。Localhostlocalhost_access为虚拟主机相关日志。其中带access字样的日志为访问日志,不带access字样的为默认虚拟主机的错误日志。访问日志默认不会生成,需要在server.xml中配置。在对应虚拟主机的<Host></Host>里加入下面配置:

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

    valve 为日志文件配置;prefix定义访问日志得前缀。suffix定义日志后缀,pattern 定义日志格式。错误日志在catalina.out

    配置完成后,重启 Tomcat 服务

    重启 Tomcat 服务完成后,访问网站,查看/usr/local/tomcat/logs 目录下是否

    有日志生成,并且查看生成的日志信息,命令如下:

    ls /usr/local/tomcat/logs/

    cat /usr/local/tomcat/logs/123_access_log.2020-03-29.txt 

    五.Tomcat链接MySQL

    配置MySQL创建试验用的库,表以及用户:
     mysql  -uroot  -p'000000'出现错误alias mysql=/usr/local/mysql/bin/mysql)
    修改密码set password for root@localhost=password('000000');
    mysql>create database java_test;  //创建数据库名
    mysql> use java_test;
    mysql> grant all on java_test.* to 'java'@'127.0.0.1' identified by 'sxt';   //创建用户
    mysql> create table sxt (`id` int(4), `name` char(40));
    mysql> insert into sxt values (1,'abc');
    mysql> insert into sxt values (2,'aaa');
    mysql> insert into sxt values (3,'ccc');
    若想加入中文,则mysql > CREATE DATABASE IF NOT EXISTS test_db_char
                           -> DEFAULT CHARACTER SET utf8
                           -> DEFAULT COLLATE utf8_general_ci;
    创建完表以及用户后,退出mysql,验证用户是否可用:
    mysql  -ujava  -psxt  -h127.0.0.1

    正常进入mysql,说明刚创建的java用户没问题。配置Tomcat相关的配置文件:

    vi  /usr/local/tomcat/conf/context.xml    // </Context>上面

    <Resource name="jdbc/mytest"     //name:表示以后要查找的名称。通过此名称可以找到DataSource,此名称任意更换,但是程序中最终要查找的就是此名称
    auth="Container"       //auth:由容器进行授权及管理,指的用户名和密码是否可以在容器上生效
    type="javax.sql.DataSource"           //type:此名称所代表的类型
    maxActive="100" maxTdle="30" maxWait="10000"     //maxActive:表示一个数据库在此服务器上所能打开的最大连接数. maxWait:最大等待时间. maxIdle:表示一个数据库在此服务器上维持的最小连接数
    username="java" password="sxt"     //username:数据库连接的用户名password:数据库连接的密码
    driverClassName="com.mysql.jdbc.Driver"   //driverClassName:数据库连接的驱动程序
    url="jdbc:mysql://127.0.0.1:3306/java_test">     //url:数据库连接的地址
    </Resource>

    另一个配置文件:

    vi  /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>

    每个应用目录下都有一个WEB-INF目录,它里面会有对应的配置文件。res-ref-nameResource 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 sxt";
    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();
    %>

    这个脚本会连接mysql并查询一个库,表的数据。

    保存重启Tomcat:
    /usr/local/tomcat/bin/shutdown.sh
    /usr/local/tomcat/bin/startup.sh

    在浏览器中访问,他会查询java_test库的sxt表,并列出数据

    直接用命令结果一样:mysql -ujava -psxt  -h127.0.0.1  java_test -e "select  * from sxt"

    用虚拟机查看正常,用浏览器显示500

     

    下载5.17mysql-connector-java包,上传至虚拟机,放到/tomcat/bin   /tomcat/lib目录中

    可能之后还会出错,有能是这个包还没读取到,最后得到

     

  • 相关阅读:
    翻转整数
    无重复字符的最长子串
    字节问题
    django model中get()和filter()方法的区别
    leetcode 290 Word Pattern(map的应用)
    leetcode 130 Surrounded Regions(BFS)
    leetcode 27 Remove Element
    leetcode 102 Binary Tree Level Order Traversal(DFS||BFS)
    leetcode 111 Minimum Depth of Binary Tree(DFS)
    leetcode 104 Maximum Depth of Binary Tree(DFS)
  • 原文地址:https://www.cnblogs.com/sxt0103/p/14153680.html
Copyright © 2020-2023  润新知