Tomcat學習

http://xtony.blog.51cto.com/3964396/988706


Tomcat一點一滴之(一)基本搭建


目前主流的web服務器及各自服務的對象:
 
Microsoft IIS .Net
Apache Html/PHP
Nginx Html/PHP
Tomcat Jsp
          
前言:Tomcat 是一個輕量級應用服務器,在中小型系統和併發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。對於一個初學者來說,可以這樣認爲,當在一臺機器上配置好Apache 服務器,可利用它響應對HTML 頁面的訪問請求。實際上Tomcat 部分是Apache 服務器的擴展,但它是獨立運行的,所以當你運行tomcat 時,它實際上作爲一個與Apache 獨立的進程單獨運行的。當配置正確時,Apache 爲HTML頁面服務,而Tomcat 實際上運行JSP 頁面和Servlet。另外,Tomcat和IIS、Apache等Web服務器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。不過,Tomcat處理靜態HTML的能力不如Apache服務器。目前Tomcat最新版本爲8.0.28。
本人也沒怎麼接觸過Tomcat,算是和大家一起學習了。
 
1.Tomcat是對Jsp的頁面提供服務的,所以需要java環境,那麼首先安裝jdk
下載jdk-6u24-linux-i586-rpm.bin到本地/usr/java
  1. cd /usr/java 
  2. chmod 755 jdk-6u24-linux-i586-rpm.bin       #添加執行權限 
  3. ./jdk-6u24-linux-i586-rpm.bin               #會生成jdk-6u1-linux-i586.rpm的文件 
  4.  
  5. 當頁面出現“Press Enter to continue..... ”  #按回車鍵即可 
安裝完成,會在當前目錄下生成jdk1.6.0_24
 
接下來修改環境變量,使其被系統引用,在 /etc/profile中加入如下內容
  1. JAVA_HOME=/usr/java/jdk1.6.0_24  
  2. CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  
  3. PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin  
  4. export PATH CLASSPATH JAVA_HOME 
source /etc/profile                      #即時生效配置文件
 
測試:執行java -version,正確的話應該會顯示:
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode, sharing)
 
2.安裝tomcat(這裏選擇免安裝綠色版)---也就是解壓即可使用
下載apache-tomcat-6.0.35.tar.gz到/usr/local
  1. tar zxf apache-tomcat-6.0.35.tar.gz       #解壓文件 
  2. mv apache-tomcat-6.0.35 tomcat            #改名,易於寫path路徑 
  3.  
  4. /usr/local/tomcat/bin/startup.sh          #啓動腳本 
  5. /usr/local/tomcat/bin/shutdown.sh         #關閉腳本 
默認安裝好,會監控8080端口,默認網站目錄爲tomcat/webapps
如何修改?
vim /usr/local/tomcat/conf/server.xml
找到如下段:
  1. <Connector port="8001" protocol="HTTP/1.1"  #將port改成想要的端口即可 
  2.                connectionTimeout="20000"  
  3.                redirectPort="8443" />       
更改默認目錄:
添加一行:
 
  1. <Context path="" docBase="/web" debug="0" reloadable="false"  xmlNamespaceAware="false" xmlValidation="false"/-->  #docBase就是要改的目錄路徑 
 
輸入地址:http://ip:8080,即可訪問。
出現默認首頁:
 

 
到此Tomcat的基本搭建就算完成了。


Tomcat一點一滴之(二)配置應用

 
前言:在上篇已經把最基本的Tomcat搭建起來了,其實搭建tomcat的過程很簡單,本篇就來說說Tomcat其中的目錄結構以及如何來部署應用。(本篇某些內容摘至互聯網)
 
一、目錄結構詳解:
以下是Tomcat默認裝完以後的目錄結構:
  1. /bin                   #存放各種平臺下啓動和關閉Tomcat的腳本文件; 
  2. /conf                  #Tomcat的各種配置文件,最重要的是 server.xml; 
  3. /lib                   #存放Tomcat服務器和所有web應用需要的jar包; 
  4. /logs                  #存放Tomcat的日誌文件; 
  5. /temp                  #Tomcat運行時候存放臨時文件用的; 
  6. /webapps               #web應用的發佈目錄,把 java開發的web站點或war文件放入這個目錄下就可以通過tomcat服務器訪問; 
  7. /work                  #Tomcat的工作目錄,默認情況下把編譯JSP文件生成的servlet類文件放於此目錄下。 
  8. 然後說下conf/下的配置文件: 
  9. server.xml             #Tomcat中最重要的配置文件,定義了tomcat的體系結構;設置端口,集羣,web應用,訪問日誌等主要功能。 
  10. tocmat-users.xml       #Tocmat管理員身份的配置文件;關鍵是設置管理員賬號的密碼 
  11. context.xml            #全局context的配置文件;將數據庫JNDI在這裏定義好 
  12. logging.properties     #Tocmat日誌配置文件;可以修改默認的Tocmat日誌路徑和名稱 
  13. web.xml                #web.xml是JSP的一個配置文件,裏面設置了通用的默認值 
 
