目前有很多网站是用Java编写的,所以解析Java程序就必须有相关的软件来完成,Tomcat就是去其中之一。Tomcat是Apache软件基金会(Apache Software Foundation)的Jackarta项目中的一个核心项目,由Apache、Sun和其它一些公司及个人共同开发而成。Tomcat技术先进、性能稳定而且免费,因为深受Java爱好者的喜爱,并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。
Tomcat是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试Java程序的首选。对于初学者,在一台机器上配置好Apache服务器之后,可利用它相应对HTML页面的访问请求。实际上,Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行Tomcat时,它是作为一个福利的进程运行的。
1. 安装Tomcat
Tomcat的安装分为安装JDK和安装Tomcat两个步骤。JDK(Java Development Kit)是Sunday Microsystems针对Java开发的产品。自从Java推出依赖,JDK已经称为使用最广泛的Java JDK。JDK是整个Java的核心,它包括了Java运行环境、Java工具和Java基础的类库。所以想要运行Java程序必须要有JDK的支持,而安装Tomcat的前提也是安装好JDK。
1.1. 安装JDK
可以去JDK的官网去下载,但是这个下载地址不能通过wget命令来进行下载,只能先通过浏览器,然后再上传到Linux中。根据平台来下载相应的版本。在这里实验环境是CentOS7系统,软件包下载的是64位的。
下载完JDK的包之后,把它上传到/usr/local/src/目录下,然后解压,命令如下:
然后设置环境变量,操作方法如下:
接下来:
- 保存文件后,执行这个命令使其生效:
source /etc/profile
- 检测设置是否正确,使用这个命令:
java -version
,如果显示如下内容,则说明配置正确:123java version "9.0.4"Java(TM) SE Runtime Environment (build 9.0.4+11)Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
也许这一步的显示和上面的不一样,这可能是因为系统中调用了rpm的openjdk,请按照下面的方法检测:
- 输入命令
which java
- 如果结果为
/usr/bin/java
则说明这个rpm的JDK,而且执行java -version
时会有openjdk
字样。 其实我们也可以直接使用
openjdk
来配合Tomcat,但是在这个实验里,我们还是使用JDK吧。这时如果系统中已经存在了openjdk,则我们需要做一个临时处理:12# mv /usr/bin/java /usr/bin/java_bak# source /etc/profile再次执行
java -version
,显示的结果就和上面的一样了。
1.2. 安装Tomcat
安装JDK只不过是为安装Tomcat做准备工作,现在才是正式安装Tomcat。
首先下载软件包,可以到Tomcat的官网去下载,在工作中可以根据需求来选择合适的版本。这里以Tomcat8版本作为演示。
安装过程如下:
因为是二进制包,所以免去了编译的过程,启动Tomcat,命如下:
查看是否启动成功,命令如下:
若想开机启动,需要把命令放到/etc/rc.d/rc.local
文件里。如下:
然后在浏览器中输入http://IP:8080
就可以看到Tomcat的默认页面了。
2. 配置Tomcat
Tomcat的安装过程非常简单,但是我们还需要学会如何配置Tomcat。在生产环境中关于Tomcat的配置其实并不多,下面是几个常用的配置。
2.1. 配置Tomcat服务的访问端口
Tomcat的默认启动端口是8080,如果你想改为80,则需要修改server.xml
文件。操作如下:
- 打开server.xml文件:
vim /usr/local/tomcat/conf/server.xml
- 找到
<Connector port="8080" protocol="HTTP/1.1"
修改为<Connector port="80" protocol="HTTP/1.1"
- 保存文件后重启Tomcat,命令如下:12/usr/local/tomcat/bin/shutdown.sh/usr/local/tomcat/bin/startup.sh
Tomcat的关闭和启动优点特殊,需要使用它自带的脚本实现。其实在生产环境中,Tomcat会使用8080端口,而80端口是留给Nginx的。也就是说要想访问Tomcat,需要使用Nginx代理。
2.2. Tomcat的虚拟主机
关于虚拟主机,在Tomcat中也有这么一说。
先来看一下配置文件server.xml中的结构,其中<!--
和-->
之间的内容为注释,所以把它们过滤掉,剩下的内容如下:
其中<Host>
和</Host>
之间的配置就是虚拟主机配置部分,name
定义域名,appBase
定义应用的目录。Java的应用通常是一个jar的压缩包,将jar的压缩包放到appBase
目录下面即可。
刚才安装完所访问的Tomcat的页面其实就是在appBase
目录下面,不过是在它子目录ROOT里:
其中index.jsp
就是Tomcat的默认页面。也可以用curl
命令来访问一下Tomcat.gif图片:
在appBase(即/usr/local/tomcat/webapps)目录下面有很多子目录,每一个子目录都可以被访问,你可以把自定义的应用放到webapps
目录里(假设应用名字为theshu,theshu为一个目录),然后可以通过http://IP/theshu/
来访问这个应用。如果直接访问IP,后面不加二级目录,则默认会访问ROOT目录下面的文件,加上二级目录会访问二级目录下面的文件。
下面再来增加一个虚拟主机,并定义域名,编辑server.xml,在</Host>
下一行插入新的<Host>
,内容如下:
上述配置的说明:
- 其中多了一个
docBase
,这个参数用来定义网站的文件存放路径,如果不定义,默认是在appBase/ROOT
下面的。定义了docBase
就以该目录为主了 - 其中
appBase
和docBase
可以一样。
创建目录和测试文件并测试,过程如下:
2.3. 测试Tomcat解析JSP
上面的演示仅仅是把Tomcat作为一个普通的Web Server,其实Tomcat主要用来解析JSP页面。下面将创建一个JSP的测试页面,如下所示:
保存文件后使用curl进行测试,如下所示:
可以看到,中间的那行代码被解析成当前系统的时间了。
2.4. Tomcat日志
Tomcat的日志目录为/usr/local/tomcat/logs
,主要有四大类日志:
其中:
catalina
开头的日志为Tomcat的综合日志,它记录Tomcat服务相关信息,也会记录错误日志。catalina.2018-03-15.log
和catalina.out
内容相同,前者会每天生成一个新的日志。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
,出现问题时应该首先想到去查看它。
2.5. Tomcat连接MySQL
Tomcat连接MySQL是通过自带的JDBC驱动实现的,网上有很多资料说需要下载mysql-connector-java-xxx.jar(其中xxx为版本号),并放到Tomcat的lib目录下才可以。但是有人做实验得出结论:无需做此步操作。
如果需要mysql-connector-java-xxx.tar驱动,则按照如下方式操作:
- 官网下载地址:http://dev.mysql.com/downloads/connector/j/
- 以
mysql-connector-java-5.1.25.tar.gz
为例来进行操作 - 将mysql-connector-java-5.1.25.tar.gz解压放在/usr/local/下
cd mysql-connector-java-5.1.25
cp mysql-connector-java-5.1.25-bin.jar /usr/local/tomcat/lib
- 重启Tomcat:
/usr/local/tomcat/bin/shutdown.sh && /usr/local/tomcat/bin/startup.sh
接下来让我们进行Tomcat连接MySQL的实验!
首先,配置MySQL,创建实验用的库、表以及用户:
创建完表以用户后, 退出MySQL,并验证用户是否可用:
正常进入MySQL,说明刚刚创建的java用户没有问题。接着去配置Tomcat相关的配置文件:
说明:
- 上面配置中有个地方需要注意一下,
name
定义为jdbc/mytest
,这里的mytest
可以自定义,后面还会用到它。 username
为MySQL的用户名,password
为密码,usl
定义MySQL的IP、端口以及库名。
保存该文件后,还需要更改另一个配置文件:
其实每一个应用(即webapps/ROOT、webapps/aming等)目录下都应该有一个WEB-INF目录,它里面会有对应的配置文件,比如web.xml就是用来定义JDBC相关资源的,其中res-ref-name
和前面定义的Rource name
保持一致。
既然选择了webapps/ROOT
作为实验应用对象,就需要在ROOT目录下面创建测试JSP文件(用浏览器访问的文件):
说明:这个JSP脚本可能你会看不懂,因为这是Java语言写的程序代码,细节我们不用太过在意,只需要知道这个脚本会去连接MySQL,并查询一个库、表的数据即可。只是用来测试环境的。
保存后,重启一下Tomcat:
然后再浏览器里面访问http://IP/t.jsp
,它会查询java_test库的aminglinux表,并列出具体的数据来。并且它和直接用MySQL命令行查询得到的结果是一致的:
3. Resin安装与配置
Resin和Tomcat是一样的角色。它也需要JDK的支持。所以第一步也是安装JDK,方法同上。
安装完JDK后,下面来安装Resin。
resin的官网是http://caucho.com,它分两个版本,resin是开源的,另一个resinpro为商业版本。我们要用开源的版本resin。
下面简单配置resin
它的配置文件和tomcat的是很像的,基本结构为:
其中虚拟主机配置就在<host></host>
里配置:
注意,这里并不是在<host>
下面再加一段,而是直接更改里面的<host></host>
。然后编辑一个测试文件:
加入如下内容:
测试: