- 浏览: 1048310 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1441)
- 软件思想&演讲 (9)
- 行业常识 (250)
- 时时疑问 (5)
- java/guava/python/php/ruby/R/scala/groovy (213)
- struct/spring/springmvc (37)
- mybatis/hibernate/JPA (10)
- mysql/oracle/sqlserver/db2/mongdb/redis/neo4j/GreenPlum/Teradata/hsqldb/Derby/sakila (268)
- js/jquery/jqueryUi/jqueryEaseyUI/extjs/angulrJs/react/es6/grunt/zepto/raphael (81)
- ZMQ/RabbitMQ/ActiveMQ/JMS/kafka (17)
- lucene/solr/nuth/elasticsearch/MG4J (167)
- html/css/ionic/nodejs/bootstrap (19)
- Linux/shell/centos (56)
- cvs/svn/git/sourceTree/gradle/ant/maven/mantis/docker/Kubernetes (26)
- sonatype nexus (1)
- tomcat/jetty/netty/jboss (9)
- 工具 (17)
- ETL/SPASS/MATLAB/RapidMiner/weka/kettle/DataX/Kylin (11)
- hadoop/spark/Hbase/Hive/pig/Zookeeper/HAWQ/cloudera/Impala/Oozie (190)
- ios/swift/android (9)
- 机器学习&算法&大数据 (18)
- Mesos是Apache下的开源分布式资源管理框架 (1)
- echarts/d3/highCharts/tableau (1)
- 行业技能图谱 (1)
- 大数据可视化 (2)
- tornado/ansible/twisted (2)
- Nagios/Cacti/Zabbix (0)
- eclipse/intellijIDEA/webstorm (5)
- cvs/svn/git/sourceTree/gradle/jira/bitbucket (4)
- jsp/jsf/flex/ZKoss (0)
- 测试技术 (2)
- splunk/flunm (2)
- 高并发/大数据量 (1)
- freemarker/vector/thymeleaf (1)
- docker/Kubernetes (2)
- dubbo/ESB/dubboX/wso2 (2)
最新评论
由于 Tomcat 基于 Java,实际上在各种 Linux 发行版里的配置方法都大同小异,只是我看见在 Arch Linux 环境里搭建 Tomcat 的文章比较少,所以在 Arch Linux 实践一遍然后得出此文。此文假设你对 Tomcat 并不十分了解,主要笔墨将会在 Tomcat 的配置之上。
1、安装 Java JDK
在 Arch Linux 的 extra 源里有 jdk7-openjdk 和 openjdk6,可以直接使用 pacman 安装,至于选用哪一个可以视具体情况而定。我安装的是 OpenJDK 7:
$ sudo pacman -S jdk7-openjdk
2、安装 Tomcat
同样地,extra 源里已有 tomcat 版本5、6、7,可以根据具体情况而定,我这里安装的是tomcat 6。
$ sudo pacman -S tomcat6
默认情况 tomcat 6 安装路径为 /usr/share/tomcat6,这里罗列一下主要目录的作用(箭头表示目录链接的实际位置):
•/usr/share/tomcat6: 程序主目录,也是变量 $CATALINA_HOME 所指向的位置,在单 tomcat 实例的情况下,也是变量 $CATALINA_BASE 所指向的位置。
•conf -> /etc/tomcat6: 配置文件目录。
•lib -> /usr/share/java/tomcat6: 共享jar包目录,这些包既给 tomcat 所使用,也能给 web 应用程序所引用。
•logs -> /var/log/tomcat6: 日志目录,对于查找错误以及查看访问记录很有帮助。
•webapps -> /var/lib/tomcat6/webapps: 默认的 web 应用程序目录,tomcat 6 自带了几个示例程序,下面会介绍。
现在可以尝试启动 tomcat 服务:
$ sudo /etc/rc.d/tomcat start
根据安装的 Java 运行时的不同,启动时可能有错误,检查启动脚本的配置文件 /etc/conf.d/tomcat6 里面的 TOMCAT_JAVA_HOME 变量的值,在我的安装中 Java 运行时应该在 /opt/java 里(用 $ which java 就可以看到了),因此将:
TOMCAT_JAVA_HOME=/usr/lib/jvm/java-7-openjdk 更改为如下即可: TOMCAT_JAVA_HOME=/opt/java
重启 tomcat 服务:
$ sudo /etc/rc.d/tomcat6 restart
一般应该没有问题,打开任意浏览器并在地址栏里输入 “http://localhost:8080″,如果看到 tomcat 猫即说明服务已经安装妥当并且能正常运行了。
3、认识 webapps 目录
这个目录位于 tomcat6 的安装目录之下,实际内容位于 /var/lib/tomcat6/webapps。 webapps 目录里每一个目录对应一个web应用程序,比如 docs 目录的访问地址是 http://localhost:8080/docs,同理 manager 目录的访问地址是 http://localhost:8080/manager,其中比较特殊的是 ROOT 目录,它对应的访问地址恰好是网站的根目录,即 http://localhost:8080/。
Tomcat 附带的示例程序可以逐个访问体验一下,其中 manager 和 host-manager 这两个应用程序设置了需要登录验证才能访问,增加登录用户的方法是编辑 Tomcat 安装目录下的配置文件 conf/tomcat-users.xml (实际上也是文件 /etc/tomcat6/tomcat-users.xml),添加如下几行:
<role rolename="manager-gui"/>
<role rolename="admin-script"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-script,admin-gui"/>
然后重启 Tomcat 服务,即可以通过用户名 tomcat 和密码 tomcat 登录并访问 manager 和 host-manager 两个应用程序。
每个 Java Web 应用程序都有如下的目录结构:
•/index.html 访客直接访问的资源,比如静态图片和CSS样式表。
•/WEB-INF/ 访客不能直接访问的资源。
•/WEB-INF/classes 应用程序的 Java 源码编译后的class文件。
•/WEB-INF/web.xml 应用程序的配置文件。
•/WEB-INF/lib 应用程序所引用的包。
当然也不是所有都是必须的,你甚至可以创建一个目录,比如“hello”,然后在里面只创建一个 index.html 文件(内容随便),即可以通过 http://localhost:8080/hello/index.html 访问了。(当然这样的不是Web应用程序,此方法仅用于测试用)
下面使用 Apache Maven 创建一个最简单的 Web 应用程序,在用户目录里执行如下命令创建 Web 应用程序的骨架:
$ mvn archetype:generate
在交互界面中,
Choose a number or apply filter: 输入 174,即创建 maven-archetype-webapp 类型项目。 Choose version: 输入5,即版本 1.0。 Define value for property ‘groupId’: 输入 org.test。 Define value for property ‘artifactId’: 输入 demo。 Define value for property ‘version’: 输入 1.0。 Define value for property ‘package’: 输入 org.test.demo Confirm properties configuration: 直接回车
上面涉及 Maven 知识不在此文的讨论范围,如果不熟悉的话可以参阅免费的中文电子图书《Maven in action》,顺带提一下,Maven 是Java项目构建和管理的最常用工具之一。
现在应该看到一个名为 demo 的目录,进入后可以使用 Maven 打包项目:
$ cd demo
$ mvn package
打包的结果是文件 ./target/demo.war,把这个文件复制到 webapps 目录:
$ sudo cp target/demo.war /var/lib/tomcat6/webapps/
由于 Tomcat 默认创建的站点会自动部署应用程序,所以刚才复制到 webapps 目录的文件 demo.war 会被自动解压缩,检视 webapps 目录应该会发现多出一个名字为 demo 的目录,现在可以在浏览器里尝试访问 http://localhost:8080/demo,应该看到 “Hello World!”字样,这就是刚才用 Maven 创建的 Web 应用程序运行的结果。
需要说明的是,java web 应用程序打包之后所形成的 war 文件并不是一定要解压出来才能运行的,这点将会在下一节的配置里会讲到。
4、认识 Tomcat 的主配置文件 server.xml
这个文件位于 tomcat 6 安装目录之下的 conf 目录之内,实际内容位于 /etc/tomcat6/server.xml。
正如该文件的扩展名所示,这是一个 xml 格式的文件,打开之后将会看到如下的结构:
<Server port="8005" shutdown="SHUTDOWN">
<Service name="Catalina">
<Executor ...... />
<Connector ...... />
<Connector ...... />
<Engine name="Catalina" ... >
<Host name="localhost" ... >
<Context ... />
</Host>
</Engine>
</Service>
</Server>
即一个由 Server->Service->Engine->Host->Context 组成的四层结构,从里层向外层分别是:
•Context: 即 Web 应用程序,一个 Context 即对于一个 Web 应用程序。
•Host:即虚拟主机,比如 www.dog.com 对应一个虚拟主机,api.dog.com 对于另一个虚拟主机。一个 Host 用于定义一个虚拟主机。(所谓的”一个虚拟主机”可简单理解为”一个网站”)
•Engine:一组虚拟主机的集合。比如www.dog.com 和 api.dog.com 可以组成一组虚拟主机集合。
•Service:一组 Engine 的集合,包括线程池 Executor 和连接器 Connector 的定义。
CONNECTOR 的配置
一个 Connector 即一个对外界开放的端口,简单理解就是大部分网络服务程序都会遇到的 IpAddress:Port 的组合,比如 192.168.0.10:8080 就是一个端口,当然在 Connector 里可以定义的内容要丰富得多,即 Connector 这个 XML 节点里可以加上许多属性。下面列举一下常用的:
•enableLookups:(default=true) 是否允许反向解析访客的IP地址,当你的应用程序使用 request.getRemoteHost() 时如果只需要IP地址,建议禁用此项,这样能节省反向域名解析的时间。
•maxPostSize:(default=2097152 即2MB) 最大允许 POST 上传的数据大小(单位为:字节),对于一般网站来说,比如有写评论写文章的网站,默认的2MB已经足够,不过如果网站带有图片甚至文件上传功能,则需要根据具体情况来定。
•protocol:连接器的类型,tomcat 6 有如下几种选择 •org.apache.coyote.http11.Http11Protocol:简写为 “HTTP/1.1″,这是默认的连接器,一个访客网络连接需要一个线程,并发性能比较低。
•org.apache.coyote.http11.Http11NioProtocol:NIO连接器,一个由非阻塞的socket工作模式构成的连接器,并发性能良好,纯Java实现。
•org.apache.coyote.http11.Http11AprProtocol:APR连接器,所谓 APR 就是网络上最多服务器使用的 Web 服务程序 Apache Http Server 所使用的库,Tomcat 建议在生产环境使用,具体方法下面会介绍。
•redirectPort:当用户访问非https的资源而该资源又需要https方式访问时,tomcat会自动重定向到https端口,一般https使用 TCP 443端口,所以一般取值”443″。
•SSLEnabled:(default=false),设置当前连接器是否使用安全SSL传输,如果设置为”true”,则应该同时设置下面两个属性: scheme=”https” (default=http) 可以设置为 http 或者 https。 secure=”true” (default=false)。
•adress:连接器所绑定的IP地址,当一台服务器存在多个ip地址时可以指定其中的需要绑定的一个,默认不设置该属性的值表示绑定当前服务器的所有ip地址。
•compressableMimeType:(default=”text/html,text/xml,text/plain”) 指定需要GZIP压缩的资源的类型。
•compression:(default=off) 是否启用GZIP压缩,可以取值 on/off/force,设置为on之后会对 compressableMimeType 属性指定的资源类型启用GZIP压缩。
•connectionTimeout:(default=”60000″) 当访客网络连接后,服务器等待第一行Request头出现的时间。单位是毫秒。
•executor:指定当前连接器使用的线程池的名称,如果指定,则忽略其他针对线程数量的设置,比如 maxThreads。
•maxThreads:(default=200) 最多可创建线程的数量。
•port=”80″:绑定端口。
•keepAliveTimeout:(default=connectionTimeout),访客完成一次请求后维持网络连接的时间。
一个简单的 Connector 定义如下:
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="60000"
redirectPort="443" />
EXECUTOR 的配置
Executor 用于定义共享的线程池。默认情况下每个 Connector 都会产生自己的一个线程池,如果你想多个 Connector 共享一个线程池,则可以先定义一个线程池,如:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="4"/>
然后修改上述的 Connector 配置,增加 executor 属性,修改后的配置如下:
<Connector executor="tomcatThreadPool"
port="80" protocol="HTTP/1.1"
connectionTimeout="60000"
redirectPort="443" />
HOST 的配置
一个 Host 配置即为一个虚拟主机,例如下面是一个简单的 Host 配置:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Alias>dog.com</Alias>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
</Host>
Host 配置节点各个属性的作用:
•name:设置虚拟主机的域名,比如 localhost 表示本机名称,实际应用时应该填写具体域名,比如 www.dog.com 或者 dog.com,当然如果该虚拟主机是给内部人员访问的,也可以直接填写服务器的 ip 地址,比如 192.168.1.10。
•autoDeploy:是否允许自动部署,默认值是 true,即表示 Tomcat 会自动检测 appBase 目录下面的文件变化从而自动应用到正在运行的 Web 应用程序。
•unpackWARs:设置是否自动展开 war 压缩包再运行 Web 应用程序,默认值是 true。
•appBase:设置 Web 应用程序组的路径。前面说过一个虚拟主机可以由多个 Web 应用程序构成,所以这里的 appBase 所指向的目录应该是准备用于存放这一组 Web 应用程序的目录,而不是具体某个 Web 应用程序的目录本身(即使该虚拟主机只由一个 Web 应用程序组成)。appBase 属性的值可以是相对于 Tomcat 安装目录的相对路径,也可以是绝对路径,需要注意的是该路径必须是 Tomcat 有权限访问的,通过 Arch Linux 源安装的 Tomcat 是通过 tomcat 用户运行的,因此创建一个新的 appBase 目录之后可以使用 chown 命令更改目录的所有者。
下面举例说明如何创建一个新的虚拟主机 www.dog.com:
在目录 /var/lib/tomcat6 下面可以看到安装 Tomcat 时默认创建的 webapps 目录,为了方便管理我们即将创建的虚拟主机的文档也在 /var/lib/tomcat6 里创建:
$ sudo mkdir dog
然后在 dog 目录里面创建目录 ROOT,再在 ROOT 里面创建文件 index.html(内容随便)。
现在将目录的所有者和所有组都更改为 tomcat:
$ sudo chown -R tomcat:tomcat dog
然后在 server.xml 的 Host 节点下增加如下 Host 节点:
<Host name="www.dog.com" appBase="/var/lib/tomcat6/dog">
</Host>
重启 Tomcat 服务就可以在浏览器里通过地址 http://www.dog.com 访问这个新创建的虚拟主机了,当然你必须要先在 /etc/hosts 文件里增加 www.dog.com 到 127.0.0.1 的解析记录,如下:
127.0.0.1 www.dog.com
有时一个虚拟主机可能会同时绑定多个域名,比如 www.dog.com 和 dog.com,这时可以通过在 Host 配置节点里增加 Alias 实现,比如:
<Alias>dog.com</Alias>
另外上面示例当中的 <Valve className=… /> 配置了访客的访问日志的储存位置以及文件名。
ENGINE 的配置
默认的 Engine 节点如下:
<Engine name="Catalina" defaultHost="localhost">
</Engine>
这个应该不用展开叙述了,其中 defaultHost 用于指定访客在没有相应的虚拟主机时,Tomcat 默认选择的虚拟主机的名称。考虑如下的情形:
假如有3个域名都 DNS 解析到你的服务器,比如 dog.com, www.dog.com, api.dog.com,当前你只配置了虚拟主机 dog.com 和 www.dog.com,那么当有个访客通过 api.dog.com 访问你的服务器时,Tomcat 就会依据 defaultHost 的设置返回其中一个虚拟主机运行的结果。实际应用中 defaultHost 应该设置为你的主力域名,比如 www.dog.com。
5、多站点的配置:设置多个HOST节点
有时我们需要在一台服务器上跑多个站点,通过 Tomcat 很容易实现这点,下面假设我们要搭建 www.dog.com 和 www.cat.com 这两个站点。
首先要确定你的两个域名的 DNS 已经能正确解析到你的服务器,因为这里我们是做实验,所以可以在本机添加域名解析。修改 /etc/hosts 文件,加入如下两行:
127.0.0.1 www.cat.com
127.0.0.1 www.dog.com
然后在 /var/lib/tomcat6 目录里分别创建名字为 cat 和 dog 的两个目录,然后在每个目录里都创建名字为 ROOT 的目录,并在 ROOT 里面创建名字为 index.html 文件(内容随便)。然后将目录 cat 和 dog 的所有者和所有组都更改为 tomcat,方法参考上一节,这里不再赘述。
现在编辑 Tomcat 的主配置文件 server.xml,在默认的 Host 节点下面再加入如下两个新的 Host 节点:
<Host name="www.dog.com" appBase="/var/lib/tomcat6/dog" autoDeploy="true" unpackWARs="true">
</Host>
<Host name="www.cat.com" appBase="/var/lib/tomcat6/cat" autoDeploy="true" unpackWARs="true">
</Host>
在 Host 节点里面可以根据上一节的说明加入自己需要的属性或者 Alias 和 Value 子节点。重启 Tomcat 服务,现在应该可以在浏览器里分别通过 http://www.dog.com 和 http://www.cat.com 浏览这两个站点了。
6、使用 NIO 连接器
默认的连接器并发性能不太好,如果网站的并发访问量不大则无所谓,或者在公司内部网这点可能体会不出来(因为在内部网可能每个请求在1秒钟之内就完成了),当环境换成 Internet 之后,可能每个客户请求在网络会几秒甚至几十秒的延时才传输完成,这样则会导致“许多访客同时连接”的现象,当 Tomcat 的连接器所有线程都被占用的情况下,后来者(访客)就会被卡在门外。因此我们最好在实际环境中把默认的连接器改成 NIO 连接器(non blocking Java connector)。方法很简单,只要把 Connector 节点的 protocol 属性值更改为 “org.apache.coyote.http11.Http11NioProtocol” 即可,例如原先的是这样:
<Connector port="80" protocol="HTTP/1.1"
redirectPort="443" />
修改为:
<Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol"
redirectPort="443" />
然后重启 Tomcat 服务器即可。
7、为网站添加 SSL 证书
有时网站可能涉及重要的业务数据,在互联网上传输这些页面最好以 https 方式传输,这样可以防止重要信息被中间环节窃取。
详细的方法可以参考我之前的一篇文章《添加 GoDaddy SSL 证书到你的网站》,文章介绍如何申请签名的 SSL 证书以及如何修改 Tomcat 的配置。如果你现在只是想试验一下为网站添加 https 功能,或者只是在公司的内部网站使用上 https,则可以使用一个简单的方法实现:使用自签名 SSL 证书。所谓自签名的 SSL 证书就是自己产生的证书,这种证书没有通过第三方证书商签名认证,所以在浏览这种网站时浏览器会提示证书错误,不过访客是完全可以继续浏览网站内容。
下面假设我们要为上一节的 www.dog.com 添加SSL证书。首先使用 Java 自带的 keytool 工具产生一个 keystore 文件(一种用于存放证书的文件格式),在自家目录执行如下命令:
$ keytool -keysize 2048 -genkey -alias tomcat -keyalg RSA -keystore tomcat.keystore
然后它会提示你设置一个密码以及输入DN信息:
Enter keystore password: 设置一个用于保护你keystore文件的密码,例如123456
Re-enter new password: 重复上面的密码
What is your first and last name?
[Unknown]: www.dog.com (就是域名啦)
What is the name of your organizational unit?
[Unknown]: Networking 组织单位名称(随便)
What is the name of your organization?
[Unknown]: dog.com 组织名称(随便)
What is the name of your City or Locality?
[Unknown]: Shenzhen 所在城市(随便)
What is the name of your State or Province?
[Unknown]: Guangdong 所在省份(随便)
What is the two-letter country code for this unit?
[Unknown]: CN 所在国家的两位代号(随便)
Is CN=www.dog.com, OU=Networking, O=dog.com, L=Shenzhen, ST=Guangdong, C=CN correct?
[no]: yes 以上信息正确则输入yes
Enter key password for
(RETURN if same as keystore password): 这一步直接敲回车
完成后会在当前目录产生一个 tomcat.keystore 文件。把这个文件复制到 dog 网站应用程序的根目录(即 /var/lib/tomcat6/dog):
$ sudo cp tomcat.keystore /var/lib/tomcat6/dog
然后修改 Tomcat 的主配置文件 server.xml,在默认的 Connector 节点之下添加如下的新 Connector 节点:
<Connector port="443" protocol="HTTP/1.1″
SSLEnabled="true"
scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/var/lib/tomcat6/dog/tomcat.keystore"
keystorePass="123456" />
假如你使用的是 NIO 连接器,则应该这样把 protocol 属性值换成 Http11NioProtocol,即:
<Connector port="443" protocol="Http11NioProtocol″
SSLEnabled="true"
scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/var/lib/tomcat6/dog/tomcat.keystore"
keystorePass="123456" />
重启 Tomcat 服务,用浏览器访问 https://www.dog.com,这时浏览器可能会提示证书错误,忽略它(对于 Firefox 浏览器还需要点击 “添加例外” 按钮才能忽略)即可以看到已经是 https 方式在浏览网页了。
8、使用 APR 高性能连接器
APR 即 Apache Portable Runtime,提供了 Apache Http 的高性能特性,下面普通连接器、NIO和APR的特性简单比较(摘自这里):
Java Blocking Connector Java Nio Blocking Connector APR Connector
Classname Http11Protocol Http11NioProtocol Http11AprProtocol
Tomcat Version 3.x 4.x 5.x 6.x 6.x 5.5.x 6.x
Support Polling NO YES YES
Polling Size N/A Unlimited - Restricted by mem Unlimited - Configurable
Read HTTP Request Blocking Non Blocking Blocking
Read HTTP Body Blocking Sim Blocking Blocking
Write HTTP Response Blocking Sim Blocking Blocking
SSL Support Java SSL Java SSL OpenSSL
SSL Handshake Blocking Non blocking Blocking
Max Connections maxThreads See polling size See polling size
Tomcat 文档在 NIO 和 APR 之间比较推荐后者,由于我没有实际环境(即大量从 internet 过来的访问)详细测试和比较,所以我也不太清楚两者相差多少。下面介绍使用 APR 的方法:
先安装 APR for Tomcat 的本地库和 OpenSSL(假如需要使用 SSL 证书并且系统还没安装的话),Arch Linux 的 local 源里面已经存在这两者,所以安装方法很简单:
$ sudo pacman -S tomcat-native
$ sudo pacman -S openssl
然后修改 Tomcat 的主配置文件 server.xml,把 Connector 的 protocol 属性值修改为“org.apache.coyote.http11.Http11AprProtocol”,修改后的配置大致如下:
<Connector port="80" protocol="org.apache.coyote.http11.Http11AprProtocol"
redirectPort="443" />
(注:保留 protocol=”HTTP/1.1″ 属性值也是可以的)
然后重启 Tomcat 服务即可,如何知道是否用上 APR 连接器呢?只要翻查 Tomcat 的日志文件就知道了,默认的日志文件为:/var/log/tomcat6/catalina.err:
$ sudo tail /var/log/tomcat6/catalina.err
如果在重启 Tomcat 服务后看到日志末尾处有出现下面红色字的内容,则表示已经成功用上 APR连接器了。
Feb 19, 2012 9:44:05 AM org.apache.coyote.http11.Http11AprProtocol start INFO: Starting Coyote HTTP/1.1 on http-80 Feb 19, 2012 9:44:05 AM org.apache.coyote.http11.Http11AprProtocol start INFO: Starting Coyote HTTP/1.1 on http-443 Feb 19, 2012 9:44:05 AM org.apache.catalina.startup.Catalina start INFO: Server startup in 1281 ms
如果你使用了 APR 连接器同时又需要添加 SSL 证书(即需要 https 访问功能),则需要使用 OpenSSL 的方法产生加密私钥并且修改一下相应的 Connector 的配置,仍然以上面第7节的例子,即为 www.dog.com 站点添加 SSL 证书来讲解。
先用 OpenSSL 产生私钥以及自签名,在自家目录下执行下面命令:
# Generate private key
$ openssl genrsa -out ca.key 1024
# Generate CSR
$ openssl req -new -key ca.key -out ca.csr
# Generate Self Signed Key
$ openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
同上面第7节类似,中途也会要求你输入 DN 信息,完成后把 ca.crt 和 ca.key 文件复制到 dog 站点应用程序的根目录:
$ sudo cp ca.crt /var/lib/tomcat6/dog
$ sudo cp ca.key /var/lib/tomcat6/dog
然后修改 Connector 节点为如下:
<Connector port="443" SSLEnabled="true"
scheme="https" secure="true"
SSLCertificateFile="/var/lib/tomcat6/dog/ca.crt"
SSLCertificateKeyFile="/var/lib/tomcat6/dog/ca.key"/>
重启 Tomcat 服务之后生效。
1、安装 Java JDK
在 Arch Linux 的 extra 源里有 jdk7-openjdk 和 openjdk6,可以直接使用 pacman 安装,至于选用哪一个可以视具体情况而定。我安装的是 OpenJDK 7:
$ sudo pacman -S jdk7-openjdk
2、安装 Tomcat
同样地,extra 源里已有 tomcat 版本5、6、7,可以根据具体情况而定,我这里安装的是tomcat 6。
$ sudo pacman -S tomcat6
默认情况 tomcat 6 安装路径为 /usr/share/tomcat6,这里罗列一下主要目录的作用(箭头表示目录链接的实际位置):
•/usr/share/tomcat6: 程序主目录,也是变量 $CATALINA_HOME 所指向的位置,在单 tomcat 实例的情况下,也是变量 $CATALINA_BASE 所指向的位置。
•conf -> /etc/tomcat6: 配置文件目录。
•lib -> /usr/share/java/tomcat6: 共享jar包目录,这些包既给 tomcat 所使用,也能给 web 应用程序所引用。
•logs -> /var/log/tomcat6: 日志目录,对于查找错误以及查看访问记录很有帮助。
•webapps -> /var/lib/tomcat6/webapps: 默认的 web 应用程序目录,tomcat 6 自带了几个示例程序,下面会介绍。
现在可以尝试启动 tomcat 服务:
$ sudo /etc/rc.d/tomcat start
根据安装的 Java 运行时的不同,启动时可能有错误,检查启动脚本的配置文件 /etc/conf.d/tomcat6 里面的 TOMCAT_JAVA_HOME 变量的值,在我的安装中 Java 运行时应该在 /opt/java 里(用 $ which java 就可以看到了),因此将:
TOMCAT_JAVA_HOME=/usr/lib/jvm/java-7-openjdk 更改为如下即可: TOMCAT_JAVA_HOME=/opt/java
重启 tomcat 服务:
$ sudo /etc/rc.d/tomcat6 restart
一般应该没有问题,打开任意浏览器并在地址栏里输入 “http://localhost:8080″,如果看到 tomcat 猫即说明服务已经安装妥当并且能正常运行了。
3、认识 webapps 目录
这个目录位于 tomcat6 的安装目录之下,实际内容位于 /var/lib/tomcat6/webapps。 webapps 目录里每一个目录对应一个web应用程序,比如 docs 目录的访问地址是 http://localhost:8080/docs,同理 manager 目录的访问地址是 http://localhost:8080/manager,其中比较特殊的是 ROOT 目录,它对应的访问地址恰好是网站的根目录,即 http://localhost:8080/。
Tomcat 附带的示例程序可以逐个访问体验一下,其中 manager 和 host-manager 这两个应用程序设置了需要登录验证才能访问,增加登录用户的方法是编辑 Tomcat 安装目录下的配置文件 conf/tomcat-users.xml (实际上也是文件 /etc/tomcat6/tomcat-users.xml),添加如下几行:
<role rolename="manager-gui"/>
<role rolename="admin-script"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-script,admin-gui"/>
然后重启 Tomcat 服务,即可以通过用户名 tomcat 和密码 tomcat 登录并访问 manager 和 host-manager 两个应用程序。
每个 Java Web 应用程序都有如下的目录结构:
•/index.html 访客直接访问的资源,比如静态图片和CSS样式表。
•/WEB-INF/ 访客不能直接访问的资源。
•/WEB-INF/classes 应用程序的 Java 源码编译后的class文件。
•/WEB-INF/web.xml 应用程序的配置文件。
•/WEB-INF/lib 应用程序所引用的包。
当然也不是所有都是必须的,你甚至可以创建一个目录,比如“hello”,然后在里面只创建一个 index.html 文件(内容随便),即可以通过 http://localhost:8080/hello/index.html 访问了。(当然这样的不是Web应用程序,此方法仅用于测试用)
下面使用 Apache Maven 创建一个最简单的 Web 应用程序,在用户目录里执行如下命令创建 Web 应用程序的骨架:
$ mvn archetype:generate
在交互界面中,
Choose a number or apply filter: 输入 174,即创建 maven-archetype-webapp 类型项目。 Choose version: 输入5,即版本 1.0。 Define value for property ‘groupId’: 输入 org.test。 Define value for property ‘artifactId’: 输入 demo。 Define value for property ‘version’: 输入 1.0。 Define value for property ‘package’: 输入 org.test.demo Confirm properties configuration: 直接回车
上面涉及 Maven 知识不在此文的讨论范围,如果不熟悉的话可以参阅免费的中文电子图书《Maven in action》,顺带提一下,Maven 是Java项目构建和管理的最常用工具之一。
现在应该看到一个名为 demo 的目录,进入后可以使用 Maven 打包项目:
$ cd demo
$ mvn package
打包的结果是文件 ./target/demo.war,把这个文件复制到 webapps 目录:
$ sudo cp target/demo.war /var/lib/tomcat6/webapps/
由于 Tomcat 默认创建的站点会自动部署应用程序,所以刚才复制到 webapps 目录的文件 demo.war 会被自动解压缩,检视 webapps 目录应该会发现多出一个名字为 demo 的目录,现在可以在浏览器里尝试访问 http://localhost:8080/demo,应该看到 “Hello World!”字样,这就是刚才用 Maven 创建的 Web 应用程序运行的结果。
需要说明的是,java web 应用程序打包之后所形成的 war 文件并不是一定要解压出来才能运行的,这点将会在下一节的配置里会讲到。
4、认识 Tomcat 的主配置文件 server.xml
这个文件位于 tomcat 6 安装目录之下的 conf 目录之内,实际内容位于 /etc/tomcat6/server.xml。
正如该文件的扩展名所示,这是一个 xml 格式的文件,打开之后将会看到如下的结构:
<Server port="8005" shutdown="SHUTDOWN">
<Service name="Catalina">
<Executor ...... />
<Connector ...... />
<Connector ...... />
<Engine name="Catalina" ... >
<Host name="localhost" ... >
<Context ... />
</Host>
</Engine>
</Service>
</Server>
即一个由 Server->Service->Engine->Host->Context 组成的四层结构,从里层向外层分别是:
•Context: 即 Web 应用程序,一个 Context 即对于一个 Web 应用程序。
•Host:即虚拟主机,比如 www.dog.com 对应一个虚拟主机,api.dog.com 对于另一个虚拟主机。一个 Host 用于定义一个虚拟主机。(所谓的”一个虚拟主机”可简单理解为”一个网站”)
•Engine:一组虚拟主机的集合。比如www.dog.com 和 api.dog.com 可以组成一组虚拟主机集合。
•Service:一组 Engine 的集合,包括线程池 Executor 和连接器 Connector 的定义。
CONNECTOR 的配置
一个 Connector 即一个对外界开放的端口,简单理解就是大部分网络服务程序都会遇到的 IpAddress:Port 的组合,比如 192.168.0.10:8080 就是一个端口,当然在 Connector 里可以定义的内容要丰富得多,即 Connector 这个 XML 节点里可以加上许多属性。下面列举一下常用的:
•enableLookups:(default=true) 是否允许反向解析访客的IP地址,当你的应用程序使用 request.getRemoteHost() 时如果只需要IP地址,建议禁用此项,这样能节省反向域名解析的时间。
•maxPostSize:(default=2097152 即2MB) 最大允许 POST 上传的数据大小(单位为:字节),对于一般网站来说,比如有写评论写文章的网站,默认的2MB已经足够,不过如果网站带有图片甚至文件上传功能,则需要根据具体情况来定。
•protocol:连接器的类型,tomcat 6 有如下几种选择 •org.apache.coyote.http11.Http11Protocol:简写为 “HTTP/1.1″,这是默认的连接器,一个访客网络连接需要一个线程,并发性能比较低。
•org.apache.coyote.http11.Http11NioProtocol:NIO连接器,一个由非阻塞的socket工作模式构成的连接器,并发性能良好,纯Java实现。
•org.apache.coyote.http11.Http11AprProtocol:APR连接器,所谓 APR 就是网络上最多服务器使用的 Web 服务程序 Apache Http Server 所使用的库,Tomcat 建议在生产环境使用,具体方法下面会介绍。
•redirectPort:当用户访问非https的资源而该资源又需要https方式访问时,tomcat会自动重定向到https端口,一般https使用 TCP 443端口,所以一般取值”443″。
•SSLEnabled:(default=false),设置当前连接器是否使用安全SSL传输,如果设置为”true”,则应该同时设置下面两个属性: scheme=”https” (default=http) 可以设置为 http 或者 https。 secure=”true” (default=false)。
•adress:连接器所绑定的IP地址,当一台服务器存在多个ip地址时可以指定其中的需要绑定的一个,默认不设置该属性的值表示绑定当前服务器的所有ip地址。
•compressableMimeType:(default=”text/html,text/xml,text/plain”) 指定需要GZIP压缩的资源的类型。
•compression:(default=off) 是否启用GZIP压缩,可以取值 on/off/force,设置为on之后会对 compressableMimeType 属性指定的资源类型启用GZIP压缩。
•connectionTimeout:(default=”60000″) 当访客网络连接后,服务器等待第一行Request头出现的时间。单位是毫秒。
•executor:指定当前连接器使用的线程池的名称,如果指定,则忽略其他针对线程数量的设置,比如 maxThreads。
•maxThreads:(default=200) 最多可创建线程的数量。
•port=”80″:绑定端口。
•keepAliveTimeout:(default=connectionTimeout),访客完成一次请求后维持网络连接的时间。
一个简单的 Connector 定义如下:
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="60000"
redirectPort="443" />
EXECUTOR 的配置
Executor 用于定义共享的线程池。默认情况下每个 Connector 都会产生自己的一个线程池,如果你想多个 Connector 共享一个线程池,则可以先定义一个线程池,如:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="4"/>
然后修改上述的 Connector 配置,增加 executor 属性,修改后的配置如下:
<Connector executor="tomcatThreadPool"
port="80" protocol="HTTP/1.1"
connectionTimeout="60000"
redirectPort="443" />
HOST 的配置
一个 Host 配置即为一个虚拟主机,例如下面是一个简单的 Host 配置:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Alias>dog.com</Alias>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
</Host>
Host 配置节点各个属性的作用:
•name:设置虚拟主机的域名,比如 localhost 表示本机名称,实际应用时应该填写具体域名,比如 www.dog.com 或者 dog.com,当然如果该虚拟主机是给内部人员访问的,也可以直接填写服务器的 ip 地址,比如 192.168.1.10。
•autoDeploy:是否允许自动部署,默认值是 true,即表示 Tomcat 会自动检测 appBase 目录下面的文件变化从而自动应用到正在运行的 Web 应用程序。
•unpackWARs:设置是否自动展开 war 压缩包再运行 Web 应用程序,默认值是 true。
•appBase:设置 Web 应用程序组的路径。前面说过一个虚拟主机可以由多个 Web 应用程序构成,所以这里的 appBase 所指向的目录应该是准备用于存放这一组 Web 应用程序的目录,而不是具体某个 Web 应用程序的目录本身(即使该虚拟主机只由一个 Web 应用程序组成)。appBase 属性的值可以是相对于 Tomcat 安装目录的相对路径,也可以是绝对路径,需要注意的是该路径必须是 Tomcat 有权限访问的,通过 Arch Linux 源安装的 Tomcat 是通过 tomcat 用户运行的,因此创建一个新的 appBase 目录之后可以使用 chown 命令更改目录的所有者。
下面举例说明如何创建一个新的虚拟主机 www.dog.com:
在目录 /var/lib/tomcat6 下面可以看到安装 Tomcat 时默认创建的 webapps 目录,为了方便管理我们即将创建的虚拟主机的文档也在 /var/lib/tomcat6 里创建:
$ sudo mkdir dog
然后在 dog 目录里面创建目录 ROOT,再在 ROOT 里面创建文件 index.html(内容随便)。
现在将目录的所有者和所有组都更改为 tomcat:
$ sudo chown -R tomcat:tomcat dog
然后在 server.xml 的 Host 节点下增加如下 Host 节点:
<Host name="www.dog.com" appBase="/var/lib/tomcat6/dog">
</Host>
重启 Tomcat 服务就可以在浏览器里通过地址 http://www.dog.com 访问这个新创建的虚拟主机了,当然你必须要先在 /etc/hosts 文件里增加 www.dog.com 到 127.0.0.1 的解析记录,如下:
127.0.0.1 www.dog.com
有时一个虚拟主机可能会同时绑定多个域名,比如 www.dog.com 和 dog.com,这时可以通过在 Host 配置节点里增加 Alias 实现,比如:
<Alias>dog.com</Alias>
另外上面示例当中的 <Valve className=… /> 配置了访客的访问日志的储存位置以及文件名。
ENGINE 的配置
默认的 Engine 节点如下:
<Engine name="Catalina" defaultHost="localhost">
</Engine>
这个应该不用展开叙述了,其中 defaultHost 用于指定访客在没有相应的虚拟主机时,Tomcat 默认选择的虚拟主机的名称。考虑如下的情形:
假如有3个域名都 DNS 解析到你的服务器,比如 dog.com, www.dog.com, api.dog.com,当前你只配置了虚拟主机 dog.com 和 www.dog.com,那么当有个访客通过 api.dog.com 访问你的服务器时,Tomcat 就会依据 defaultHost 的设置返回其中一个虚拟主机运行的结果。实际应用中 defaultHost 应该设置为你的主力域名,比如 www.dog.com。
5、多站点的配置:设置多个HOST节点
有时我们需要在一台服务器上跑多个站点,通过 Tomcat 很容易实现这点,下面假设我们要搭建 www.dog.com 和 www.cat.com 这两个站点。
首先要确定你的两个域名的 DNS 已经能正确解析到你的服务器,因为这里我们是做实验,所以可以在本机添加域名解析。修改 /etc/hosts 文件,加入如下两行:
127.0.0.1 www.cat.com
127.0.0.1 www.dog.com
然后在 /var/lib/tomcat6 目录里分别创建名字为 cat 和 dog 的两个目录,然后在每个目录里都创建名字为 ROOT 的目录,并在 ROOT 里面创建名字为 index.html 文件(内容随便)。然后将目录 cat 和 dog 的所有者和所有组都更改为 tomcat,方法参考上一节,这里不再赘述。
现在编辑 Tomcat 的主配置文件 server.xml,在默认的 Host 节点下面再加入如下两个新的 Host 节点:
<Host name="www.dog.com" appBase="/var/lib/tomcat6/dog" autoDeploy="true" unpackWARs="true">
</Host>
<Host name="www.cat.com" appBase="/var/lib/tomcat6/cat" autoDeploy="true" unpackWARs="true">
</Host>
在 Host 节点里面可以根据上一节的说明加入自己需要的属性或者 Alias 和 Value 子节点。重启 Tomcat 服务,现在应该可以在浏览器里分别通过 http://www.dog.com 和 http://www.cat.com 浏览这两个站点了。
6、使用 NIO 连接器
默认的连接器并发性能不太好,如果网站的并发访问量不大则无所谓,或者在公司内部网这点可能体会不出来(因为在内部网可能每个请求在1秒钟之内就完成了),当环境换成 Internet 之后,可能每个客户请求在网络会几秒甚至几十秒的延时才传输完成,这样则会导致“许多访客同时连接”的现象,当 Tomcat 的连接器所有线程都被占用的情况下,后来者(访客)就会被卡在门外。因此我们最好在实际环境中把默认的连接器改成 NIO 连接器(non blocking Java connector)。方法很简单,只要把 Connector 节点的 protocol 属性值更改为 “org.apache.coyote.http11.Http11NioProtocol” 即可,例如原先的是这样:
<Connector port="80" protocol="HTTP/1.1"
redirectPort="443" />
修改为:
<Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol"
redirectPort="443" />
然后重启 Tomcat 服务器即可。
7、为网站添加 SSL 证书
有时网站可能涉及重要的业务数据,在互联网上传输这些页面最好以 https 方式传输,这样可以防止重要信息被中间环节窃取。
详细的方法可以参考我之前的一篇文章《添加 GoDaddy SSL 证书到你的网站》,文章介绍如何申请签名的 SSL 证书以及如何修改 Tomcat 的配置。如果你现在只是想试验一下为网站添加 https 功能,或者只是在公司的内部网站使用上 https,则可以使用一个简单的方法实现:使用自签名 SSL 证书。所谓自签名的 SSL 证书就是自己产生的证书,这种证书没有通过第三方证书商签名认证,所以在浏览这种网站时浏览器会提示证书错误,不过访客是完全可以继续浏览网站内容。
下面假设我们要为上一节的 www.dog.com 添加SSL证书。首先使用 Java 自带的 keytool 工具产生一个 keystore 文件(一种用于存放证书的文件格式),在自家目录执行如下命令:
$ keytool -keysize 2048 -genkey -alias tomcat -keyalg RSA -keystore tomcat.keystore
然后它会提示你设置一个密码以及输入DN信息:
Enter keystore password: 设置一个用于保护你keystore文件的密码,例如123456
Re-enter new password: 重复上面的密码
What is your first and last name?
[Unknown]: www.dog.com (就是域名啦)
What is the name of your organizational unit?
[Unknown]: Networking 组织单位名称(随便)
What is the name of your organization?
[Unknown]: dog.com 组织名称(随便)
What is the name of your City or Locality?
[Unknown]: Shenzhen 所在城市(随便)
What is the name of your State or Province?
[Unknown]: Guangdong 所在省份(随便)
What is the two-letter country code for this unit?
[Unknown]: CN 所在国家的两位代号(随便)
Is CN=www.dog.com, OU=Networking, O=dog.com, L=Shenzhen, ST=Guangdong, C=CN correct?
[no]: yes 以上信息正确则输入yes
Enter key password for
(RETURN if same as keystore password): 这一步直接敲回车
完成后会在当前目录产生一个 tomcat.keystore 文件。把这个文件复制到 dog 网站应用程序的根目录(即 /var/lib/tomcat6/dog):
$ sudo cp tomcat.keystore /var/lib/tomcat6/dog
然后修改 Tomcat 的主配置文件 server.xml,在默认的 Connector 节点之下添加如下的新 Connector 节点:
<Connector port="443" protocol="HTTP/1.1″
SSLEnabled="true"
scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/var/lib/tomcat6/dog/tomcat.keystore"
keystorePass="123456" />
假如你使用的是 NIO 连接器,则应该这样把 protocol 属性值换成 Http11NioProtocol,即:
<Connector port="443" protocol="Http11NioProtocol″
SSLEnabled="true"
scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/var/lib/tomcat6/dog/tomcat.keystore"
keystorePass="123456" />
重启 Tomcat 服务,用浏览器访问 https://www.dog.com,这时浏览器可能会提示证书错误,忽略它(对于 Firefox 浏览器还需要点击 “添加例外” 按钮才能忽略)即可以看到已经是 https 方式在浏览网页了。
8、使用 APR 高性能连接器
APR 即 Apache Portable Runtime,提供了 Apache Http 的高性能特性,下面普通连接器、NIO和APR的特性简单比较(摘自这里):
Java Blocking Connector Java Nio Blocking Connector APR Connector
Classname Http11Protocol Http11NioProtocol Http11AprProtocol
Tomcat Version 3.x 4.x 5.x 6.x 6.x 5.5.x 6.x
Support Polling NO YES YES
Polling Size N/A Unlimited - Restricted by mem Unlimited - Configurable
Read HTTP Request Blocking Non Blocking Blocking
Read HTTP Body Blocking Sim Blocking Blocking
Write HTTP Response Blocking Sim Blocking Blocking
SSL Support Java SSL Java SSL OpenSSL
SSL Handshake Blocking Non blocking Blocking
Max Connections maxThreads See polling size See polling size
Tomcat 文档在 NIO 和 APR 之间比较推荐后者,由于我没有实际环境(即大量从 internet 过来的访问)详细测试和比较,所以我也不太清楚两者相差多少。下面介绍使用 APR 的方法:
先安装 APR for Tomcat 的本地库和 OpenSSL(假如需要使用 SSL 证书并且系统还没安装的话),Arch Linux 的 local 源里面已经存在这两者,所以安装方法很简单:
$ sudo pacman -S tomcat-native
$ sudo pacman -S openssl
然后修改 Tomcat 的主配置文件 server.xml,把 Connector 的 protocol 属性值修改为“org.apache.coyote.http11.Http11AprProtocol”,修改后的配置大致如下:
<Connector port="80" protocol="org.apache.coyote.http11.Http11AprProtocol"
redirectPort="443" />
(注:保留 protocol=”HTTP/1.1″ 属性值也是可以的)
然后重启 Tomcat 服务即可,如何知道是否用上 APR 连接器呢?只要翻查 Tomcat 的日志文件就知道了,默认的日志文件为:/var/log/tomcat6/catalina.err:
$ sudo tail /var/log/tomcat6/catalina.err
如果在重启 Tomcat 服务后看到日志末尾处有出现下面红色字的内容,则表示已经成功用上 APR连接器了。
Feb 19, 2012 9:44:05 AM org.apache.coyote.http11.Http11AprProtocol start INFO: Starting Coyote HTTP/1.1 on http-80 Feb 19, 2012 9:44:05 AM org.apache.coyote.http11.Http11AprProtocol start INFO: Starting Coyote HTTP/1.1 on http-443 Feb 19, 2012 9:44:05 AM org.apache.catalina.startup.Catalina start INFO: Server startup in 1281 ms
如果你使用了 APR 连接器同时又需要添加 SSL 证书(即需要 https 访问功能),则需要使用 OpenSSL 的方法产生加密私钥并且修改一下相应的 Connector 的配置,仍然以上面第7节的例子,即为 www.dog.com 站点添加 SSL 证书来讲解。
先用 OpenSSL 产生私钥以及自签名,在自家目录下执行下面命令:
# Generate private key
$ openssl genrsa -out ca.key 1024
# Generate CSR
$ openssl req -new -key ca.key -out ca.csr
# Generate Self Signed Key
$ openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
同上面第7节类似,中途也会要求你输入 DN 信息,完成后把 ca.crt 和 ca.key 文件复制到 dog 站点应用程序的根目录:
$ sudo cp ca.crt /var/lib/tomcat6/dog
$ sudo cp ca.key /var/lib/tomcat6/dog
然后修改 Connector 节点为如下:
<Connector port="443" SSLEnabled="true"
scheme="https" secure="true"
SSLCertificateFile="/var/lib/tomcat6/dog/ca.crt"
SSLCertificateKeyFile="/var/lib/tomcat6/dog/ca.key"/>
重启 Tomcat 服务之后生效。
发表评论
-
20180222积累
2018-02-22 09:34 4781. mybatis如何通过接口查找对应的mapper. ... -
20180208积累
2018-02-08 10:28 465临时表与永久表相似,但临时表存储在 tempdb 中,当不 ... -
行业应用
2018-01-30 16:30 485git clone的时候用上面那个IP地址,下面栏中的不能 ... -
SQLite 数据库
2018-01-29 22:57 755android: SQLite创建数据 ... -
java里面获取map的key和value的方法
2018-02-01 11:29 2159获取map的key和value的方法分为两种形式: ma ... -
Eclipse中Maven WEB工程tomcat项目添加调试以及项目发布细节记录
2018-02-23 21:11 725一、建立一个maven WEB项目 1、file-&g ... -
错误:HttpServlet was not found on the Java
2018-02-23 21:12 382我们在用Eclipse进行Java web ... -
使用 java8 实现List到Array的转换
2018-02-23 21:13 2988开发中需要调用第三方的库,有些 API 的入参要求是 do ... -
Java8 利用Lambda处理List集合
2018-01-11 09:58 5630Java 8新增的Lambda表达式,我们可以很方便地并行操 ... -
java中string与json互相转化
2018-01-11 09:40 1076在Java中socket传输数据时,数据类型往往比较难选择。 ... -
JSON 数据格式
2018-01-11 09:37 474JSON(JavaScript Object Notatio ... -
java怎么读取json格式的数据
2018-01-11 09:46 1059java可以使用JSONObject和JSONArray来操作 ... -
Java8-如何将List转变为逗号分隔的字符串
2018-01-10 10:13 1988Converting a List to a String ... -
eclipse maven 打war包的两种方式
2018-02-23 21:25 703第一种:利用pom.xml文件打包。 右键pom.xml ... -
Annotation(三)——Spring注解开发
2018-02-28 09:21 428Spring框架的核心功能IoC(Inversion o ... -
Spring自定义注解
2018-02-28 09:32 594java注解:附在代码中的一些元信息,用于在编译、运行时起 ... -
Java项目
2018-01-08 10:56 0这两种解决办法已经能完全解决问题,不过值得注意的一点是,我 ... -
解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
2018-03-22 10:41 1130在Eclipse中建立好一个Maven项目后,如果Java ... -
Java @override报错的解决方法
2018-01-07 12:56 0有时候Java的Eclipse工程换一台电脑后编译总是@ove ... -
Java 8 配置Maven-javadoc-plugin
2018-01-07 09:07 1040在升级JDK至1.8之后,使用Maven-javadoc- ...
相关推荐
在 IDEA 中创建 Maven 项目时,可能会遇到 Tomcat 配置错误的问题,本文将详细介绍 Tomcat 配置遇到的错误、错误原因、解决方案,并讨论 Maven 项目的创建、版本选择、Maven 的 Tomcat 配置等相关知识点。...
解决 Tomcat 配置 SSL 错误的解决办法 在 Tomcat 服务器中配置 SSL 加密连接是非常重要的,然而在 Tomcat 6.0.33 版本中,默认启用了 APR(APR 是通过 JNI 访问的可移植库,可以提高 Tomcat 的性能和伸缩性),这...
4. **修改Tomcat配置**: - 打开Tomcat的`conf/server.xml`配置文件。 - 在`<Connector>`标签中添加HTTPS配置,设置端口、Keystore文件路径、别名和密码等信息。 - 示例配置: ```xml SSLEnabled="true" ...
下面将详细解释如何使用Tomcat配置域名。 首先,我们需要理解域名配置的基本概念。域名是互联网上识别服务器的唯一标识,如www.example.com。在Tomcat中,通过Server.xml文件配置虚拟主机(Virtual Host),实现一...
### Tomcat配置入门与配置多个项目详解 #### Tomcat简介 Tomcat是一个开源的轻量级Web应用服务器,因其小巧灵活、易于部署等特点被广泛应用于Java Web应用的开发与测试阶段。它支持Servlet和JSP等Java Web技术,...
本教程将深入探讨Tomcat的配置,特别是数据源配置以及基础的Tomcat配置,帮助你更好地理解和管理服务器环境。 一、Tomcat配置基础 1. **环境变量设置**:首先,确保你的系统中安装了Java,并设置了JAVA_HOME环境...
一台服务器多个 Tomcat 配置 在一台服务器上配置多个 Tomcat 服务器时,往往会碰到冲突。为了避免这些冲突,需要修改 Tomcat 配置文件。下面是详细的配置过程: 一、下载和解压 Tomcat 首先,需要下载 Tomcat 的...
Tomcat 配置及使用 Tomcat 是一个开源的 Java servlet 容器,提供了强大的 Web 服务器功能。在本文中,我们将详细介绍 Tomcat 的配置及使用,包括启动、关闭、配置端口、虚拟主机配置等。 一、启动和关闭 Tomcat ...
tomcat配置只能域名访问禁止ip访问 直接替换tomcat里面的server.xml 文件,但是里面的ip要更换你自己的ip
本文将深入探讨Tomcat的配置方法,帮助你更好地理解和管理你的Web应用。 首先,让我们从基础开始,了解Tomcat的目录结构。在解压Tomcat安装包后,你会看到几个主要的目录和文件: 1. **bin**:包含启动和停止...
### Tomcat配置详解 #### 一、概述 Tomcat是一款开源的Servlet容器,它能够作为Web服务器独立运行,也可以与Apache等其他Web服务器配合使用。本文将详细介绍如何配置Tomcat的相关环境变量及其路径设置,帮助读者更...
Linux下的Apache Tomcat配置是一个关键任务,特别是在搭建Java Web应用服务器时。Apache Tomcat是一款开源的Servlet容器,它实现了Java Servlet和JavaServer Pages (JSP) 规范,是部署Java应用程序的重要工具。以下...
文件“tomcat如何配置环境变量.doc”应该包含了更详细的步骤和可能遇到的问题解决方案,建议初学者详细阅读并按照文档中的指导进行操作,以确保Tomcat配置的正确无误。在实际操作中,如果遇到问题,可以查阅官方文档...
以下是对Apache和Tomcat配置的详细总结: 1. **Apache与Tomcat集群的三种方式**: - **JK模垰**:通过mod_jk模块连接Apache和Tomcat,提供高效的数据传输和负载均衡。 - **HTTP代理**:Apache作为反向代理服务器...
总结来说,"tomcat集群-Apache2.2.4+And+mod_jk.so+tomcat配置文件"的配置涉及到多个步骤,包括Apache和Tomcat的安装、mod_jk模块的集成、配置文件的修改以及负载均衡策略的设定。这个过程对于构建高可用、高性能的...
【标题】:“Tomcat配置项目发布” 在Java Web开发中,Tomcat是一个广泛使用的开源应用服务器,主要用于运行Servlet和JSP应用。配置Tomcat来发布项目是开发者日常工作中不可或缺的一部分。下面将详细介绍如何配置...
tomcat配置自身错误页面,直接替换tomcat本身的root文件夹即可。然后修改web.xml,具体方式详见:https://blog.csdn.net/f552126367/article/details/107999676
资源名称:tomcat配置文件详解 资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
在Windows环境下,无论是32位还是64位操作系统,都需要适配对应的Tomcat配置文件来确保其正常运行。 在配置Tomcat时,有几个关键的文件和目录需要注意: 1. **bin目录**:包含了启动和停止Tomcat的脚本,如`...
tomcat虚拟路径配置,tomcat配置虚拟路径,简短代码,一目了然