二、部署應用:
看完了上面的目錄結構解釋,知道了要新建項目,就是在webapps目錄下來部署。好了,那就來新建個簡單的jsp頁面。
 
1.到Tomcat的安裝目錄的webapps目錄,可以看到ROOT,examples, tomcat-docs之類Tomcat自帶的的目錄; 
2.在webapps目錄下新建一個目錄myapp,也就是項目名
3.myapp下新建一個目錄WEB-INF;                   #注意,目錄名稱是區分大小寫的; 
4.WEB-INF下新建一個文件web.xml,內容如下:
  1. <?xml version="1.0" encoding="ISO-8859-1"?>  
  2.  
  3. <!DOCTYPE web-app  
  4. PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  
  5. "http://java.sun.com/dtd/web-app_2_3.dtd">  
  6.  
  7. <web-app>  
  8. <display-name>My Web Application</display-name>  
  9. <description>  
  10. A application for test.  
  11. </description>  
  12. </web-app>  

5.在myapp下新建一個測試的jsp頁面,文件名爲index.jsp,文件內容如下:
  1. <html> 
  2. <body> 
  3. <center>  
  4. Now time is: <%=new java.util.Date()%>  
  5. </center> 
  6. </body> 
  7. </html> 

6.重啓Tomcat 
7.打開瀏覽器,輸入http://localhost:8080/myapp/index.jsp 看到當前時間的話說明就成功了。
一個最簡單的jsp頁面就顯示出來了。。。

 
三、結合數據庫Mysql:
我們都知道部署應用時,後臺必須有數據庫的支持。要不然就成了靜態的web了,一般tomcat連接數據常用有oracle、mysql;大型的企業都是用的oracle。這裏測試就用mysql了。
首先安裝:(由於可能都會,就直接貼代碼了)       #這裏用的是源碼安裝,也可直接yum裝
  1. groupadd mysql 
  2. useradd -g mysql -s /sbin/nologin -M  mysql 
  3. tar zxvf mysql-5.1.63.tar.gz 
  4. cd mysql-5.1.63 
  5. ./configure  \ 
  6. --prefix=/usr/local/mysql   \ 
  7. --with-unix-socket-path=/tmp/mysql.sock   \ 
  8. --enable-thread-safe-client   \ 
  9. --with-mysqld-user=mysql   \ 
  10. --with-big-tables   \ 
  11. --without-debug   \ 
  12. --with-pthread   \ 
  13. --enable-assembler   \ 
  14. --with-extra-charsets=complex   \ 
  15. --with-readline   \ 
  16. --with-ssl   \ 
  17. --with-embedded-server   \ 
  18. --enable-local-infile   \ 
  19. --with-plugins=partition,innobase   \ 
  20. --with-plugin-PLUGIN   \ 
  21. --with-mysqld-ldflags=-all-static   \ 
  22. --with-client-ldflags=-all-static 
  23. make && make install 
  24.  
  25. cp support-files/my-medium.cnf /etc/my.cnf               #建立配置文件 
  26.  
  27. /usr/local/mysql/bin/mysql_install_db --user=mysql       #初始化數據庫,並修改相關目錄所有權 
  28.  
  29. chown -R root.mysql /usr/local/mysql/ 
  30. chown -R mysql /usr/local/mysql/var/                     #調整目錄權限 
  31.  
  32. echo "/usr/local/mysql/lib/mysql/" >>/etc/ld.so.conf 
  33. ldconfig                                                 #調整lib庫路徑 
  34.  
  35. /usr/local/mysql/bin/mysqld_safe --user=mysql &          #使用mysqld_safe腳本安全啓動服務(後臺) 
  36.  
  37.  
  38. cp support-files/mysql.server /etc/init.d/mysqld               
  39. chmod a+x /etc/init.d/mysqld 
  40. chkconfig --add mysqld 
  41. chkconfig mysqld on                                      #將mysql變成系統服務並開機自啓 
  42.  
  43. echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile    #把MySQL加入環境變量,方便執行命令 
  44. source /etc/profile                                      #使環境變量生效 
  45.  
  46. service mysqld restart                                   #重啓服務 
  47. mysqladmin -u root password 123                          #設置數據庫root密碼 
