先要提供jdk-7u9-linux-x64.rpm(如以上版本)
安装jdk(java需要用到的编译开发工具)
[[email protected] ~]# rpm -vih jdk-7u9-linux-x64.rpm
Preparing... ########################################### [100%]
1:jdk ########################################### [100%]
Unpacking JAR files...
rt.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/jre/lib/rt.pack
jsse.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/jre/lib/jsse.pack
charsets.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/jre/lib/charsets.pack
tools.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/lib/tools.pack
localedata.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/jre/lib/ext/localedata.pack
安装完后会在/usr/java里出现
将JDK提供一些功能编辑到/etc/profile.d/java.sh,以便方便使用。
source一下配置文件,使用命令 java -version查看java虚拟机的信息。
[[email protected] ~]# java -version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)
下一步,安装tomcat,把tomcat安装到/usr/local目录下。
[[email protected] ~]# tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local
它会生成一个叫apache-tomcat-7.0.42的目录,为了方便以后的定义配置简便快捷,可以创建一个链接叫tomcat。
[[email protected] local ]# ln -sv apache-tomcat-7.0.42 tomcat
`tomcat‘ -> `apache-tomcat-7.0.42‘
默认tomcat要部署的应用程序的目录为
[[email protected] webapps]# pwd
/usr/local/tomcat/webapps
[[email protected] webapps]# ls
docs examples host-manager manager ROOT
在tomcat目录中有个work目录,用来将webapps存放的文件编译成.class结尾的类文件。
强烈推荐将tomcat中bin目录下的脚本文件导出至系统,需要编辑/etc/profile.d/tomcat.sh,在里面添加
[[email protected] manager]# catalina.sh version(这里运行成功表示可以看到tomcat的版本以及CPU名称,架构等等信息)
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.42
Server built: Jul 2 2013 08:57:41
Server number: 7.0.42.0
OS Name: Linux
OS Version: 2.6.32-431.el6.x86_64
Architecture: amd64
JVM Version: 1.7.0_09-b05
JVM Vendor: Oracle Corporation
[[email protected] manager]# version.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java
比较规范的作法是用catalina.sh调用/usr/local/tomcat/bin下的脚本,查看catalina。sh的帮助信息。
[[email protected] manager]# catalina.sh --help
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Usage: catalina.sh ( commands ... )
commands:
debug Start Catalina in a debugger
debug -security Debug Catalina with a security manager
jpda start Start Catalina under JPDA debugger
run Start Catalina in the current window
run -security Start in the current window with security manager
start Start Catalina in a separate window
start -security Start in a separate window with security manager
stop Stop Catalina, waiting up to 5 seconds for the process to end
stop n Stop Catalina, waiting up to n seconds for the process to end
stop -force Stop Catalina, wait up to 5 seconds and then use kill -KILL if still running
stop n -force Stop Catalina, wait up to n seconds and then use kill -KILL if still running
configtest Run a basic syntax check on server.xml - check exit code for result
version What version of tomcat are you running?
Note: Waiting for the process to end and use of the -force option require that $CATALINA_PID is defined
由于catalina默认监听在8080端口上,在启动之前首先要保证你的8080端口没有被占用,然后在去开启服务,catalina.sh start
[[email protected] manager]# catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[[email protected] manager]# ss -tnlp | grep 8080
LISTEN 0 100 :::8080 :::* users:(("java",4760,40))
然后客户端win7访问一下,汤姆猫就算安装成功啦。
=========================================================================
tomcat:是由java编程语言编写的web container(Servlet,JSP),每个java项目运行起来以后都表现为一个jvm进程。它的运行过程大概是tomcat由classloader装载到JVM上运行的。
JDK主要提供JVM虚拟机,而JVM虚拟机自己有版本的依赖性。而运行在JVM虚拟机上的java程序却没有依赖性。
tomcat安装时生成的各目录以及定义,例如:
[[email protected] bin]# cd /usr/local/tomcat/
[[email protected] tomcat]# ls
bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work
bin目录:
[[email protected] tomcat]# cd bin/
[[email protected] bin]# ls
bootstrap.jar configtest.bat memcached-session-manager startup.bat version.bat
catalina.bat configtest.sh msm startup.sh version.sh
catalina.sh cpappend.bat setclasspath.bat tomcat-juli.jar
catalina-tasks.xml daemon.sh setclasspath.sh tomcat-native.tar.gz
commons-daemon.jar digest.bat shutdown.bat tool-wrapper.bat
commons-daemon-native.tar.gz digest.sh shutdown.sh tool-wrapper.sh
提供java的各种脚本,以及自举的jar文件。(自举就是当你启动tomcat的时候,默认并不是启动tomcat,而是JVM,还要tomcat自己在JVM上运行。该过程就是tomcat先启动JVM,再由JVM启动装载自己的过程。)
conf:配置文件目录 server.xml(配置的主文件),tomcat-users.xml(tomcat实现用户认证时, tomcat自己的账号密码) web.xml(tomcat的部署描述符文件)
这里渗透一个部署的概念,部署(deployment)就是java应用程序放在指定路径下,让JVM能够找到它,让web container找到它,必要时访问web资源能够自动加载这个应用程序的所有类文件的过程。
logs:日志,log4j(独特类)java内部专用日志管理的专用类。
lib:库文件和类库文件
temp 临时文件目录
webapps:应用程序部署的位置、路径。
work:把webapps下的所有jsp格式的页面程序文件转换成Servlet程序文件并编译成class文件,编译完的class文件都放到work目录。
重点是tomcat的配置文件都定义了哪些?
[[email protected] tomcat]# cd conf/
[[email protected] conf]# ls
Catalina catalina.policy catalina.properties context.xml logging.properties server.xml tomcat-users.xml web.xml
主配置文件 server.xml
上下文文件 context.xml:每个webapp都有它自己的默认配置文件,此类配置文件正式用于部署为当前tomcat实例上所有的webapp目录下的META-INF目录中,通常用于定义会话管理器,Realm以及JDBC等。
部署描述符文件 web.xml 部署为当前tomcat实例上所有的webapp目录下提供默认部署的描述符。通常用于为webapp提供基本的Servlet定义和MEM映射表。
用户账号文件、tomcat-users.xml
catalina的策略 catalina.policy 当基于-security选项启动tomcat实例时会读取此配置文件,用于定义java的安全策略,配置访问codebase或某些java类权限。
catalina的属性 catalina.properties :Java 属性定义的文件,用于设定类加载器路径/安全包列表,以及一些调整jvm性能的信息。
logging.properties:定义日志相关的配置信息,如日志级别、文件路径等信息.
tomcat的主配置文件:
每个组件由java类实现,有些组件的实现方式不止一种,有多个组件组成,有些组件可以嵌套别人的组件。
补充一个概念 路径别名,将一个url路径映射至非当前网站站点根目录下的其他目录资源中去。
下面一起来看看server.xml这个主配置文件
tomcat的工作端口 8005唯一可以接受的就是SHUTDOWN指令,用telnet连接 127.0.0.1 8005可以发送SHUTDOWN让java进程关闭掉。
[[email protected] tomcat]# telnet 127.0.0.1 8005
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is ‘^]‘.
SHUTDOWN
Connection closed by foreign host
现在再查看服务,
另外在主配置文件中分别定义了不同的connector
1、监听在8080的连接器,可以负责响应前段的http请求
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
2、监听在8009的连接器,实现与当你的前段使用apache反向代理过来使用的ajp协议。
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
再次启动tomcat可以使用catalina.sh start
[[email protected] tomcat]# catalina.sh start
当你在开启tomcat以后,在work目录中就有这些目录
其中最后的index_jsp.java就是index的源码,index_jsp.class就是index的类文件。我们响应给用户的就是编译好运行的index_jsp.class
下面这个主页
是由/tomcat/webapps/ROOT提供的
tomcat自带了两个webapp
manager app(server status)webapp 部署
host-manager (各虚拟主机的管理器)
点击主页上的Manager App会出现要求用户认证的信息
如何点“取消”,就出现如下画面,并提示你从哪提供认证信息。
如果想要编辑,需要编辑/tomcat/conf/tomcat-users.xml文件
在下方任意行中插入:
<role rolename="manager-gui"/> #定义一个叫manager-gui的角色
<user username="tomcat" password="tomcat" roles="manager-gui"/> #设定账号叫tomcat,密码叫tomcat。
然后catalin.sh stop ; catalina.sh start
[[email protected] conf]# catalina.sh stop ; catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
再次点击Manager App按钮,输入定义的账号密码(都为tomcat),再次访问出现管理页面。
但是,如果用相同的账号密码访问Host-Manager页面,则会出现
所以重新编辑tomcat-users.xml
[[email protected] conf]# vim tomcat-users.xml 添加一个新的认证的用户叫jerry
<role rolename="admin-gui"/>
<user username="jerry" password="jerry" roles="admin-gui"/>
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
再次catalina.sh stop && catalina.sh start
访问页面。
下面将更深入介绍汤姆猫的更多应用。