Tomcat是Apache軟件基金會(huì)(Apache Software Foundation)的Jakarta 項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache、Sun和其他一些公司及個(gè)人共同開發(fā)而成。
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的禹州網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!Tomcat服務(wù)器是一個(gè)免費(fèi)的開放源代碼的Web應(yīng)用服務(wù)器,屬于輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場(chǎng)合下被普遍使用,是開發(fā)和調(diào)試JSP程序的選擇。
Tomcat和Nginx、Apache(httpd)、lighttpd等Web服務(wù)器一樣,具有處理HTML頁面的功能,另外它還是一個(gè)Servlet和JSP容器,獨(dú)立的Servlet容器是Tomcat的默認(rèn)模式。不過,Tomcat處理靜態(tài)HTML的能力不如Nginx/Apache服務(wù)器。
對(duì)比php軟件,區(qū)別?
目前Tomcat最新版本為9.0。Java容器還有resin、weblogic等。
2. Tomcat安裝 2.1 軟件[root@tomcat ~]# cd /application/tools/ [root@tomcat tools]# rz rz waiting to receive. Starting zmodem transfer. Press Ctrl+C 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 tar xf jdk-8u60-linux-x64.tar.gz -C /application/ ln -s /application/jdk1.8.0_60 /application/jdk sed -i.ori \'$a export JAVA_HOME=/application/jdknexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATHnexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar\' /etc/profile source /etc/profile #→出現(xiàn)下面結(jié)果證明部署成功 [root@tomcat ~]# 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) 2.4 Tomcat目錄介紹
[root@tomcat ~]# cd /application/tomcat/ [root@tomcat tomcat]# tree -L 1 . ├── bin #→用以啟動(dòng)、關(guān)閉Tomcat或者其它功能的腳本(.bat文件和.sh文件) ├── conf #→用以配置Tomcat的XML及DTD文件 ├── lib #→存放web應(yīng)用能訪問的JAR包 ├── LICENSE ├── logs #→Catalina和其它Web應(yīng)用程序的日志文件 ├── NOTICE ├── RELEASE-NOTES ├── RUNNING.txt ├── temp #→臨時(shí)文件 ├── webapps #→Web應(yīng)用程序根目錄 └── work #→用以產(chǎn)生有JSP編譯出的Servlet的.java和.class文件 7 directories, 4 files [root@tomcat tomcat]# cd webapps/ [root@tomcat 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應(yīng)用實(shí)例 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 #→默認(rèn)網(wǎng)站根目錄 2.5 啟動(dòng)Tomcat
#→啟動(dòng)程序/application/tomcat/bin/startup.sh #→關(guān)閉程序/application/tomcat/bin/shutdown.sh [root@tomcat ~]# /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. [root@tomcat ~]# netstat -tunlp|grep java tcp 0 0 :::8009 :::* LISTEN 4743/java tcp 0 0 :::8080 :::* LISTEN 4743/java [root@tomcat ~]# 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.manager=org.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 start 2.6 訪問網(wǎng)站
2.7 Tomcat日志[root@tomcat ~]# cd /application/tomcat/logs/ [root@tomcat 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實(shí)時(shí)日志 [root@tomcat 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 ms 3. Tomcat配置文件 3.1 Tomcat配置文件
[root@tomcat conf]# pwd /application/tomcat/conf [root@tomcat 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 3.2 Tomcat管理
測(cè)試功能,生產(chǎn)環(huán)境不要用。
Tomcat管理功能用于對(duì)Tomcat自身以及部署在Tomcat上的應(yīng)用進(jìn)行管理的web應(yīng)用。在默認(rèn)情況下是處于禁用狀態(tài)的。如果需要開啟這個(gè)功能,就需要配置管理用戶,即配置前面說過的tomcat-users.xml。
[root@tomcat ~]# vim /application/tomcat/conf/tomcat-users.xml …………
上線的代碼有兩種方式,第一種方式是直接將程序目錄放在webapps目錄下面,這種方式大家已經(jīng)明白了,就不多說了。第二種方式是使用開發(fā)工具將程序打包成war包,然后上傳到webapps目錄下面。下面讓我們見識(shí)一下這種方式。
4.1 使用war包部署web站點(diǎn)[root@tomcat webapps]# pwd /application/tomcat/webapps [root@tomcat webapps]# rz #→上傳memtest.war,此文件也在上面的百度網(wǎng)盤里 [root@tomcat webapps]# ls docs examples host-manager manager memtest memtest.war ROOT
4.2 自定義默認(rèn)網(wǎng)站目錄方法一
將meminfo.jsp或其他程序放在tomcat/webapps/ROOT目錄下即可。因?yàn)槟J(rèn)網(wǎng)站根目錄為tomcat/webapps/ROOT
方法二
[root@tomcat ~]# vim /application/tomcat/conf/server.xml
[root@tomcat ~]# cd /application/ [root@tomcat application]# cp -a apache-tomcat-8.0.27 tomcat8_1 [root@tomcat application]# cp -a apache-tomcat-8.0.27 tomcat8_2 5.1.2 修改配置文件
[root@tomcat application]# mkdir -p /data/www/www/ROOT [root@tomcat application]# cp /application/tomcat/webapps/memtest/meminfo.jsp /data/www/www/ROOT/ [root@tomcat ~]# sed -i \'22s#8005#8011#;69s#8080#8081#;123s#appBase=".*"# appBase="/data/www/www"#\' /application/tomcat8_1/conf/server.xml [root@tomcat ~]# sed -i \'22s#8005#8012#;69s#8080#8082#;123s#appBase=".*"# appBase="/data/www/www"#\' /application/tomcat8_2/conf/server.xml [root@tomcat ~]# diff /application/tomcat/conf/server.xml /application/tomcat8_1/conf/server.xml 22c22 < for i in {1..2};do /application/tomcat8_$i/bin/startup.sh;done netstat -tunlp|grep java 使用nginx+Tomcat反向代理集群 [root@tomcat ~]# 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; } } [root@tomcat ~]# /application/nginx/sbin/nginx -t [root@tomcat ~]# /application/nginx/sbin/nginx Tomcat最吃內(nèi)存,只要內(nèi)存足夠,這只貓就跑的很快。 如果系統(tǒng)資源有限,那就需要進(jìn)行調(diào)優(yōu),提高資源使用率。 優(yōu)化catalina.sh配置文件。在catalina.sh配置文件中添加以下代碼: JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m" server:一定要作為第一個(gè)參數(shù),在多個(gè)CPU時(shí)性能佳 -Xms:初始堆內(nèi)存Heap大小,使用的最小內(nèi)存,cpu性能高時(shí)此值應(yīng)設(shè)的大一些 -Xmx:初始堆內(nèi)存heap值,使用的內(nèi)存 上面兩個(gè)值是分配JVM的最小和內(nèi)存,取決于硬件物理內(nèi)存的大小,建議均設(shè)為物理內(nèi)存的一半。 -XX:PermSize:設(shè)定內(nèi)存的永久保存區(qū)域 -XX:MaxPermSize:設(shè)定內(nèi)存的永久保存區(qū)域 -XX:MaxNewSize: -Xss 15120 這使得JBoss每增加一個(gè)線程(thread)就會(huì)立即消耗15M內(nèi)存,而值應(yīng)該是128K,默認(rèn)值好像是512k. +XX:AggressiveHeap 會(huì)使得 Xms沒有意義。這個(gè)參數(shù)讓jvm忽略Xmx參數(shù),瘋狂地吃完一個(gè)G物理內(nèi)存,再吃盡一個(gè)G的swap。 -Xss:每個(gè)線程的Stack大小 -verbose:gc 現(xiàn)實(shí)垃圾收集信息 -Xloggc:gc.log 指定垃圾收集日志文件 -Xmn:young generation的heap大小,一般設(shè)置為Xmx的3、4分之一 -XX:+UseParNewGC :縮短minor收集的時(shí)間 -XX:+UseConcMarkSweepGC :縮短major收集的時(shí)間