配置Tomcat

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

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

对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。


16.1 安装Tomcat

Tomcat的安装分为安装JDK和安装Tomcat两个步骤,JDK是整个Java的核心,它包括了Java运行环境、Java工具和Java基础的类库。要想运行Java程序必须要有JDK的支持,而安装Tomcat的前提也是安装好JDK。


安装JDK

JDK只能在浏览器上下载之后传到linux上,而无法直接使用wget去下载,这里我下载的是jdk-8u171-linux-x64.tar.gz官方下载地址

这里写图片描述

  • 上传并解压:
# cd /usr/local/src/

# rz

# ls
jdk-8u171-linux-x64.tar.gz

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

# mv jdk1.8.0_171 /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_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)				#显示这三行则说明配置正确

# which java
/usr/local/jdk1.8/bin/java				#如果这里显示为/usr/bin/java则说明这是rpm的JDK,而且执行java -version时会有openjdk字样

安装Tomcat

上面已经安装了JDK,现在来安装Tomcat。

  • 首先下载软件包:
# cd /usr/local/src/

# wget https://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz
  • 解压并安装:
# tar zxvf apache-tomcat-8.5.32.tar.gz 

# mv apache-tomcat-8.5.32 /usr/local/tomcat
  • 启动Tomcat:
# /usr/local/tomcat/bin/startup.sh				#Tomcat只能通过脚本方式启动或关闭,重启就是先关闭再启动,不能直接restart
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
Tomcat started.
  • 查看是否启动成功:
# netstat -lntp |grep java
tcp6       0      0 :::8080                 :::*                    LISTEN      1895/java				#正常情况会有三个端口,8080端口提供Web服务 
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      1895/java				#8005端口为管理端口
tcp6       0      0 :::8009                 :::*                    LISTEN      1895/java				#8009端口为第三方服务调用端口
  • 设置开机启动:
# echo "/usr/local/tomcat/bin/startup.sh" >> /etc/rc.d/rc.local 

# chmod a+x /etc/rc.d/rc.local				#默认该文件没有执行权限,需要加上执行权限
  • 关闭防火墙后使用浏览器访问:
# systemctl stop firewalld

# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

在这里插入图片描述


16.2 配置Tomcat


配置Tomcat服务的访问端口

Tomcat默认启动的端口是8080端口,如果想改为80端口,则需要修改配置文件 /usr/local/tomcat/conf/server.xml

# vim /usr/local/tomcat/conf/server.xml
<Connector port="8080" protocol="HTTP/1.1"				#找到该行,将8080改为80

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

# /usr/local/tomcat/bin/startup.sh				#先关闭再启动,即重启Tomcat服务

在生产环境中,Tomcat使用8080端口,而80端口是留给Nginx的,也就是想要访问Tomcat,需要使用Nginx代理。


Tomcat的虚拟主机

在之前httpd和Nginx的时候,就有接触过虚拟主机,而Tomcat也有虚拟主机的概念。

  • 查看虚拟主机配置内容:
# vim /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>

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

我们之前访问的Tomcat默认页就在appBase目录下面的子目录ROOT里面。

# ls /usr/local/tomcat/webapps/ROOT/
asf-logo-wide.svg  bg-nav-item.png  favicon.ico        tomcat.css  tomcat-power.gif
bg-button.png      bg-nav.png       index.jsp          tomcat.gif  tomcat.svg
bg-middle.png      bg-upper.png     RELEASE-NOTES.txt  tomcat.png  WEB-INF				#index.jsp就是Tomcat的默认页面

在appBase(/usr/local/tomcat/webapps/)目录下面有很多子目录,每一个子目录都可以被访问,我们可以把自定义的应用放到webapps目录里。如果直接访问IP,后面不加二级目录,则默认访问ROOT目录下面的文件,加上二级目录则会访问二级目录下面的文件。

  • 增加虚拟主机,定义域名:
# vim /usr/local/tomcat/conf/server.xml

  <Host name="www.lzx.cn"  appBase="/data/tomcatweb/"
            unpackWARs="false" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
            <Context path="" docBase="/data/tomcatweb/" debug="0" reloadable="true" 
              crossContext="true" />
      </Host>             //在</Host>下一行插入上面内容

上面多定义了一个docBase,这个参数用来定义网站的文件存放路径,如果不定义,默认是在appBase/ROOT下面,定义了docBase就以该目录为主了,其中appBase和docBase可以一样。

  • 创建目录并测试:
# mkdir /data/tomcatweb

# echo "Tomcat." > /data/tomcatweb/1.html

# /usr/local/tomcat/bin/shutdown.sh				#先关闭Tomcat服务
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

# /usr/local/tomcat/bin/startup.sh				#再启动Tomcat服务
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
Tomcat started.

