tomcat学习笔记1

tomcat是一个开源软件,是由java语言编写的,它工作的话需要运行在jvm虚拟机中,说到jvm不得不说下java这个大名鼎鼎的编程

语言了

java这个编程语言最优秀的特点要数write once , run anywhere  额!怎么听起来有点流氓的感觉  没错,而这全是依赖于jvm这个

虚拟机,使得java可以在任何平台运行,这恐怕也是java为什么这么流行的原因吧

简单的说jvm虚拟机既是个编译环境为程序员提供许多的库,又是个运行环境java语言写的程序都需要在jvm上运行,而jvm自己却是

使用c语言开发的,使得性能没的说 “好”

有一个非常重要的工具jdk(java development kit)是为java程序员写程序用的,而jdk中就包含了jvm

1998年 sun公司把java技术分为三个方向

J2SE:Standard Edition

J2EE:Enterprise Edition(比J2SE 提供更多工具和库)

J2ME:Mobile Edition 很遗憾这个版本到现在搞得不成功

后来sun把java技术卖给Oracle这个大公司,不过2006 sun公司开源了java技术并有一个叫openjdk的组织来维护,从此java 2 SE

 java 2 EE出现了

tomcat 就是使用了java 2 SE 和java 2 EE中的一些组件  更形象的说是一个web container,作用是使得java程序员写的.jsp网页能

都通过tomcat发给客户端

tomcat的组件:
<Server>
  <Service>  
    <connector/>
    <connector/>
    <Engine>
      <Host />
      <Host>
        <Context/>
          ...
      </Host>
    </Engine>
  </Service>
</Server>

htpp的请求通过cgi或者java支持的其他协议被发送到server(一个server中可以有多个service)server通过connector(一个

service可以有多个connector)发送给Engine(一个service只能包含一个engine)

所有工作就在Engine中的Host和Context中完成一个(一个engine可以包含多个host,host下又可包含多个context)

既然tomcat依赖jvm那就先得在centos下安装jdk 

现在主流版本是1.7   yum -y install java-1.7.0-openjdk-devel (openjdk这个包会被作为依赖关系也给装上)

 

查看版本

 

可以看到这是个链接文件

 

这又是个链接,如果主机上有多个java版本可以使用alternatives命令来决定使用哪个版本

openjdk的许多命令的运行依赖$JAVA_HOME这个环境变量

 

vim /etc/profile.d/java.sh

exec bash 重启bash进程

 

注意tomcat在epel源中,首先得安装epel源,我这事先已经安装了

yum -y install tomcat tomcat-admin-webapps tomcat-webapps安装这几个必要组件(后面两个可以不用装,它们是提供一个

web管理页,和一个普通web页面目的用于测试tomcat安装是否成功)

这些组件具体什么作用使用yum -info 命令查看

rpm -ql tomcat 

/etc/tomcat/server.xml是tomcat的主配置文件 service tomcat start  ss -tnl查看监听的端口

8009和8080两个端口都被监听了  去查看配置文件vim /etc/tomcat/server.xml

 

原来是这两个地方定义的   Connector是连接器

去访问一下

 

ss -tnl

发现多了一个8005端口, vim /etc/tomcat/server.xml

 

可以通过telnet命令关掉此端口,yum -y install telnet

 

service tomcat start

8005端口没有了,这样看着就更简洁了

webapp的文件根目录默认放置在/usr/share/tomcat/webapps目录下,现在去此目录建个自己的webapp

Java Webapp 有特定的组织形式、层次型的目录结构

/:webapps的根目录

index.jsp:jsp的主页面文件

WEB-INF/:当前webapp的私有资源目录,通常存放当前webapp自用的web.xml

classes/: 当前webapp的私有类

lib/:当前webapp的私有类,被打包成jar格式

cd /usr/share/tomcat/webapps(这是个软链接)   mkdir myapp   mkdir {classes, WEB-INF,lib}

 

 vim index.jsp

去浏览器中查看一下

 

回到默认虚拟主机

点击Manager App

点击取消

vim /usr/share/tomcat/conf/tomcat-user.xml 添加如下几行

service tomcat restart   Manager App和Host Manager都能访问了

 

vim /etc/tomcat/server.xml  

Engine:Server的一个实例,即引擎,其内部可以有一个或多个Host组件来定义站点;通常需要通过defaultHost的属性定义默认虚

拟主机

 

Host组件:位于Engine容器中用于接收请求并进行相应处理的主机或虚拟主机

appBase:存放webapp页面资源的目录,可以使用绝对路径也可使用相对路径,此处使用的是相对路径webapps--

>/usr/share/tomcat/webapps

unpackWars:在启用此webapps时是否对WAR格式的归档文件先进行展开;默认为true

autoDeploy:在Tomcat处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy;默认为true

 

自己手动创建一台虚拟主机

mkdir -pv /data/myapps/ROOT ROOT(这个目录是存放webapp网页资源文件的默认目录) cd /data/myapps/ROOT  mkdir

