• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    Tomcat 5 + Apache 2 + mod_jk 2 實現虛擬主機

    發布: 2007-5-25 23:40 | 作者: 未知 | 來源: ChinaUnix.net | 查看: 79次 | 進入軟件測試論壇討論

    領測軟件測試網
    Tomcat 5 實現了 servlet 2.4 和jsp2.0,在性能上有所提升,尤其是,對我們來說,實現了真正的中文支持,無需添加特別參數就可以直接顯示中文內容,讓java和jsp中文問題成為歷史!

    1.首先apache2 ,unix/linux下面就從源代碼編譯安裝,最重要的configure 參數是 --enalbe-modules="so" 其他根據自己需要安裝,windows下面直接安裝編譯好的二進制版本。具體安裝方法很多地方已經有介紹了,這里不贅述,如有需要可以參考 http://httpd.apache.org 或者 chinaunix 的web服務器區精華,唯一一點需要提醒的是,要將 httpd.conf 里面的
    [code:1:141851c2a4]#AddDefaultCharset ISO-8859-1[/code:1:141851c2a4]
    前面加#注銷掉,很多人提問為什么Apache2顯示中文亂碼,根源就在這里,最簡單的方法就是加一個#就可以正常顯示中文了,無需設置什么GB2312。

    2.安裝jdk,tomcat的運行需要j2sdk支持,可以去 http://java.sun.com 下載。windows 的可以下載 offline installation 版本,大概50M左右,下載以后安裝,linux下建議下載 self-extract版本,下載完以后用 chmod +x j2sdk... 加上執行屬性,然后運行下載的文件,會出來一個許可協議,按幾次空格跳過幾頁后,輸入 yes 表示接受協議,然后程序會自動釋放,并建立一個子目錄 j2sdk1.4.2_04。

    3.設置環境變量,java的運行需要設置一下環境變量,通常只要設置一個 JAVA_HOME,另外,把java的可執行程序放到path里面去就可以了。在linux下運行
    [code:1:141851c2a4]JAVA_HOME=/usr/local/j2sdk1.4.2-04;export $JAVA_HOME
    PATH=$PATH:$JAVA_HOME/bin[/code:1:141851c2a4]如果你需要所有的用戶都可以使用java,可以把這段代碼放到 /etc/profile 里面去,這樣你每次登陸的時候就會自動把有關變量設置好了。
    windows下面要在“系統屬性”里面->“高級”->點“環境變量”按鈕,如果你希望所有用戶都能用,就建立在“系統變量”里面,點“新建”按鈕,變量名是 “JAVA_HOME”,變量值是你安裝java的路徑,通常是 C:\j2sdk1.4.2-04 ,然后編輯path變量,在變量值最后加上;%JAVA_HOME%\bin

    4.安裝tomcat,最簡單是下載binary版本,在linux下面,直接 tar -xzvf jakarta-tomcat-5.0.19 即可。windows下面,直接運行那個exe文件,就會自動安裝了。windows的安裝過程要求設置一個admin用戶和密碼,這個用戶可以在web上管理tomcat服務器的運行和安裝和解除web應用的,還可以創建其他管理用戶,權限很大,所以密碼要小心得取,如果是linux下面,沒有創建這個用戶,則需要到 jakarta-tomcat-5.0.19/conf 下面編輯 tomcat-users.xml 手工添加2個role和1個用戶,最簡單的例子文件如下:
    [code:1:141851c2a4]<?xml version='1.0' encoding='utf-8'?>
    <tomcat-users>
      <role rolename="tomcat"/>
      <role rolename="role1"/>
      <role rolename="manager"/>
      <role rolename="admin"/>
      <user username="tomcat" password="tomcat" roles="tomcat"/>
      <user username="both" password="tomcat" roles="tomcat,role1"/>
      <user username="role1" password="tomcat" roles="role1"/>
      <user username="admin" password="administratorpassword123" roles="admin,manager"/>
    </tomcat-users>[/code:1:141851c2a4]
    啟動tomcat,tomcat/bin目錄下有startup.sh 用于Linux 和start.bat 用于windows,shutdown.sh 和 shutdown.bat 則用于關閉tomcat,當然,windows下面還有專門的圖形界面的啟動程序,其實效果都是一樣的。

    當然,在linux下面也可以用jsvc啟動,并做成啟動腳本隨機器一起啟動。jsvc本來要從 http://jakarta.apache.org 下載 commons-daemon-1.0-Alpha ,不過tomcat 已經自己帶了一個了,在tomcat/bin目錄下有一個jsvc.tar.gz 解壓,編譯:
    解壓 tar -xzvf jsvc.tar.gz 然后 cd jsvc-src 然后,運行
    [code:1:141851c2a4]sh support/buildconf.sh
    ./configure
    make[/code:1:141851c2a4]
    (注意:tomcat-5.0.18版本帶的jsvc源代碼有一個低級錯誤--少一個分號,會導致編譯不成功,可以自己加上這個分號)

    tomcat自己帶的jsvc-src/native目錄下還有兩個腳本 Tomcat.sh 和 Tomcat5.sh ,可以用作啟動和停止tomcat的腳本,我把Tomcat5.sh略作修改,文件如下:

    [code:1:141851c2a4]#!/bin/sh
    #
    # Startup Script for Tomcat5
    #
    # chkconfig: 345 87 13
    # description: Tomcat Daemon
    # processname: jsvc
    # pidfile: /var/run/jsvc.pid
    # config:
    #
    # Source function library.
    . /etc/rc.d/init.d/functions
    #
    prog=tomcat
    #
    # Small shell script to show how to start/stop Tomcat using jsvc
    # If you want to have Tomcat running on port 80 please modify the server.xml
    # file:
    #
    #    <!-- Define a non-SSL HTTP/1.1 Connector on port 80 -->
    #    <Connector className="org.apache.catalina.connector.http.HttpConnector"
    #               port="80" minProcessors="5" maxProcessors="75"
    #               enableLookups="true" redirectPort="8443"
    #               acceptCount="10" debug="0" connectionTimeout="60000"/>
    #
    # You need a developement version of Tomcat (Apache Tomcat/4.1-dev)
    #
    # Adapt the following lines to your configuration

    #設定自己的參數
    JAVA_HOME=/usr/local/j2sdk1.4.2-04
    CATALINA_HOME=/usr/local/jakarta-tomcat-5.0.19
    DAEMON_HOME=$CATALINA_HOME/bin
    #需要在系統中設定一個沒有權限的
    #用戶來運行,這樣比較安全
    TOMCAT_USER=tomcat5 
    TMP_DIR=/var/tmp
    CATALINA_OPTS=
    CLASSPATH=\
    $JAVA_HOME/lib/tools.jar:\
    $CATALINA_HOME/bin/commons-daemon.jar:\
    $CATALINA_HOME/bin/bootstrap.jar

    start(){
        echo -n $"Starting $prog: "
        #
        # Start Tomcat
        #
        $DAEMON_HOME/jsvc-src/jsvc \
        -user $TOMCAT_USER \
        -home $JAVA_HOME \
        -Dcatalina.home=$CATALINA_HOME \
        -Djava.io.tmpdir=$TMP_DIR \
        -outfile $CATALINA_HOME/logs/catalina.out \
        -erri&s;'''1'''' \
        $CATALINA_OPTS \
        -cp $CLASSPATH \
        org.apache.catalina.startup.Bootstrap
        #
        # To get a verbose JVM
        #-verbose \
        # To get a debug of jsvc.
        #-debug \
        RETVAL=$?
        [ $RETVAL = 0 ] && touch /var/lock/subsys/jsvc
        [ $RETVAL = 0 ] && echo_success || echo_failure
        echo
        return $RETVAL
    }
    stop(){
        echo -n $"Stopping $prog: "
        #
        # Stop Tomcat
        #
        PID=`cat /var/run/jsvc.pid`
        kill $PID
        RETVAL=$?
        [ $RETVAL = 0 ] && rm /var/lock/subsys/jsvc
        [ $RETVAL = 0 ] && echo_success || echo_failure
        echo
        return $RETVAL
    }

    case "$1" in
      start)
            start
        ;;

      stop)
            stop
        ;;

      restart|reload)
            stop
            start
        ;;

      *)
        echo "Usage $0 start/stop"
        exit 1;;
    esac[/code:1:141851c2a4]
    把這段代碼保存為 /etc/rc.d/init.d/tomcat ,然后運行 [code:1:141851c2a4]chkconfig --add tomcat[/code:1:141851c2a4]即可把tomcat 添加為系統服務自動隨系統啟動了。這個腳本會在runlevel 3/4/5三種模式自動啟動。注意這段腳本是為tomcat5創建的,如果你用tomcat4,則需要在另一個tomcat.sh的基礎上修改。

    5.編譯和設置mod_jk
    windows版本的mod_jk可以直接從 jakarta.apache.org 下載binary版本,linux下只好下載源代碼編譯了。從 http://jakarta.apache.org 下載 jakarta-tomcat-connectors-jk2-src-current.tar.gz 解壓,然后 [code:1:141851c2a4]cd /jakarta-tomcat-connectors-jk2-2.0.2-src/jk/native2
    ./buildconf.sh[/code:1:141851c2a4]然后運行
    [code:1:141851c2a4]./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-java-home=/usr/local/j2sdk1.4.2-04[/code:1:141851c2a4]
    (具體路徑按照你實際的調整)
    運行
    [code:1:141851c2a4]make jk2-build-apxs
    cd server/apache2
    make -f Makefile.apxs install[/code:1:141851c2a4]
    其實這個軟件包本來有ant的配置文件,用ant編譯可能會簡單一些,但是要另外裝ant,而且里面有些模塊不是ant本身native的功能,還要為ant加裝相應的功能模塊,所以這里就略過,下次有時間再發一個ant的應用。

    這樣,你的mod_jk總算是裝好了,現在開始進入配置階段,其實,配置很簡單了

    6.設置虛擬主機
    比如,我現在有虛擬主機 vhosts.vicp.net 希望把jsp和servlet都轉到tomcat去,而其他的文件比如html頁面,圖片等等仍然用apache解析。
    Tomcat設置:
    修改 tomcat/conf/server.xml,在 <Engine></Engine>里面再增加一個<host/>,
    [code:1:141851c2a4]<Host name="vhosts.vicp.net" debug="0"
        appBase="/opt/jakarta-tomcat-4.1.12-LE-jdk14/webapps/struts-example" 
        unpackWARs="true" autoDeploy="true">
        <Alias>localhost</Alias>
        <Alias>www</Alias>
        <Alias>10.0.0.10</Alias>
        <Context path="" docBase="" debug="1"/>
            <Valve className="org.apache.catalina.valves.AccessLogValve"
                directory="logs"  prefix="vhost.vicp.net_access_log." suffix=".txt"
                pattern="common" resolveHosts="false"/>
            <Logger className="org.apache.catalina.logger.FileLogger"
                     directory="logs"  prefix="home_log_" suffix="_app_log.txt"
                timestamp="true"/>
    </Host>[/code:1:141851c2a4]
    調整里面的參數和設置使之適合你的環境,當然,如果你還有其他的<host/>添加在后面。

    在 /usr/local/apache/conf 下面創建一個workers2.properties,內容如下:

    [code:1:141851c2a4]#---- worker2.properties

    [logger.apache2]
    level=DEBUG

    # Shared memory handling. Needs to be set.
    [shm]
    file=/usr/local/apache2/logs/shm.file
    size=1048576

    # Example socket channel, explicitly set port and host.
    [channel.socket:localhost:8009]
    tomcatId=localhost:8009
    port=8009
    host=127.0.0.1

    # define the worker
    [ajp13:localhost:8009]
    channel=channel.socket:localhost:8009

    #[status:status]

    # Uri mapping

    #[uri:/jkstatus/*]
    #group=status:status

    #[uri:/jsp-examples/*]
    #group=ajp13:localhost:8009

    #[uri:/servlets-examples/*]
    #group=ajp13:localhost:8009

    #[uri:/javaapp/*]
    #group=ajp13:localhost:8009

    #[uri:www.home.net/*.jsp]
    #worker=ajp13:localhost:8009

    #[uri:10.0.0.10/*]
    #worker=ajp13:localhost:8009

    #---- end of workers2.properties[/code:1:141851c2a4]

    當然,你可以刪除其中的注釋符使其中的uri和worker的配置生效,我現在不用這種方式配置是因為找到一個更好的方法:在httpd.conf里面配置:

    把下面這段放到VirtualHost之前,可以從全局避免用戶用apache訪問WEB-INF目錄。
    [code:1:141851c2a4]<Directory ~ "/WEB-INF/">
        Order allow,deny
        Deny from all
    </Directory>[/code:1:141851c2a4]

    典型的VirtualHost配置樣本

    [code:1:141851c2a4]<VirtualHost _default_:80>
            ServerName vhost.vicp.net
            DocumentRoot /home/webapp/public_html/
            DirectoryIndex index.htm index.html default.htm index.php index.jsp
            <Location ~ "/*.jsp|/*/servlet/*">
                JkUriSet worker ajp13:localhost:8009 
            </Location>
            ErrorLog logs/vhosts.vicp.net-err_log
            CustomLog logs/vhosts.vicp.net-acc_log common
    </VirtualHost>[/code:1:141851c2a4]
    這樣就可以為每個不同的虛擬主機分別指定使用或者不使用jsp功能。

    好了,可以開始開發和使用你的web應用了!

    參考文獻:
    1. http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/jk2/vhosthowto.html
    2. http://bbs.chinaunix.net/forum/6/20040214/259794.html
    3. http://chinaunix.net/jh/6/263220.html

     tianyaly 回復于:2004-03-22 16:29:49
    有朋友試過了嗎!看起來的確是好文檔!

     bing65 回復于:2004-04-02 05:57:34
    [root@localhost root]# /usr/local/apache2/bin/apachectl  start
    Syntax error on line 232 of /usr/local/apache2/conf/httpd.conf:
    Cannot load /usr/local/apache2/modules/libphp5.so into server: /usr/local/apache2/modules/libphp5.so: undefined symbol: compress

    是不是安裝PHP的時候的問題呢?

     perryhg 回復于:2004-04-02 08:00:04
    Cannot load /usr/local/apache2/modules/libphp5.so into server: /usr/local/apache2/modules/libphp5.so: undefined symbol: compress 
    不是寫得很清楚嗎?php5的模塊有問題,可能是一些庫的link設置不對。

     loess 回復于:2004-04-08 12:01:02
    [root@hanwei native2]# ./buildconf.sh
    rm autom4te.cache
    libtoolize --force --automake --copy
    ./buildconf.sh: line 7: libtoolize: command not found
    aclocal
    ./buildconf.sh: line 9: aclocal: command not found
    automake --copy --add-missing
    ./buildconf.sh: line 11: automake: command not found
    autoconf
    ./buildconf.sh: line 13: autoconf: command not found
    [root@hanwei native2]#

     blanc 回復于:2004-04-08 18:58:31
    php5那么快就用新的啦..

     perryhg 回復于:2004-04-27 07:16:23
    你autoconf和automake都沒裝,運行buildconf.sh需要這兩個包。

     fishfree 回復于:2004-04-30 20:57:09
    急問:怎么我配置時候說不能加上apxs呢?我的apache是2,locate了一下apxs確實就一條是一個html文件,估計是幫助文件,怎么辦呢?謝謝!

     我是笨笨 回復于:2004-04-30 21:52:54
    沒有Uri的地方,直接顯示JSP源碼,這個是對的
    為什么Uri指向以后,就一直沒反映呢?

     perryhg 回復于:2004-05-03 02:43:53
    我已經指定了不管在什么地方,只要有 .jsp結尾的文件,就自動轉向,所以不應該出現jsp源碼被顯示的問題。
    如果你的jsp頁面不能正常被顯示,就要看查看日志看看錯在什么地方了。

     我是笨笨 回復于:2004-05-03 09:29:46
    報告說是404,找不?04,找不到文件
    文件
    但如果不指定URI,就可以出來,但是是源代碼
    指定了以后,就一直沒反映了,LOG里是404錯誤
    :wink:

     perryhg 回復于:2004-05-03 18:23:24
    看 ERROR_LOG 而不是Access log

     preyswee1982 回復于:2004-05-03 23:29:53
    [quote:cde9b1c7c7="perryhg"]5.編譯和設置mod_jk
    windows版本的mod_jk可以直接從 jakarta.apache.org 下載binary版本,linux下只好下載源代碼編譯了。[/quote:cde9b1c7c7]

    現在有binary版了

    for fedora core1

     我是笨笨 回復于:2004-05-04 01:27:30
    [quote:618d29abb5="perryhg"]看 ERROR_LOG 而不是Access log[/quote:618d29abb5]
    看了,是File not found,404錯誤
    怎么回事呢?

     perryhg 回復于:2004-05-04 06:37:39
    Error_log 應該是象這樣的東西
    [code:1:efcc408746]
    [Tue May 04 05:30:17 2004] [error] [client 218.22.246.86] File does not exist: /home/virtweb/default.ida
    [/code:1:efcc408746]
    而不是404,404 Error是access log里面顯示的,通過Error_log你就應該看到具體發生了什么事情了。另外,看看你的tomcat的log,有沒有記錄訪問,如果沒有,說明modjk

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>