好了,mysql安裝好了,不過要想讓tomcat可以連接到mysql,還需要一個jar包mysql-connector-java-5.1.13-bin.jar,將其下載下來放到tomcat 目錄 lib 下面去就可以了。
下面來寫個簡單的測試連接數據庫的jsp頁面:
vim webapps/myapp/test_mysql.jsp
  1. <%@ page language="java" %> 
  2. <%@ page import="com.mysql.jdbc.Driver" %> 
  3. <%@ page import="java.sql.*" %> 
  4. <
  5. String driverName="com.mysql.jdbc.Driver"
  6. String userName="root"
  7. String userPasswd="123"
  8. String dbName="test"
  9. String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd; 
  10. Class.forName("com.mysql.jdbc.Driver").newInstance(); 
  11. try 
  12.         Connection connection=DriverManager.getConnection(url); 
  13.         out.println(" Connection Mysql is OK !"); 
  14.         connection.close(); 
  15. catch( Exception e ) 
  16.         out.println( "connent mysql error:" + e ); 
  17. %> 
保存,打開頁面:http://IP:8080/myapp/test_mysql.jsp,如果看到下面就說明連接成功了!

 

四、如何來發佈一個開發的項目:
一共四種方法:
第一種方法:在tomcat中的conf目錄中,在server.xml中的,<host/>節點中添加: 
<Context path="/hello" docBase="E:\workspace\hello\WebRoot" debug="0" privileged="true"> 
</Context>  
第二種方法:將web項目文件件拷貝到webapps 目錄中。 
第三種方法:很靈活,在conf目錄中,新建 Catalina\localhost目錄,在該目錄中新建一個xml文件,名字不可以隨意取,要和path後的那個名字一致,按照下邊這個path的配置,xml的名字應該就應該是hello,該xml文件的內容爲: 
<Context path="/hello" docBase="E:\workspace\hello\WebRoot" debug="0" privileged="true"> 
</Context> 
第四種方法 在eclipse中點啓動tomcat那個按鈕左邊那個按鈕 
可以按照步驟deploy 
 
總結:到現在爲止,搭建的環境已經具備部署一個JAVA項目了,屬於運維人員工作的初期工作也就這樣了。至於如何詳細的部署應用就是研發的人該考慮的事了,想弄的特別透就得好好學習tomcat。下面就是來總結下:要想部署JAVA項目,首先機器必須支持java,那就得裝JDK。其次項目如何跑起來就需要web容器,那就得裝tomcat。再者,數據如何獲取,那就得裝mysql。應用部署好了就發佈。所以都是有所需纔有所用。
 
再次強調:本人也是正在學習tomcat相關,寫這篇只爲記錄在此!


Tomcat一點一滴之(三)整合Apache、Nginx

前言:上兩篇說了如何安裝、部署Tomcat。可是有個問題來了,當Tomcat需要處理靜態頁面時就比較慢了,至少不如Apache,所以就出現了Apache+Tomcat的整合。
不過網上有人總結了關於這兩個開源軟件整合還有一些原因:

 1、聚合。使用Apache做爲前端大門,後端部署多個Tomcat實例,如果一個實例出現問題,Apache將忽略這個實例,讓系統管理員高枕無憂。當然如果在硬件負載均衡設備的基礎上利用Tomcat的聚合能力就沒有必要進行集成了。
2、聚合/安全。當然如果使用Apache做爲門戶來區分擁有不同URL命名空間的不同的Tomcat。每個Tomcat都成爲一個保護區域,從安全角度講,僅僅需要主要Apache 服務器。在這個方案中,Apache已經變成一個輕量級的代理服務器。
3、安全。就安全來講,集成和不集成都是爭論雙方的焦點。Java有安全管理功能,Apache對安全考慮的也是比較周道的。可以使用Google來查閱這方面的資料。在某個場合中,集成是上上策,但是另外一個場合,可能不集成略勝一籌。但是如果集成Apache和Tomcat,一定要記住:你需要同時關注Apache和Tomcat的安全,而不是一個。
4、附加因素。在Apache上運行perl,PHP和CGI都是很普通的事情。但是對Tomcat來說,不僅速度忙,而且不太正式。Apache可以任意添加上百個附加軟件,當然Tomcat也有這個能力,但是這樣的模塊還沒有開發出來。
5、裝飾。當Apache做爲Tomcat前端時,你可以完成大量Tomcat不支持或沒有現成代碼的裝飾工作。沒有必要重新爲Tomcat開發一套類似爲Apache的mod_headers,mod_rewrite, and mod_alias。
6、速度。Apache的靜態網頁處理速度高於Tomcat。但是除非你的流量很大,這一點時沒有意義的。在另外一些情況下,Tomcat要比Apache快。所以兩者結合可以加速你的站點。
7、Socket handling(姑且認爲是連接)/系統穩定性。Apache在處理錯誤鏈接上優於Tomcat。主要原因是Tomcat所有的連接都交給JVM來處理,而JVM是跨平臺的,問題是跨平臺的優化是一個嚴峻的考驗。大部分時間java程序都是正常的,但是當情況非常惡劣時,例如:非常頻繁的掉線,無效數據包,無效IP的無效請求。Apache比基於JVM的程序要好。
下面就先來說下Apache+Tomcat的集成方法:
apache與tomcat負載集羣集成方法有3種jk、jk_proxy、http_proxy
本次實驗爲jk的這種方式,好了,開始:
一、準備包文件,安裝:
需要用到的包:
httpd-2.2.16.tar.gz                        #Apache源碼包
apache-tomcat-6.0.35.tar.gz                #Tomcat壓縮包
tomcat-connectors-1.2.30-src.tar.gz        #連接Apache和Tomcat(mod_jk)

