个人网站 百度收录,手机编程软件app下载,南通网站建,微信网站建设多少钱1. Tomcat简介Tomcat是Apache软件基金会#xff08;Apache Software Foundation#xff09;的Jakarta 项目中的一个核心项目#xff0c;由Apache、Sun和其他一些公司及个人共同开发而成。Tomcat服务器是一个免费的开放源代码的Web应用服务器#xff0c;属于轻量级应用服务器… 1. Tomcat简介Tomcat是Apache软件基金会Apache Software Foundation的Jakarta 项目中的一个核心项目由Apache、Sun和其他一些公司及个人共同开发而成。Tomcat服务器是一个免费的开放源代码的Web应用服务器属于轻量级应用服务器在中小型系统和并发访问用户不是很多的场合下被普遍使用是开发和调试JSP程序的首选。Tomcat和Nginx、Apache(httpd)、lighttpd等Web服务器一样具有处理HTML页面的功能另外它还是一个Servlet和JSP容器独立的Servlet容器是Tomcat的默认模式。不过Tomcat处理静态HTML的能力不如Nginx/Apache服务器。对比php软件区别目前Tomcat最新版本为9.0。Java容器还有resin、weblogic等。2. Tomcat安装2.1 软件准备JDK下载http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Tomcat下载http://tomcat.apache.org/因为jdk和Tomcat的版本对运维来说没什么区别提供本文使用的软件下载地址http://pan.baidu.com/s/1IpioA2.2 部署java环境[roottomcat ~]# cd /application/tools/
[roottomcat tools]# rz (如果提示没有此命令yum -y install lrzsz)
rz waiting to receive.
Starting zmodem transfer. Press CtrlC to cancel.
Transferring apache-tomcat-8.0.27.tar.gz...100% 8914 KB 8914 KB/sec 00:00:01 0 Errors
Transferring jdk-8u60-linux-x64.tar.gz...100% 176990 KB 14749 KB/sec 00:00:12 0 Errors
[roottomcat tools]# tar zxf jdk-8u60-linux-x64.tar.gz -C /application/
[roottomcat tools]# ln -s /application/jdk1.8.0_60 /application/jdk
[roottomcat tools]# sed -i $a export JAVA_HOME/application/jdk\nexport PATH$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar /etc/profile
[roottomcat tools]# tail -3 /etc/profile
export JAVA_HOME/application/jdk
export PATH$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
[roottomcat tools]# source /etc/profile (使配置文件生效)
#→出现下面结果证明部署成功
[roottomcat ~]# java -version
java version 1.8.0_60
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)上面有一个sed命令的特殊用法欲知详情→http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html2.3 安装Tomcat[roottomcat tools]# tar zxf apache-tomcat-8.0.27.tar.gz -C /application/
[roottomcat tools]# ln -s /application/apache-tomcat-8.0.27 /application/tomcat
[roottomcat tools]# echo export TOMCAT_HOME/application/tomcat/etc/profile
[roottomcat tools]# tail -1 /etc/profile
export TOMCAT_HOME/application/tomcat
[roottomcat tools]# source /etc/profile
[roottomcat tools]# chown -R root.root /application/jdk/ /application/tomcat/
[roottomcat ~]# tail -4 /etc/profile
export JAVA_HOME/application/jdk
export PATH$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export TOMCAT_HOME/application/tomcat2.4 Tomcat目录介绍[roottomcat ~]# cd /application/tomcat/
[roottomcat tomcat]# tree -L 1
.
├── bin #→用以启动、关闭Tomcat或其它功能的脚本(.bat文件和.sh文件分别为windows和linux环境执行文件)
├── conf #→用以配置Tomcat的XML及DTD文件
├── lib #→存放web应用能访问的JAR包
├── LICENSE
├── logs #→Catalina和其它Web应用程序的日志文件
├── NOTICE
├── RELEASE-NOTES
├── RUNNING.txt
├── temp #→临时文件
├── webapps #→Web应用程序根目录
└── work #→用以产生有JSP编译出的Servlet的.java和.class文件
7 directories, 4 files
[roottomcat tomcat]# cd webapps/
[roottomcat webapps]# ll
total 20
drwxr-xr-x 14 root root 4096 Oct 5 12:09 docs #→tomcat帮助文档
drwxr-xr-x 6 root root 4096 Oct 5 12:09 examples #→web应用实例
drwxr-xr-x 5 root root 4096 Oct 5 12:09 host-manager #→管理
drwxr-xr-x 5 root root 4096 Oct 5 12:09 manager #→管理
drwxr-xr-x 3 root root 4096 Oct 5 12:09 ROOT #→默认网站根目录(也就是咱们看到的那只猫的网站)2.5 启动Tomcat#→启动程序/application/tomcat/bin/startup.sh
#→关闭程序/application/tomcat/bin/shutdown.sh
[roottomcat ~]# /application/tomcat/bin/startup.sh
Using CATALINA_BASE: /application/tomcat
Using CATALINA_HOME: /application/tomcat
Using CATALINA_TMPDIR: /application/tomcat/temp
Using JRE_HOME: /application/jdk
Using CLASSPATH: /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar
Tomcat started.
[roottomcat ~]# netstat -tunlp|grep java
tcp 0 0 :::8009 :::* LISTEN 4743/java
tcp 0 0 :::8080 :::* LISTEN 4743/java
[roottomcat ~]# ps -ef|grep [j]ava
root 4743 1 17 06:10 pts/0 00:00:03 /application/jdk/bin/java
-Djava.util.logging.config.file/application/tomcat/conf/logging.properties
-Djava.util.logging.managerorg.apache.juli.ClassLoaderLogManager
-Djava.endorsed.dirs/application/tomcat/endorsed
-classpath /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar
-Dcatalina.base/application/tomcat -Dcatalina.home/application/tomcat
-Djava.io.tmpdir/application/tomcat/temp org.apache.catalina.startup.Bootstrap start2.6 访问网站网址http://10.0.0.3:8080/2.7 Tomcat日志[roottomcat ~]# cd /application/tomcat/logs/
[roottomcat logs]# ls
catalina.2016-01-26.log localhost.2016-01-26.log
catalina.out localhost_access_log.2016-01-26.txt
host-manager.2016-01-26.log manager.2016-01-26.log
#→tomcat实时日志
[roottomcat logs]# tailf catalina.out
26-Jan-2016 06:10:24.006 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /application/apache-tomcat-8.0.27/webapps/examples has finished in 666 ms
26-Jan-2016 06:10:24.007 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /application/apache-tomcat-8.0.27/webapps/docs
26-Jan-2016 06:10:24.054 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /application/apache-tomcat-8.0.27/webapps/docs has finished in 47 ms
26-Jan-2016 06:10:24.055 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /application/apache-tomcat-8.0.27/webapps/manager
26-Jan-2016 06:10:24.134 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /application/apache-tomcat-8.0.27/webapps/manager has finished in 80 ms
26-Jan-2016 06:10:24.139 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /application/apache-tomcat-8.0.27/webapps/host-manager
26-Jan-2016 06:10:24.188 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /application/apache-tomcat-8.0.27/webapps/host-manager has finished in 50 ms
26-Jan-2016 06:10:24.195 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [http-nio-8080]
26-Jan-2016 06:10:24.206 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [ajp-nio-8009]
26-Jan-2016 06:10:24.211 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 1560 ms3. Tomcat配置文件3.1 Tomcat配置文件[roottomcat conf]# pwd
/application/tomcat/conf
[roottomcat conf]# ll -h
total 216K
drwxr-xr-x 3 root root 4.0K Jan 26 06:10 Catalina
-rw------- 1 root root 13K Sep 28 16:19 catalina.policy
-rw------- 1 root root 7.0K Sep 28 16:19 catalina.properties
-rw------- 1 root root 1.6K Sep 28 16:19 context.xml
-rw------- 1 root root 3.4K Sep 28 16:19 logging.properties
-rw------- 1 root root 6.4K Sep 28 16:19 server.xml #→主配置文件
-rw------- 1 root root 1.8K Sep 28 16:19 tomcat-users.xml #→Tomcat管理用户配置文件
-rw------- 1 root root 1.9K Sep 28 16:19 tomcat-users.xsd
-rw------- 1 root root 164K Sep 28 16:19 web.xml #→定义了各种MIME类型3.2 Tomcat管理测试功能生产环境不要用。Tomcat管理功能用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用。在默认情况下是处于禁用状态的。如果需要开启这个功能就需要配置管理用户即配置前面说过的tomcat-users.xml。[roottomcat ~]# vim /application/tomcat/conf/tomcat-users.xml
…………
role rolenamemanager-gui/
role rolenameadmin-gui/
user usernametomcat passwordtomcat rolesmanager-gui,admin-gui/
/tomcat-users #→在此行前加入上面三行
[roottomcat ~]# /application/tomcat/bin/shutdown.sh
[roottomcat ~]# /application/tomcat/bin/startup.sh3.3 Tomcat主配置文件Server.xml详解3.3.1 server.xml组件类别顶级组件位于整个配置的顶层如server。容器类组件可以包含其它组件的组件如service、engine、host、context。连接器组件连接用户请求至tomcat如connector。被嵌套类组件位于一个容器当中不能包含其他组件如Valve、logger。serverserviceconnector /enginehostcontext/context/hosthostcontext/context/host/engine/service
/server3.3.2 组件详解engine 核心容器组件catalina引擎负责通过connector接收用户请求并处理请求将请求转至对应的虚拟主机host。host类似于httpd中的虚拟主机一般而言支持基于FQDN的虚拟主机。context定义一个应用程序是一个最内层的容器类组件不能再嵌套。配置context的主要目的是指定对应对的访问路径和项目所在路径的映射关系其还能为webapp指定额外的属性如部署方式等。例如Context path/app docBased:\chapter\app reloadabletrue/connector接收用户请求类似于httpd的listen配置监听端口的。service服务将connector关联至engine因此一个service内部可以有多个connector但只能有一个引擎engine。service内部有两个connector一个engine。因此一般情况下一个server内部只有一个service一个service内部只有一个engine但一个service内部可以有多个connector。server表示一个运行于JVM中的tomcat实例。Valve阀门拦截请求并在将其转至对应的webapp前进行某种处理操作可以用于任何容器中比如记录日志(access log valve)、基于IP做访问控制(remote address filter valve)。logger日志记录器用于记录组件内部的状态信息可以用于除context外的任何容器中。realm可以用于任意容器类的组件中关联一个用户认证库实现认证和授权。可以关联的认证库有两种UserDatabaseRealm、MemoryRealm和JDBCRealm。UserDatabaseRealm使用JNDI自定义的用户认证库。MemoryRealm认证信息定义在tomcat-users.xml中。JDBCRealm认证信息定义在数据库中并通过JDBC连接至数据库中查找认证用户。3.3.3 配置文件注释?xml version1.0 encodingutf-8?
!--
Server元素代表整个容器,是Tomcat实例的顶层元素.由org.apache.catalina.Server接口来定义.它包含一个Service元素.并且它不能做为任何元素的子元素.port指定Tomcat监听shutdown命令端口.终止服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命令.该属性是必须的.shutdown指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性必须设置
--
Server port8005 shutdownSHUTDOWNListener classNameorg.apache.catalina.startup.VersionLoggerListener /Listener classNameorg.apache.catalina.core.AprLifecycleListener SSLEngineon /Listener classNameorg.apache.catalina.core.JreMemoryLeakPreventionListener /Listener classNameorg.apache.catalina.mbeans.GlobalResourcesLifecycleListener /Listener classNameorg.apache.catalina.core.ThreadLocalLeakPreventionListener /GlobalNamingResourcesResource nameUserDatabase authContainertypeorg.apache.catalina.UserDatabasedescriptionUser database that can be updated and savedfactoryorg.apache.catalina.users.MemoryUserDatabaseFactorypathnameconf/tomcat-users.xml //GlobalNamingResources!--service服务组件--Service nameCatalina!--connector接收用户请求类似于httpd的listen配置监听端口.port指定服务器端要创建的端口号并在这个端口监听来自客户端的请求。address指定连接器监听的地址默认为所有地址即0.0.0.0protocol连接器使用的协议支持HTTP和AJP。AJPApache Jserv Protocol专用于tomcat与apache建立通信的 在httpd反向代理用户请求至tomcat时使用可见Nginx反向代理时不可用AJP协议。minProcessors服务器启动时创建的处理请求的线程数maxProcessors最大可以创建的处理请求的线程数enableLookups如果为true则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名若为false则不进行DNS查询而是返回其ip地址redirectPort指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号acceptCount指定当所有可以使用的处理请求的线程数都被使用时可以放到处理队列中的请求数超过这个数的请求将不予处理connectionTimeout 指定超时的时间数(以毫秒为单位)--Connector port8080 protocolHTTP/1.1connectionTimeout20000redirectPort8443 /Connector port8009 protocolAJP/1.3 redirectPort8443 /!--engine核心容器组件,catalina引擎,负责通过connector接收用户请求,并处理请求,将请求转至对应的虚拟主机hostdefaultHost指定缺省的处理请求的主机名它至少与其中的一个host元素的name属性值是一样的--Engine nameCatalina defaultHostlocalhost!--Realm表示存放用户名密码及role的数据库--Realm classNameorg.apache.catalina.realm.LockOutRealmRealm classNameorg.apache.catalina.realm.UserDatabaseRealmresourceNameUserDatabase//Realm!--host表示一个虚拟主机name指定主机名appBase应用程序基本目录即存放应用程序的目录.一般为appBasewebapps 相对于CATALINA_HOME而言的也可以写绝对路径。unpackWARs如果为true则tomcat会自动将WAR文件解压否则不解压直接从WAR文件中运行应用程序autoDeploy在tomcat启动时是否自动部署。xmlValidation是否启动xml的校验功能一般xmlValidationfalse。xmlNamespaceAware检测名称空间一般xmlNamespaceAwarefalse。--Host namelocalhost appBasewebappsunpackWARstrue autoDeploytrue!--Context表示一个web应用程序通常为WAR文件docBase应用程序的路径或者是WAR文件存放的路径,也可以使用相对路径起始路径为此Context所属Host中appBase定义的路径。path表示此web应用程序的url的前缀这样请求的url为http://localhost:8080/path/****reloadable 此属性非常重要若为true则tomcat会自动检测应用程序的/WEB-INF/lib和/WEB-INF/classes目录的变化自动装载新的应用程序可以在不重启tomcat的情况下改变应用程序--Context path docBase debug/Valve classNameorg.apache.catalina.valves.AccessLogValve directorylogsprefixlocalhost_access_log suffix.txtpattern%h %l %u %t quot;%rquot; %s %b //Host/Engine/Service
/Server4. WEB站点部署上线的代码有两种方式第一种方式是直接将程序目录放在webapps目录下面这种方式大家已经明白了就不多说了。第二种方式是使用开发工具将程序打包成war包然后上传到webapps目录下面。下面让我们见识一下这种方式。4.1 使用war包部署web站点[roottomcat webapps]# pwd
/application/tomcat/webapps
[roottomcat webapps]# rz #→上传memtest.war此文件也在上面的百度网盘里
[roottomcat webapps]# ls
docs examples host-manager manager memtest memtest.war ROOT浏览器访问http://10.0.0.3:8080/memtest/meminfo.jsp4.2 自定义默认网站目录上面访问的网址为http://10.0.0.3:8080/memtest/meminfo.jsp 现在我想访问格式为http://10.0.0.3:8080/meminfo.jsp 怎么破方法一将meminfo.jsp或其他程序放在tomcat/webapps/ROOT目录下即可。因为默认网站根目录为tomcat/webapps/ROOT方法二[roottomcat ~]# vim /application/tomcat/conf/server.xmlHost namelocalhost appBasewebapps unpackWARstrue autoDeploytrueContext path docBase/application/tomcat/webapps/memtest debug0 reloadablefalse crossContexttrue/
[roottomcat ~]# /application/tomcat/bin/shutdown.sh
[roottomcat ~]# /application/tomcat/bin/startup.sh5. Tomcat多实例及集群架构5.1 Tomcat多实例5.1.1 复制Tomcat目录[roottomcat ~]# cd /application/
[roottomcat application]# cp -a apache-tomcat-8.0.27 tomcat8_1
[roottomcat application]# cp -a apache-tomcat-8.0.27 tomcat8_25.1.2 修改配置文件[roottomcat application]# mkdir -p /data/www/www/ROOT
[roottomcat application]# cp /application/tomcat/webapps/memtest/meminfo.jsp /data/www/www/ROOT/
sed -i 22s#8005#8011#;69s#8080#8081#;91s#8009#8019#;123s#appBase.*# appBase/data/www/www# /application/tomcat8_1/conf/server.xml
sed -i 22s#8005#8012#;69s#8080#8082#;91s#8009#8029#;123s#appBase.*# appBase/data/www/www# /application/tomcat8_2/conf/server.xml
[roottomcat ~]# diff /application/tomcat/conf/server.xml /application/tomcat8_1/conf/server.xml
22c22Server port8005 shutdownSHUTDOWN
---Server port8011 shutdownSHUTDOWN
69c69Connector port8080 protocolHTTP/1.1
---Connector port8081 protocolHTTP/1.1
91c91Connector port8009 protocolAJP/1.3 redirectPort8443 /
---Connector port8019 protocolAJP/1.3 redirectPort8443 /
123c123Host namelocalhost appBase/application/tomcat/webapps/memtest
---Host namelocalhost appBase/data/www/www
[roottomcat ~]# diff /application/tomcat/conf/server.xml /application/tomcat8_2/conf/server.xml
22c22Server port8005 shutdownSHUTDOWN
---Server port8012 shutdownSHUTDOWN
69c69Connector port8080 protocolHTTP/1.1
---Connector port8082 protocolHTTP/1.1
91c91Connector port8009 protocolAJP/1.3 redirectPort8443 /
---Connector port8029 protocolAJP/1.3 redirectPort8443 /
123c123Host namelocalhost appBase/application/tomcat/webapps/memtest
---Host namelocalhost appBase/data/www/www5.1.3 启动多实例for i in {1..2};do /application/tomcat8_$i/bin/startup.sh;done
netstat -tunlp|grep java浏览器可以分别访问http://10.0.0.3:8081/meminfo.jsp 和 http://10.0.0.3:8082/meminfo.jsp5.2 Tomcat集群使用nginxTomcat反向代理集群[roottomcat ~]# vim /application/nginx/conf/nginx.conf
upstream web_pools {server 127.0.0.1:8081;server 127.0.0.1:8082;
}
server {listen 80;server_name localhost;location / {root html;index index.jsp index.html index.htm;proxy_pass http://web_pools;}
}
[roottomcat ~]# /application/nginx/sbin/nginx -t
[roottomcat ~]# /application/nginx/sbin/nginx浏览器可以访问http://10.0.0.3/meminfo.jsp6. Tomcat监控企业案例Linux下java/http进程高解决案例jvisualvm远程监控Tomcathttp://ihuangweiwei.iteye.com/blog/1219302生产环境下某台tomcat7服务器在刚发布时的时候一切都很正常在运行一段时间后就出现CPU占用很高的问题基本上是负载一天比一天高。请搞定7. Tomcat安全优化和性能优化7.1 安全优化降权启动telnet管理端口保护ajp连接端口保护禁用管理端7.2 性能优化7.2.1 屏蔽dns查询enableLookupsfalse Connector port8081 protocolHTTP/1.1connectionTimeout6000 enableLookupsfalse acceptCount800redirectPort8443 /7.2.2 jvm调优Tomcat最吃内存只要内存足够这只猫就跑的很快。如果系统资源有限那就需要进行调优提高资源使用率。优化catalina.sh配置文件。在catalina.sh配置文件中添加以下代码
JAVA_OPTS-Djava.awt.headlesstrue -Dfile.encodingUTF-8 -server \-Xms1024m -Xmx1024m \-XX:NewSize512m -XX:MaxNewSize512m -XX:PermSize512m -XX:MaxPermSize512m
server:一定要作为第一个参数在多个CPU时性能佳
-Xms初始堆内存Heap大小使用的最小内存,cpu性能高时此值应设的大一些
-Xmx初始堆内存Heap最大值使用的最大内存
上面两个值是分配JVM的最小和最大内存取决于硬件物理内存的大小建议均设为物理内存的一半。
-XX:PermSize:设定内存的永久保存区域
-XX:MaxPermSize:设定最大内存的永久保存区域
-XX:MaxNewSize:
-Xss 15120 这使得JBoss每增加一个线程thread)就会立即消耗15M内存而最佳值应该是128K,默认值好像是512k.
XX:AggressiveHeap 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。
-Xss每个线程的Stack大小
-verbose:gc 现实垃圾收集信息
-Xloggc:gc.log 指定垃圾收集日志文件
-Xmnyoung generation的heap大小一般设置为Xmx的3、4分之一
-XX:UseParNewGC 缩短minor收集的时间
-XX:UseConcMarkSweepGC 缩短major收集的时间原文链接:http://www.zyops.com/java-tomcat 转载于:https://blog.51cto.com/pkbai/1871195