版本:請注意如果整合時一定要看,apache和tomcat的官方文檔,版本不一樣,整合細節也不太一樣 Apache: 2.2.21 Tomcat: 6.0.33 mod_jk: 1.2.32 JDK: 1.6 - apache-tomcat-6.0.33.tar.gz
- wget http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-6/v6.0.33/bin/apache-tomcat-6.0.33.tar.gz
- httpd-2.2.21.tar.gz
- wget http://labs.renren.com/apache-mirror//httpd/httpd-2.2.21.tar.gz
- tomcat-connectors-1.2.32-src.tar.gz (mod_JK 模塊)
- wget http://mirror.bjtu.edu.cn/apache//tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.32-src.tar.gz
- JDK(jdk-6u26-linux-i586)
- wget http://oracleotn.rd.llnwd.net/otn-pub/java/jdk/6u26-b03/jdk-6u26-linux-i586-rpm.bin
主要步驟: 1.安裝mod_jk模塊 2.編輯httpd.conf,使用LoadModule 把模塊載入進去 3.編輯httpd.conf,把httpd-vhosts.conf 載入進來,用來配置虛擬主機 4.編輯httpd.conf,加入mod_jk模塊的配置文件 5.編輯httpd-vhosts.conf配置文件,配置虛擬主機,並加入那些讓tomcat處理,那些讓apache來處理的JkMount/JkUnMount,詳apache tomcat整合配置那一節 6.在/usr/local/apache2/conf下創建tomcat的woker文件:worker.properties 7.編輯worker.properties,加入針對tomcat的配置文件(worker.list),詳見apache tomcat整合配置那一節 8.編輯tomcat的server.xml文件,修改<HOST>標籤里的內容,指定appBase的路徑 9.創建網站的目錄/web3,在/web3下創建ROOT目錄,用來放置網站的前台頁面,創建admin,放置網站的後台頁面 10.連接mysql資料庫 11.啟動Apache 、tomcat,並測試. 對Apache tomcat整合的一點理解: 1.網站一般是分為前台和後台,前台頁面放到一個目錄裡面比如:web,後台程序放到一個目錄下比如:admin 2.Apache虛擬主機的文檔根目錄指向tomcat的項目目錄(/web3),這個目錄下有2個目錄:ROOT、admin ROOT下面放著網站的所有前台頁面,admin裡面放著所有的後台程序 3.apache tomcat 是怎麼工作的? 假設有一個虛擬主機www.apache.com對應的文檔根目錄就是以上的/web3目錄,當我們在瀏覽器中輸入www.apache.com時,通過DNS伺服器或者hosts文件解析到對應的IP地址192.168.100.250,由於我們在虛擬主機配置中指定 JkMount / tomcat1 JkMount /* tomcat1 JkMount /index.html tomcat1 根和根下面所有的文件都是由tomcat1這個tomcat的worder來處理,也就是讓tomcat來處理,當然還有根下面的index.html.這裡的/是指/web3 所以這個時候,apache就會把請求交給tomcat來處理,tomcat一旦接手之後,它就開始在appBase指定目錄(/web3)下尋找ROOT目錄(默認是ROOT目錄,可以修改),然後到ROOT目錄下尋找WEB-INF目錄,再到WEB-INF目錄中找到web.xml文件,讀取web.xml中的<welcome-file-list>中指定的index.html或者index.htm(相當於apache配置文件中指定DirectoryIndex index.html index.htm) <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> 然後通過這個index.html找到處理這個index.html的servlet程序,找到之後就去執行這個程序,這個程序會執行ROOT找到要顯示頁面,比如index.jsp,當然這個程序里已經提前指定好了tomcat會去找到那個網頁去執行,執行之後就成為html靜態代碼,再把它返回給apache,然後apache再返回給客戶端瀏覽器,客戶端瀏覽器執行這些代碼之後,就顯示出來.這當中還有就是客戶端瀏覽器執行的過程,瀏覽器執行靜態代碼時,碰到什麼標籤,才去取什麼內容,比如:遇到aa.css樣式表,然後才去伺服器端去取,而不是伺服器端一次性都把所有的靜態內容都發給瀏覽器. 如果瀏覽器請求的是圖片、視頻、flash,css,js這些靜態內容時,是由Apache直接處理的. 一、安裝Apache 1.安裝 - [root@router ~]# tar xvfz httpd-2.2.21.tar.gz
- [root@router ~]# cd httpd-2.2.21
- [root@router httpd-2.2.21]# ./configure --prefix=/usr/local/apache2 --enable-modules=most --enable-mods-shared=all --enable-so --with-included-apr
- 配置時根據需要、增加選項來啟用某個功能.
- [root@router httpd-2.2.21]#make && make install
2.編輯/etc/profile文件 把Apache的bin目錄加入到PATH變數中去,在文件中加入以下的行,這樣就可以直接使用apachectl start/stop/restart - export PATH=$PATH:/usr/local/apache2/bin
- [root@router httpd-2.2.21]# source /etc/profile //使其生效
- [root@router httpd-2.2.21]# apachectl -l 查看Apache靜態編譯到內核的模塊
- Compiled in modules:
- core.c
- prefork.c //默認是prefork工作方式,如果在編譯時不指定的話
- http_core.c
- mod_so.c //如果以後動態載入模塊,那這個模塊必須靜態編譯到內核中
3.建立虛擬主機放的文檔根目錄 - [root@router ~]# mkdir /web3
4.客戶端修改hosts文件,沒有DNS解析,測試就用Hosts文件來解析,加入以下內容. - 192.168.100.250 www.apache.com
二、安裝JDK 1.安裝 在tomcat運行環境下,JDK是必不可少的軟體,tomcat只是一個Servlet/JSP容器,底層的操作都需要JDK來完成. - [root@router ~]# chmod x jdk-6u26-linux-i586-rpm.bin //增加執行許可權
- [root@router ~]# cp jdk-6u26-linux-i586-rpm.bin /usr/local/
- [root@router ~]# cd /usr/local/
- [root@router local]# ./jdk-6u26-linux-i586-rpm.bin
- 看到Press Enter to continue..... 這字樣,按回車即可完成安裝
- [root@router local]# ln -s /usr/java/jdk1.6.0_26/ /usr/local/java //做一個軟連接到/usr/local/java下
2.設置環境變數 vi /etc/profile 在文件的最後面加入以下內容 - JAVA_HOME=/usr/local/java
- CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- PATH=$JAVA_HOME/bin:$PATH
- export PATH JAVA_HOME CLASSPATH
- 保存退出.
- [root@server1 lib]# source /etc/profile //使配置即時生效
3.測試JAVA是否安裝成功 - [root@server1 lib]# java -version
- java version "1.6.0_26" //是我們安裝的版本,安裝成功
- Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
- Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing)
三、安裝tomcat - [root@router local]# cp apache-tomcat-7.0.22.tar.gz /usr/local/
- [root@router local]# tar xvfz apache-tomcat-7.0.22.tar.gz
- [root@router local]# mv apache-tomcat-6.0.33 tomcat-6.0.33 //重命名一下,方便記憶與管理
- 這樣tomcat就安裝完成了.
- 啟動tomcat
- [root@router tomcat-6.0.33]# bin/startup.sh
從客戶端訪問正常 在/usr/local/tomcat-6.0.33/bin 修改catalina.sh,在文件的最下面加入以下內容: - JAVA_HOME=/usr/local/java
四、安裝JK模塊 1.安裝,如果是源碼安裝,會自帶apxs工具,如果採用rpm包安裝的話,不一定帶這個工具,還需要重新安裝 - [root@router ~]# tar xvrz tomcat-connectors-1.2.32-src.tar.gz
- [root@router ~]# cd tomcat-connectors-1.2.32-src
- [root@router tomcat-connectors-1.2.32-src]# cd native/
- [root@router native]# ./buildconf.sh
- [root@router native]# ./configure --with-apxs=/usr/local/apache2/bin/apxs
- #這裡指定的是apache安裝目錄中apxs的位置,這個apxs方便我們動態載入模塊
-
-
- [root@router ~]# ll /usr/local/apache2/modules/mod_jk.so #已經幫我們複製到apache的modules目錄中去了.
- -rwxr-xr-x 1 root root 878139 11-01 14:06 /usr/local/apache2/modules/mod_jk.so
2.修改apache主配置文件,使其在啟動時載入可以載入JK模塊,在模塊載入的位置添加以下行: - LoadModule jk_module modules/mod_jk.so
- [root@router htdocs]# httpd -D DUMP_MODULES 可以查看jk模塊是否被載入了
五、apache與tomcat整合配置 1、Tomcat workers Tomcat worker是一個服務於web server、等待執行servlet/JSP的Tomcat實例,創建tomcat workers需要增加3個配置文件,分別是Tomcat workers配置文件workers.properties,URL映射文件uriworkermap.properties和JK模塊日誌輸出文件mod_jk.log,mod_jk.log文件會在apache啟動時自動創建,這裡只需創建前兩個文件即可. 定義Tomcat workers的方法是在apache的conf目錄下編寫一個名為“workers.properties”的屬性文件,使其作為apache的插件來發揮作用,下面講述workers.properties配置說明. worker.list用來定義Workers列表,當apache啟動時,workers.properties作為插件將初始化出現在worker.list列表中的workers. 定義worker類型的格式: worker.worker名字.type= 例如: 定義一個名為“tomcat12”的worker,其使用ajp12協議與tomcat 進程通訊: worker.tomcat12.type=ajp12 定義一個名為“tomcat13”的worker,其使用ajp13協議與tomcat 進程通訊: worker.remote.type=ajp13 定義一個名為“tomcatjni”的worker,其使用JNI的方式與tomcat 進程通訊 worker.tomcatjni.type=jni 定義一個名為“tomcatloadbalancer”的worker,作為對多個tomcat進程的負載平衡使用: worker.tomcatloadbalancer.type=lb 這裡只說明ajp13協議支持的幾個常用屬性: Host:監聽ajp13請求的的tomcat worker主機地址 Port:tomcat worker主機監聽的埠.默認情況下tomcat在ajp13協議中使用的埠為8009. lbfactor:當tomcat用作負載均衡時,此屬性被使用,表示此tomcat worker節點的負載均衡權值. 2、創建workers.properties文件 參照: http://tomcat.apache.org/connectors-doc/reference/workers.html - [root@router ~]# vim /usr/local/apache2/conf/workers.properties 內容如下:
- worker.list=tomcat1
- worker.tomcat1.port=8009
- worker.tomcat1.host=localhost
- worker.tomcat1.type=ajp13
4.編輯Apache主配置文件/usr/local/apache2/conf/httpd.conf ,加入以下內容: 參照:http://tomcat.apache.org/connectors-doc/reference/apache.html - JkWorkersFile conf/workers.properties
- JkLogFile logs/mod_jk.log
- JkLogLevel debug
- # Virtual hosts
- Include conf/extra/httpd-vhosts.conf #把這行的註釋去掉,使用這個配置文件來配置虛擬主機
5.編輯extra/httpd-vhosts.conf 這個虛擬主機配置文件,配置如下: - <VirtualHost *:80>
- DocumentRoot "/web3" //Apache文檔根目錄
- ErrorLog "logs/www-error.log"
- CustomLog "logs/www-access.log" common
- ServerName www.apache.com
- DirectoryIndex index.html
- <Directory "/web3/"> //一定要有這段,控制目錄訪問的許可權,如果沒有這段是沒辦法訪問的,默認是禁止訪問
- Options FollowSymLinks MultiViews
- AllowOverride None
- Order deny,allow
- Allow from all
- </Directory>
-
- #前台頁面配置
- #這裡面的/ 是代表 /web3
- JkMount / tomcat1
- JkMount /* tomcat1
- JkMount /index.html tomcat1
-
- #把這存放靜態頁面的目錄,起別名(訪問方便起見,也是為了安全)指向實際的位置
- Alias /css /web3/ROOT/css
- Alias /image /web3/ROOT/image
- Alias /images /web3/ROOT/images
- Alias /js /web3/ROOT/js
- Alias /swf /web3/ROOT/swf
- Alias /video /web3/ROOT/video
-
- #所有的css、images、js、video等這些靜態文件不讓tomcat1來處理,Apache來處理這些文件
- JkUnMount /css/* tomcat1
- JkUnMount /image/* tomcat1
- JkUnMount /images/* tomcat1
- JkUnMount /js/* tomcat1
- JkUnMount /swf/* tomcat1
- JkUnMount /video/* tomcat1
-
- #後台頁面配置
- JkMount /admin tomcat1
- JkMount /admin/* tomcat1
- JkMount /admin/index.html tomcat1
-
- Alias /admin/css /web3/admin/css
- Alias /admin/images /web3/admin/images
- Alias /admin/js /web3/admin/js
-
- #所有的css、images、js、video等這些靜態文件不讓tomcat1來處理,Apache來處理這些文件
- JkUnMount /admin/css/* tomcat1
- JkUnMount /admin/images/* tomcat1
- JkUnMount /admin/js/* tomcat1
-
- </VirtualHost>
6、Tomcat的配置(server.xml的配置) server.xml是tomcat的核心配置文件,找到默認的<Host>標籤 - <Host name="localhost" appBase="/web3"
- unpackWARs="true" autoDeploy="true"
- xmlValidation="false" xmlNamespaceAware="false">
把appBase指向 /web3,就是Apache虛擬主機(www.apache.com)指向的目錄,如果使用默認的ROOT的目錄的話,只需要在/web3目錄下新建一個ROOT目錄,然後把你的前台頁面放到這裡面就可以訪問到,tomcat會默認到ROOT下面找WEB-INF下的web.xml文件然後找到index.html這個,這個index.html不一定存在,這個就是tomcat處理的問題 7.準備測試網站,放到/web3目錄下 - [root@router web3]# ls
- admin ROOT
- [root@router web3]# ls ROOT/
- 404.jsp favicon.ico help _leftheadforuser.jsp _menu.yingda.jsp recommend _userfoot.jsp
- 500.jsp fckeditor image literature page.jsp reg_next.jsp validemail.jsp
- about _footer.jsp images login_register.jsp paper search.jsp video
- bulletin _header.jsp index.jsp loginstatus.jsp product soft WEB-INF
- css _header.yingda.jsp index.yingda.jsp magazine publisher swf xml.data.jsp
-
-
- entry _headforuser.jsp js _menu.jsp reader user
-
-
- [root@router web3]# ls ROOT/WEB-INF/
- classes jboss-web.xml lib tld web.xml
8.啟動apache和tomcat,測試訪問 - [root@router ~]# /usr/local/apache2/bin/apachectl start
- [root@router ~]# /usr/local/tomcat-6.0.33/bin/startup.sh
訪問前台頁面 訪問後台頁面,要加上/admin,這裡面放著後台的程序. 可以訪問到,正常 那怎麼知道,那些js/css/images/swf/vedio文件夾裡面的內容是apache解析的 可以這樣,像下圖輸入一個不存在的css文件,然後看報錯信息, 如果是tomcat 解析的話,錯誤頁面會有tomcat的版本信息,像下圖 jsp頁面是tomcat來解析的,看下圖,隨便輸入一個不存在的jsp頁面,肯定會報錯了 看到報錯就知道這是tomcat報的錯.這樣就知道jsp頁面是由tomcat來解析的. |