# curl -x127.0.0.1:8080 www.lzx.cn/1.html
Tomcat.				#说明我们添加的虚拟主机没有问题

16.3 测试Tomcat解析JSP

Tomcat主要用来解析JSP页面,上面仅仅是把Tomcat作为一个普通的Web Server使用。


  • 创建一个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.lzx.cn/111.jsp

<html><body><center>
  Now time is: Mon Jul 16 16:02:24 CST 2018				#这里被解析为当前系统时间
</center></body></html>

还可以在宿主机上绑定hosts,用浏览器测试。


16.4 Tomcat日志


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

# cd /usr/local/tomcat/logs/

# ls
catalina.2018-07-16.log  host-manager.2018-07-16.log  localhost_access_log.2018-07-16.txt
catalina.out             localhost.2018-07-16.log     manager.2018-07-16.log

上面,

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

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

localhost和localhost_access		为虚拟主机相关日志,其中带access字样的为访问日志,不带access字样的为默认主机的错误日志(访问日志默认不会生成,需要在server.xml中配置一下)

错误日志会统一记录到 catalina.out 中,出现问题应该首先查看它

对于一个虚拟主机,它的配置文件中包含有下面内容

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

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


16.5 Tomcat连接MySQL

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


  • 首先配置mysql,创建实验用的库、表及用户:
# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile				#加入变量,使mysql开机启动

# source /etc/profile

# mysqladmin -uroot password '123456'				#设置密码

# mysql -uroot -p'123456'				#登录mysql
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 'lzxlinux';
Query OK, 0 rows affected (0.00 sec)

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

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

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

mysql> insert into lzx values (3,'ccc');
Query OK, 1 row affected (0.00 sec)
  • 创建完表及用户后,退出mysql,并验证用户是否可用:
[root@localhost logs]# mysql -ujava -plzxlinux -h127.0.0.1
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 5
Server version: 5.6.36 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, 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>				#正常进入mysql,说明刚刚创建的Java用户没有问题
  • 编辑Tomcat的配置文件:
# 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="lzxlinux"
        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、端口及库名。

  • 还需要配置一个文件:
# 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>

每个应用目录下面都有一个WEB-INF目录,它里面会有对应的配置文件,比如web.xml就是用来定义JDBC相关资源的,其中res-ref-name和前面定义的Resource name保持一致。

  • 在ROOT目录下面创建测试JSP文件:
# vim /usr/local/tomcat/webapps/ROOT/t.jsp

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

<%
Context context = new InitialContext();
DataSource ds = (DataSource) context
.lookup("java:comp/env/jdbc/mytest");
Connection connection = ds.getConnection();
Statement state = connection.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();
connection.close();
%>
  • 下载MySQL Connector/J(用于连接mysql和java,下载地址):
# cd /usr/local/tomcat/lib/

# rz

# ls
annotations-api.jar       el-api.jar                          tomcat-api.jar      tomcat-jni.jar
catalina-ant.jar          jasper-el.jar                       tomcat-coyote.jar   tomcat-util.jar
catalina-ha.jar           jasper.jar                          tomcat-dbcp.jar     tomcat-util-scan.jar
catalina.jar              jaspic-api.jar                      tomcat-i18n-es.jar  tomcat-websocket.jar
catalina-storeconfig.jar  jsp-api.jar                         tomcat-i18n-fr.jar  websocket-api.jar
catalina-tribes.jar       mysql-connector-java-5.1.46.tar.gz  tomcat-i18n-ja.jar
ecj-4.6.3.jar             servlet-api.jar                     tomcat-jdbc.jar

# tar zxvf mysql-connector-java-5.1.46.tar.gz

# cd mysql-connector-java-5.1.46

# ls
build.xml  COPYING                              mysql-connector-java-5.1.46.jar  README.txt
CHANGES    mysql-connector-java-5.1.46-bin.jar  README                           src

# mv mysql-connector-java-5.1.46-bin.jar /usr/local/tomcat/lib/

# mv mysql-connector-java-5.1.46.jar /usr/local/tomcat/lib/          

将解压出来的两个jar包放到 /usr/local/tomcat/lib/目录下面,这样才能生效

  • 重启Tomcat服务并在浏览器访问:
# /usr/local/tomcat/bin/shutdown.sh

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

在这里插入图片描述

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

# mysql -ujava -plzxlinux -h127.0.0.1 java_test -e "select * from aminglinux"
Warning: Using a password on the command line interface can be insecure.
+------+------+
| id   | name |
+------+------+
|    1 | abc  |
|    2 | aaa  |
|    3 | ccc  |
+------+------+

更多资料参考:

tomcat配置文件server.xml详解

tmcat常用功能的配置方法

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值