配置Tomcat
第19章 配置Tomcat
目前有很多网站是用Java编写的,所以解析Java程序就必须有相关的软件来完成,Tomcat就是其中之一。Tomcat是Aphche软件基金会的Jakarta项目中的一个核心项目,Tomcat技术先进、性能稳定而且免费,成为目前比较流行的Web应用免费服务器。
Tomcat是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试Java程序的首选。对于初学者来说,在一台机器上配置好Apache服务器之后,可利用它响应对HTML页面的访问请求。实际上,Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行Tomcat时,它是作为一个独立的进程运行的。
19.1 安装Tomcat
Tomcat的安装分为安装JDK和安装Tomcat两个步骤。JDK是针对Java开发的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK是整个Java的核心,它包括了Java运行环境、Java工具和Java基础的类库。所以要想运行Java程序必须要有JDK的支持,而安装Tomcat的前提也是安装好JDK。
19.1.1 安装JDK
下载并解压安装包
然后设置环境变量,在末尾输入以下内容:
执行如下命令使其生效:
第二部也许显示的不一样可能是因为系统调用了rpm的openjdk,那就按照第三步去执行,如果结果为/usr/bin/java则说明这是rpm的JDK,而且执行第二步时会有openjdk字样。在这需要做第三步的处理再次执行第二步就OK了。
19.1.2 安装Tomcat
前面所做的工作都是在为安装Tomcat做准备,现在才是安装Tomcat。
解压并启动Tomcat
查看是否启动成功,命令如下:
看是否有Java相关进程,也可以查看监听端口,正常会有三个端口8009、8005、8080、其中8080为提供Web服务的端口,8005为管理端口,8009端口为第三方服务调用的端口,比如httpd和Tomcat结合时会用到。
若想开机启动,需要把启动命令放到/etc/rc.d/rc.local文件里。如下:
默认该文件没有权限,所以加一下。然后在浏览器地址栏输入http://192.168.50.15:8080/你会看到Tomcat的默认页面。
19.2 配置Tomcat
19.2.1 配置Tomcat服务的访问端口
Tomcat默认启动的端口是8080,如果你想修改为80,则需要修改server.xml文件。打开server.xml文件,找到Connector port=“8080”protocol=“HTP/1.1”。修改为<Connector port=“80”protocol=“HTP/1.1”保存文件后重启Tomcat,命令如下:
Tomcat的关闭和启动有点特殊,需要使用它自带的脚本实现。其实在生产环境中,Tomcat会使用8080端口,而80端口是留给Nginx的。也就是说要想访问Tomcat,需要使用Nginx代理
19.2.2 Tomcat的虚拟主机
先来打开配置文件/usr/local/tomcat/conf/server.xml查看一下它的结构,其中<!--和-->之间的内容为注释掉的,可以不用关注。
其中<Host>和</Host>之间的配置为虚拟机主机配置部分,name定义域名,appBase定义应用的目录。Java的应用通常是一个jar的压缩包,将jar的压缩包放到appBase目录下面即可。刚才访问的Tomcat默认页面其实就是在appBase目录下面,不过是在它子目录ROOT
并没有修改默认监听的8080端口为80,所以curl访问的时候依然是8080端口。在appBase目录下面有很多子目录,每一个子目录都可以被访问,你可以自定义的应用放到webapps目录里(假设应用名字为aming,aming为一个目录),然后可以通过http://ip/aming/来访问这个应用。如果直接访问IP,后面不加二级目录,则默认会访问ROOT目录下面的文件。加上二级目录会访问二级目录下面的文件。
下面再增加一个虚拟主机,并定义域名,编辑server.xml,在</Host>下一行插入新的<Host>,内容如下:
其中多了一个docBase,这个参数用来定义网站的文件存放路径,如果不定义,默认是在appBase/ROOT下面的。定义了docBase就以该目录为主,其中appBase和docBase可以一样。
创建目录和为文件并测试:
修改完配置文件后,需要重启Tomcat服务
然后用curl访问一下刚才创建的1.html
19.3 测试Tomcat解析JSP
以上章节所作操作仅仅是把Tomcat作为一个普通的Web Server,其实Tomcat主要用来解析JSP页面。
写入以下内容:
保存文件后使用curl测试,
正确,可以看到中间那行代码被解析成当前系统的时间了。另外你也可以在你的物理机上绑定hosts,用浏览器来测试。
19.4 Tomcat日志
Tomcat的日志目录为/usr/local/tomcat/logs,主要有四大类日志。
其中catalina开头的日志为Tomcat的综合日志,它记录Tomcat服务相关信息,也会记录错误日志。host-manager和manager为管理相关的日志,其中host-manager为虚拟主机管理日志。Localhost和localhost-access为虚拟主机相关日志,其中带access字样的为访问日志,不带access的为默认虚拟主机的错误日志。访问日志默认不会生成,需要在server.xml中配置一下。具体方法是在对应虚拟主机的<Host></Host>里面加入下面的配置(假设域名为123.cn):
prefix定义访问日志的前缀,suffix定义日志后缀,pattern定义日志格式。新增加的虚拟主机默认不会生成类似默认主机的那个“localhost.日期.log”日志,错误日志会统一记录到catalina.out中。关于Tomcat日志,你最需要关注catalina.out,出现问题时应该首先想到去查看它。
19.5 Tomcat链接MySQL
Tomcat链接MySQL是通过自带的JDBC驱动实现的,首先,配置MySQL,创建实验用的库、表以及用户:
创建完表以后以及用户后,退出mysql,并验证用户是否可用:
正常进入mysql,说明刚刚创建的Java用户没问题。直接去配置Tomcat相关的配置文件:
在</Context>上面增加以下内容
name定义为jbdc/mytest,这里的mytest可以自定义,后面还会用到它。username为mysql的用户,password为密码,url定义MySQL的IP、端口以及库名。保存该文件后,还需更改另外一个配置文件。
在</web-app>上面增加
其实每一个应用目录下都应该有一个web-INF目录,他里面会有对应的配置文件,比如web.xml就是用来定义JDBC相关资源的,其中的res-ref-name和前面定义的Resource name保持一致。既然选择了webapps/ROOT作为实验应用对象,就需要在ROOT目录下面创建测试JSP文件(用浏览器访问的文件):
这是Java语言写的程序代码,但这个脚本会去链接MySQL,并查询一个库、表的数据即可。保存后,重启一下Tomcat: