tomcat使用方法大全
一、安装tomcat之后
tomcat压缩包解压之后,进入webapps目录,可以看到如下webapp:
- docs文档:这是一个静态页面集,不用启动tomcat也可以阅读
- examples样例
- hostmanager主机管理器
- manager应用管理器
- ROOT根目录:这个app可以访问以上四个app,这个app是默认的app,这个app十分简单,只有一些资源文件和一个jsp页面。
安装完tomcat之后,在bin目录下启动startup.bat。在浏览器地址栏输入localhost:8080,仔细阅读首页,此页面包罗万象,可以进入到文档,可以进入到配置,是十分重要的资源索引。
有了文档,不需要百度,不需要从官网上下载文档doc-full.zip,仔细阅读之,一切问题在这里都能找到答案。
二、tomcat端口映射
众所周知,在unix下,非root用户不能监听1~1024的端口号,原因是这些端口号都有特殊用途,是许多默认协议的默认端口号。tomcat默认端口号是8080,最好不要更改tomcat的端口号,通过端口映射的方式可以把80端口的请求转发到8080。
方法一:配置iptables,把80端口转到8080
在root账户下面运行一下命令:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
注意:网上朋友的命令dport 前面都是 一个 -,通常都会报错。另外如果防火墙重新启动,该命令就会失效。
可以使用下面的命令把该规则保存到iptables里面 :
service iptables save
方法二:使用Nginx
这种方式是最为正规完善的方式,详见此文
三、tomcat修改端口号
强烈建议不要修改端口号,而是通过端口映射的方式:将80端口的请求转发到8080端口。
tomcat默认端口号为8080,http服务的默认端口号为80。在浏览器地址栏输入ip或者域名之后,如果不输入端口号,默认就是80端口。
修改tomcat目录下的conf/server.xml文件,service标签下的Connector可以有多个,再添加一个80端口的连接就可以了
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
四、设置默认应用
修改tomcat目录下的conf/server.xml文件,添加Context标签并设置docBase,需要注意在java中路径分隔符一律按照'/'来总是正确的。
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context path="" docBase="D:\apache\apache-tomcat-7.0.26\webapps\OnlineExam">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
</Host>
实际上,上面介绍的这种方法乃是下策,上策是把webapp的名称直接改为ROOT
,tomcat默认ROOT目录是默认webapp
五、tomcat远程部署
Tomcat安装成功后,在ip地址:8080上就可以看见熟悉的首页,在这个首页中,上方有一个manage app按钮,点击就可以进行应用管理了.这样就不需要使用ftp把war包传上去了.
要想远程部署,需要更改两个地方,第一个地方比较容易发现,只要点击按钮,就会跳到一页,这页内容指导我们更改TOMCAT_HOME/conf/tomcat-users.xml目录,照着来就可以了.
仍旧发现无法访问manage app,这是因为tomcat 8.5以后的版本,默认manage app这个应用不许远程访问,需要更改这个应用的配置文件,即:TOMCAT_HOME/webapps/manager/META-INF/context.xml,把这个文件中的ip地址限制那句话注释掉就可以了.
<Context antiResourceLocking="false" privileged="true" >
<!--Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /-->
</Context>
六、Tomcat解决中文乱码问题
Tomcat默认使用的编码时ISO88591。
URLEncode是一种将byte数组转化为ASCII码字符串的方式,而byte数组转化为真正的字符串是需要编码的。
URLEncode+GBK、URLEncode+UTF8结果是不一样的。
保守点的方法:把乱码用ISO88591转换回byte数组,将byte数组用utf8进行解码。
String city = new String(request.getParameter("city").getBytes("ISO-8859-1"),"utf-8");
彻底一点的方法:把tomcat的默认URL编码设置为UTF8。
在TOMCAT中的conf/server.xml中的Connector中添加两个设置
useBodyEncodingForURI="true" //设置POST和GET使用相同编码
URIEncoding="UTF-8" //对URI使用utf-8编码处理。
七、tomcat启动太慢解决方案
解决方法
方法一:只在Tomcat环境中解决
可以通过配置JRE使用非阻塞的Entropy Source。
在catalina.sh中加入这么一行:-Djava.security.egd=file:/dev/./urandom
即可。
加入后再启动Tomcat,整个启动耗时下降到Server startup in 2912 ms。
方法二:在JVM环境中解决
在/dev目录下,ls | grep random
可以找到random和urandom,查看random文件内容head random
很慢,会卡住一段时间,head urandom
却很快,我们需要做的就是更改随机源。
打开$JAVA_PATH/jre/lib/security/java.security
这个文件,找到下面的内容:
securerandom.source=file:/dev/random
替换成
securerandom.source=file:///dev/urandom
问题原因
原因
Tomcat 7/8都使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom类产生安全随机类SecureRandom的实例作为会话ID,这里花去了342秒,也即接近6分钟。
SHA1PRNG算法是基于SHA-1算法实现且保密性较强的伪随机数生成器。
在SHA1PRNG中,有一个种子产生器,它根据配置执行各种操作。
1)如果java.security.egd
属性或securerandom.source
属性指定的是file:/dev/random
或file:/dev/urandom
,那么JVM会使用本地种子产生器NativeSeedGenerator,它会调用super()方法,即调用SeedGenerator.URLSeedGenerator(/dev/random)方法进行初始化。
2)如果java.security.egd
属性或securerandom.source
属性指定的是其它已存在的URL,那么会调用SeedGenerator.URLSeedGenerator(url)
方法进行初始化。
这就是为什么我们设置值为file:///dev/urandom
或者值为file:/./dev/random
都会起作用的原因。
在这个实现中,产生器会评估熵池(entropy pool)中的噪声数量。随机数是从熵池中进行创建的。当读操作时,/dev/random
设备会只返回熵池中噪声的随机字节。/dev/random
非常适合那些需要非常高质量随机性的场景,比如一次性的支付或生成密钥的场景。
当熵池为空时,来自/dev/random
的读操作将被阻塞,直到熵池收集到足够的环境噪声数据。这么做的目的是成为一个密码安全的伪随机数发生器,熵池要有尽可能大的输出。对于生成高质量的加密密钥或者是需要长期保护的场景,一定要这么做。
那么什么是环境噪声?
随机数产生器会手机来自设备驱动器和其它源的环境噪声数据,并放入熵池中。产生器会评估熵池中的噪声数据的数量。当熵池为空时,这个噪声数据的收集是比较花时间的。这就意味着,Tomcat在生产环境中使用熵池时,会被阻塞较长的时间。
参考资料
tomcat使用方法大全的更多相关文章
- [OC][转]UITableView属性及方法大全
Tip: UITableView属性及方法大全 (摘录地址) p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 14.0px; font: 1 ...
- JS去掉首尾空格 简单方法大全(原生正则jquery)
JS去掉首尾空格 简单方法大全 var osfipin= ' http://www.cnblogs.com/osfipin/ '; //去除首尾空格 osfipin.replace(/(^\s*)|( ...
- js跳转页面方法大全
js跳转页面方法大全<span id="tiao">3</span><a href="javascript:countDown"& ...
- Java获取各种常用时间方法大全
Java获取各种常用时间方法大全 package cc.javaweb.test; Java中文网,Java获取各种时间大全 import java.text.DateFormat; import j ...
- php文件上传大小限制的修改方法大全
php文件上传大小限制的修改方法大全 基本就是修改maxsize选项,当然为了提高上传文件的成功率,还需要设置超时时间等. 文章如下: [php文件上传]php文件上传大小限制修改,phpmyadmi ...
- [Java]读取文件方法大全(转)
[Java]读取文件方法大全 1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile { /** ...
- 网站开发进阶(二十六)js刷新页面方法大全
js刷新页面方法大全 在项目开发过程中,需要实现刷新页面.经过学习,发现下面这条语句就可以轻松实现. location.reload(); // 刷新页面 有关刷新页面的其它方法,具体学习内容如下,有 ...
- Tomcat更新方法
tomcat更新方法最简单的就是上官网下载最新版的压缩包,然后用新版本的 lib 文件替换掉旧版本的 lib 文件 具体方法(偷懒做个搬运工):https://jingyan.baidu.com/ar ...
- 在windows 上自动重启 tomcat 的方法
在windows 上自动重启 tomcat 的方法 实现思路: Windows 上监控tomcat 进程并且自动重启的脚本 一类是 定时重启 tomcat 一类是 监控并重启 写一个守护tomcat进 ...
随机推荐
- 成为Java高手的25个学习目标
本文将告诉你学习Java需要达到的25个目标,希望能够对你的学习及找工作有所帮助.对比一下自己,你已经掌握了这25条中的多少 条了呢? 1.你需要精通面向对象分析与设计(OOA/OOD).涉及模式(G ...
- dubbo培训文档
培训文档 1.<服务框架实践与探索> 主题:QCon2011杭州主题演讲,分享Dubbo服务框架的实践历程.主讲:钱霄,梁飞课件:Service Framework Practices.p ...
- 【TYVJ 五月图论专项有奖比赛】
最短路+TSP+最小生成树+倍增LCA+TreeDP 第一题 其实是个TSP问题(然而我没发现),但是关键点很少,只有5个,所以用dij+heap分别预处理出来这五个点为源的最短路…… 然后枚举起点 ...
- C#版查杀本地/远程进程工具
xkill [原创] Author: R&S E-mail: yrwithsh@vip.sina.com HomePage: fz5fz.yeah.net Date: 10/04/2003 u ...
- linux centos7 安装git
1.下载git wget https://github.com/git/git/archive/v2.14.1.zip 2.安装依赖 yum -y install zlib-devel openssl ...
- 网络结构设计——负载均衡之LVS学习笔记(二)
LVS按个人理解的说就是将一台Linux服务器当作路由器等功能的技术.LVS---Linux虚拟服务器. LVS实现了三种IP负载均衡技术VS/NAT.VS/TUN.VS/DR. 今天简单分享一下我在 ...
- Linux kernel模块管理相关详解
Linux内核模块化设计 1. Linux内核设计:单内核.模块化(动态装载和卸载) (1) Linux:单内核设计,但充分借鉴了微内核体系的设计的优点:为内核引入了模块化机制:(2) 内核的组成部分 ...
- Cognos让指定用户不具有删除内容的权限
为了方便用户使用Cognos,现在很多对权限要求不够严格的用户就想到了可以让用户实现匿名登陆,即不登陆系统即可实现访问报表,当然这也仅仅是按照客户的需求,我个人认为一个安全性的数据平台还是需要对登陆. ...
- POJ 1265:Area
Area Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4725 Accepted: 2135 Description ...
- isPostback 的原理及作用(很easy)
1.IsPostBack用来推断表单是否是回发. (不是第一次请求),是点击表单的提交button回发过来的.是否是回发与get请求还是Post请求无关.可是普通情况下回发都是Post请求. 一般Ge ...