1.首先安裝Apache

  1. # tar xzvf httpd-2.2.0.tar.gz  
  2. # cd httpd-2.2.0  
  3. # ./configure --prefix=/usr/local/apache2 --enable-so   #因做測試,最簡單的編譯參數即可  
  4. # make && make install  

2.再安裝Tomcat(需先安裝java環境,參照第一篇)

  1. # cp apache-tomcat-6.0.35.tar.gz /usr/local  
  2. # cd /usr/local  
  3. # tar zxf apache-tomcat-6.0.35.tar.gz  
  4. # mv apache-tomcat-6.0.35 tomcat 

3.最後安裝連接器(mod_jk)

  1. # tar zxf tomcat-connectors-1.2.30-src.tar.gz  
  2. # cd tomcat-connectors-1.2.30-src/native  
  3. # ./configure --with-apxs=/usr/local/apache2/bin/apxs     
  4. # make  
  5. # cp ./apache-2.0/mod_jk.so /usr/local/apache2/modules/ #拷貝至Apache指定模塊目錄 

二、配置其相關參數文件
1.首先是Apache相關的,剛剛安裝了mod_jk模塊,也已經拷貝到Apache的模塊目錄中,下面就是讓Apache來支持它。
需要在Apache的conf目錄下新建兩個配置文件:
mod_jk.conf              #模塊本身的配置文件
workers.properties       #定義Tomcat工作的的配置文件