{classes,lib,WEB-INF}   service tomcat restart

vim index.jsp  将前面的 .jsp复制过来

 

继续在该虚拟主机下定义一<Context/>

 

上面这图有一点错误在此更正,fine的前面应该有根/,即path=“/fine”

path指的是hello.com/fine     testapp相对于/data/myapps的路径-->/data/myapps/testapp,也可以使用绝对路径  

reloadable是否支持自动装载文件每当文件改变时

cd /data/myapps    mkdir -pv testapp/{lib,classes,WEB-INF}   cd testapp  

vim index.jsp  

 

tomcat的Realm  这个组件平时不用,不用管了

 

Valve 类似于过滤器  工作于Engine和Host/Context之间,Host和Context之间以及Context和Web应用程序的某资源之间,一个

server内可以建立多个Valve,而且Valve定义的次序也决定了它们生效的次序

vim /etc/tomcat/server.xml

className 定义这个Valve的名字   AccesslogValve访问日志(Valve可以定义在Host,如果定义在Host中则对所有Context生效,

也可以单独定义在Context中指对一个Context生效),前面的一大堆只是为了这个className的名字保持唯一(不用去管它)  

directory="logs"  相对于/usr/share/tomcat而言的-->/usr/share/tomcat/logs,也可使用绝对路径

prefix指定日志文件前缀

suffix指定日志文件后缀

pattern指定日志的记录格式

每个虚拟主机都可定义自己的AccessLogValve,格式就是上面图的格式一样,不过此日志格式跟apache的httpd日志记录格式不一样

 

很多时候为为了做日志分析需要将tomcat的日志格式更改为htppd的日志格式,很简单把pattern更改为combined就行:

pattern="combined"

 

继续使用Valve 基于ip地址做访问控制,在新定义的虚拟主机中做测试

 

补充:建议使用普通用户运行tomcat,在生产环境下webapp很少进行热部署,一般使用冷部署

 

转载于:https://www.cnblogs.com/linuxboke/p/5427792.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(1894)vue之电商管理系统电商系统之通过作用域插槽操作列

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…

前端学习(1895)vue之电商管理系统电商系统之组件的分页显示

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…

前端学习(1896)vue之电商管理系统电商系统之修改用户状态

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…

html5笔记

出处:http://www.cnblogs.com/xiaowei0705/archive/2011/04/19/2021372.html HTML5 LocalStorage 本地存储 HTML5 LocalStorage 本地存储 说到本地存储&#xff0c;这玩意真是历尽千辛万苦才走到HTML5这一步&#xff0c;之前的历史大概如下图所示&#xff1a; 最早的Cookies自然…

前端学习(1897)vue之电商管理系统电商系统之实现搜索功能

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…

前端学习(1898)vue之电商管理系统电商系统之渲染用户的对话框

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…

前端学习(1899)vue之电商管理系统电商系统之渲染添加用户的表单

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…

前端学习(1900)vue之电商管理系统电商系统之渲染添加用户的表单自定义邮箱的规则

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…

前端学习(1901)vue之电商管理系统电商系统之渲实现添加表单的重置规则

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…

前端学习(1902)vue之电商管理系统电商系统之渲实现添加用户前的预先校验

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…

git生成公钥和私钥

转自&#xff1a;http://blog.csdn.net/wqjsir/article/details/17386087/ 一、 Git windows 客服端&#xff08;MsysGit&#xff09;下载 下载地址&#xff1a;http://code.google.com/p/msysgit/ 二、从开始菜单中找到Git 点击Git Bash 弹出命令行窗体&#xff0c;如下图&…

前端学习(1903)vue之电商管理系统电商系统之调用api添加用户

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…

每日站立会议08

会议图片&#xff1a; 会议内容&#xff1a;祖浩然&#xff1a;昨天&#xff1a;对数据库的操作有了大概的了解&#xff1b;今天&#xff1a;制作增加、修改、删除、查询学生信息功能&#xff0c;以及退出主界面&#xff1b;遇到的问题&#xff1a;如何将网页地址以超链接形式…

前端学习(1904)vue之电商管理系统电商系统之修改用户的操作

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…

前端学习(1905)vue之电商管理系统电商系统之根据用户id查询对应的信息

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…

前端学习(1906)vue之电商管理系统电商系统之渲染修改用户的表单

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…

linux6.4 安装oracle11g 出现错误ORA-01078和LRM-00109错误

在linux中oracle11g安装成功后&#xff0c;启动监听&#xff08;lsnrctl start&#xff09;后&#xff0c;运行sqlplus / as sysdba后连接 startup出现了如下图的错误ORA-01078和LRM-00109错误 解决方法&#xff1a; 我当时也上网百度了一下&#xff0c;基本也都大同小异&…

前端学习(1907)vue之电商管理系统电商系统之渲染修改用户的表单的重置操作

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…

前端学习(1908)vue之电商管理系统电商系统之渲染修改用户的表单预先验证

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…

前端学习(1909)vue之电商管理系统电商系统之渲染修改用户的请求

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…