vim mod_jk.conf

  1. JkWorkersFile /usr/local/apache2/conf/workers.properties         #指定workers.properties的位置  
  2. JkLogFile /usr/local/apache2/logs/mod_jk.log                     #指定jk的日誌輸出文件  
  3. JkLogLevel info                                                  #指定日誌級別  
  4. JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"                        #指定日誌輸出的時間戳格式  
  5. JkOptions  +ForwardKeySize +ForwardURICompat -ForwardDirectories #JkOptions指示發送給SSL密鑰大小  
  6. JkRequestLogFormat "%w %V %T"                                    #指定日誌中時間戳後面的內容:%w:工作的tomcat實例 %V:目標ip %T:耗時  
  7. JkMount /servlet/*  worker1                                      #指URL指向如果有servlet,則讓worker1去處理  
  8. JkMount /*.jsp worker1                                           #指URL爲/*.jsp的頁面,讓worker1去處理 

vim workers.properties

  1. worker.list=worker1                                              #指定需要工作的tomcat節點,如多個用“,”分割  
  2. worker.worker1.type=ajp13                                        #指定worker1使用ajpv13協議與Tomcat進程通訊  
  3. worker.worker1.host=localhost                                    #指定worker1的位置  
  4. worker.worker1.port=8009                                         #指定worker1的工作端口  
  5. worker.worker1.cachesize=10                                      #指定worker1的緩存大小  
  6. worker.worker1.cache_timeout=600                                 #指定worker1的cache中保留一個打開的socket的時間  
  7. worker.worker1.socket_keepalive=1                                #此配置項爲當Apache和Tomcat之間有防火牆時,讓os每隔多久想未激活的連接發送KEEP_ALIVE信息,防止防火牆切斷未激活的網絡連接  
  8. worker.worker1.socket_timeout=300                                #指定worker1上的連接在未激活的狀況下持續多久,Apache將主動切斷 

下面就是修改Apache的主配置文件httpd.conf
a.在DirectoryIndex中添加 index.jsp       ###166行
b.修改爲:DocumentRoot "/var/wwwroot"    ###104行
c.修改爲:<Directory "/var/wwwroot">     ###131行                #可能行數會有少於差異
d.在最後面添加:
LoadModule jk_module modules/mod_jk.so
Include /usr/local/apache2/conf/mod_jk.conf

2.下面就是稍稍修改下Tomcat的配置文件server.xml就可以了。
在</Host>標記前添加:
<Context path="" docBase="/var/wwwroot" reloadable="true" crossContext="true"> </Context>   #指定項目目錄

配置到此完成。下面測試:

三、測試驗收
mkdir /var/wwwroot
echo "Hello,The time is <%= new java.util.Date() %>" >> /var/wwwroot/index.jsp  #新建測試網頁

/usr/local/apache2/bin/apachectl start   #啓動Apache
/usr/local/tomcat/bin/startup.sh         #啓動Tomcat

登錄訪問:http://ip 或者http://ip:8080  兩者應該是一樣的內容。

即 網頁上顯示當前系統時間:
Hello,the time is Tue Feb 26 11:18:04 CST 2013

以上就是Apache、Tomcat集成的簡單方法。

——————————————————————
假如對併發要求比較高,那麼就可以考慮Nginx了。這也是Nginx很火的原因之一,下面就來說說這款輕量級的Web服務器如何和Tomct集成。
實驗:Nginx+Tomcat
一、安裝並配置Nginx
需要用到的包:
nginx-1.0.10.tar.gz      #Nginx的源碼包
pcre-8.10.tar.gz         #Nginx依賴的輕量級的函數庫

1.基本安裝

  1. # tar zxf pcre-8.10.tar.gz   
  2. # cd pcre-8.10  
  3. # ./configure  
  4. # make && make install  
  5.  
  6. # tar zxf nginx-1.0.10.tar.gz  
  7. # cd nginx-1.0.10  
  8. # ./configure --with-http_stub_status_module --with-http_ssl_module  #啓動server狀態和https模塊  
  9. # make && make install 

二、配置相關文件
Nginx安裝完畢默認的路徑爲:/usr/local/nginx
在/usr/local/nginx/conf下新建一個代理配置文件:
vim proxy.conf

  1. proxy_redirect          off;                     #關閉代理重定向  
  2. proxy_set_header        Host $host;  
  3. proxy_set_header        X-Real-IP $remote_addr;  #獲取真實ip  
  4. #proxy_set_header       X-Forwarded-For   $proxy_add_x_forwarded_for; #獲取代理者的真實ip  
  5. client_max_body_size    10m;                     #允許客戶端請求的最大單文件字節數  
  6. client_body_buffer_size 128k;                    #緩衝區代理緩衝用戶端請求的最大字節數  
  7. proxy_connect_timeout   90;                      #後端服務器連接的超時時間  
  8. proxy_send_timeout      90;                      #後端服務器數據回傳時間  
  9. proxy_read_timeout      90;                      #後端服務器處理請求的時間  
  10. proxy_buffer_size       4k;                      #設置緩衝區大小  
  11. proxy_buffers           4 32k;                   #設置緩衝區的大小和數量  
  12. proxy_busy_buffers_size 64k;                     #用來控制同時傳輸到客戶端的buffer數量  
  13. proxy_temp_file_write_size 64k;                  #設定緩存文件夾大小,大於這個值,將從upstream服務器傳 

再修改Nginx的主配置文件nginx.conf
在server{}中添加如下參數:
root         /var/wwwroot;                       #指定網頁的根目錄
        location ~ .*.jsp$ {                     #定義所有以.jsp結尾
                index index.jsp;                 #默認網頁爲index.jsp
                proxy_pass http://localhost:8080;#代理地址爲本機的8080端口
                }
測試Nginx配置文件準確性:
/usr/local/nginx/sbin/nginx -t
如下顯示,則沒有問題:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

/usr/local/nginx/sbin/nginx  #啓動nginx

netstat -antp|grep nginx     #查看nginx端口是否正常開啓

三、測試
本實驗是在上面Apache+Tomcat的基礎上繼續的,所以Tomcat我就沒再裝。也就是上面做的網站的根目錄在/var/wwwroot,在上面已經做好了測試網頁。

所以打開瀏覽器直接輸入:http://ip/index.jsp   即可看到效果。

到此Nginx+Tomcat已經完成,但只是簡單的集成,下一篇將繼續說下Apache+Tomcat集羣配置、Nginx+Tomcat集羣配置、以及Session同步。


發佈了0 篇原創文章 · 獲贊 167 · 訪問量 118萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章