Apache 與 Tomcat 配置

Apache 與 Tomcat 配置

Apache 配置(Linux)

  1. 安裝

    sudo apt-get install apache2

    安裝結(jié)束后, apache2 的各個組成部分被安裝在5個地方

    • 配置文件的位置:/etc/apache2
    • lib文件的位置:/usr/lib
    • 啟動文件的位置:/etc/init.d/apache2
    • 網(wǎng)頁存放位置:/var/www
    • 軟件所在位置:/usr/share/apache2

    產(chǎn)生的啟動和停止文件是:/etc/init.d/apache2
    啟動:/etc/init.d/apache2 start 或者 apache2ctl start
    關(guān)閉:/etc/init.d/apache2 stop 或者 apache2ctl stop
    重啟:/etc/init.d/apache2 restart 或者 apache2ctl restart

  2. 概念

    ServerAdmin: 網(wǎng)站的管理員的郵箱
    DocumentRoot: 虛擬主機的主目錄,也就是訪問這個虛擬主機所打開的那個目錄,這個目錄你可以自己去指定,要注意的是,你需要先去創(chuàng)建這個目錄,然后再在這里去指定這個目錄的位置。
    ServerName: 主機名,比如之前我們虛擬的那個主機名 hello.com
    ServerAlias: 主機的別名,你可以指定一個其它的主機名,訪問它的時候也會打開這個虛擬主機的目錄里的東西。
    ErrorLog: 錯誤的日志,也就是發(fā)生錯誤的時候,會把錯誤記錄到哪個文件里。
    CustomLog: 虛擬主機訪問的日志。

  3. 配置

    apache2.conf 是主配置文件,httpd.conf 用戶配置文件

    首先在修改 /etc/apache2/sites-available/default, 將端口改為 8081(自定義), 當(dāng)然如果默認的 80 端口沒有被占用,也可以不修改。
    然后修改 /etc/apache2/ports.conf

     NameVirtualHost *:8081
     Listen 8081
    

    然后在 /etc/apache2/httpd.conf 中添加

     Servername 127.0.0.1:8081
    

    運行

     sudo apache2ctl start
    

    打開瀏覽器輸入網(wǎng)址訪問

     http://localhost:8081
    

個人見解

在 /etc/apache2 中存在兩個文件夾 sites-available 和 sites-enabled.
sites-available 是所有的供使用的配置(包括自己的配置也要放在里面),而要使某個配置,就要將它放在sites-enabled,我們可以做個軟鏈接,使用 ln -s
在配置文件里面使用的端口,還要在 ports.conf 中配置下, 例如

NameVirtualHost *:8081
Listen 8081

新建自己的網(wǎng)站

  1. 創(chuàng)建一個存放網(wǎng)站的文件夾

    要鏈接網(wǎng)頁首先需要在/var/www 中創(chuàng)建自己的網(wǎng)頁,此處(/var/www)已經(jīng)有一張默認的網(wǎng)頁index.html。也就是apache2啟動后默認的那張It works。

    mkdir wsclient
    cp /usr/my.html .

  2. 配置文件

    打開apache配置文件夾,我們會發(fā)現(xiàn)在這下面有兩個名為 sites-available和sites-enabled的文件夾。
    首先在 sites-available 中 copy 一份默認的 default,并命名為 wsclient,修改內(nèi)容如下

     <VirtualHost *:8083>
         ServerAdmin webmaster@localhost
    
         DocumentRoot /var/www/wsclient
         <Directory />
                 Options FollowSymLinks
                 AllowOverride None
         </Directory>
         <Directory /var/www/>
                 Options Indexes FollowSymLinks MultiViews
                 AllowOverride None
                 Order allow,deny
                 allow from all
         </Directory>
    
         ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
         <Directory "/usr/lib/cgi-bin">
                 AllowOverride None
                 Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                 Order allow,deny
                 Allow from all
         </Directory>
         
         ErrorLog ${APACHE_LOG_DIR}/error.log
    
         # Possible values include: debug, info, notice, warn, error, crit,
         # alert, emerg.
         LogLevel warn
    
         CustomLog ${APACHE_LOG_DIR}/access.log combined
    
         Alias /doc/ "/usr/share/doc/"
         <Directory "/usr/share/doc/">
             Options Indexes MultiViews FollowSymLinks
             AllowOverride None
             Order deny,allow
             Deny from all
             Allow from 127.0.0.0/255.0.0.0 ::1/128
         </Directory>
     </VirtualHost>
    

    修改的內(nèi)容有 VirtualHost *:8083DocumentRoot /var/www/wsclient,分別代表端口和網(wǎng)站目錄。
    接著在 sites-enable 做一個 wsclient 的軟鏈接

     cd ../sites-enabled
     ln -s ../sites-abailable/wsclient wsclient
    

    最后,在端口配置文件中配置下端口。

      vim ports.conf
    

    增加

     NameVirtualHost *:8083
     Listen 8083
    
  3. 成功

    打開瀏覽器,輸入 http://localhost:8083 即可看到咱的網(wǎng)站,歡呼吧。

apache 不支持 java web, 所以要結(jié)合 tomcat

Apache是http服務(wù)器,我們利用其對Tomcat進行負載均衡

Tomcat 配置 (Linux)

  1. 下載

    官網(wǎng)將軟件包下載下來

  2. 解壓

    tar -zxv -f apache-tomcat-7.0.54.tar.gz apache-tomcat-7.0.54

  3. 移動

    sudo mv apache-tomcat-7.0.54 /usr/local/

  4. 環(huán)境變量

    vi /etc/profile

    在最后面添加

     export JAVA_HOME=/usr/lib/jvm/java-7-oracle
     export JRE_HOME=/usr/lib/jvm/java-7-oracle/jre
     export PATH=$JAVA_HOME/bin:$PATH
     export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
  5. 修改端口

    如果默認8080端口被占用,就需要修改端口。

    修改/etc/tomcat7/server.xml,修改部分內(nèi)容如下

     <Connector port="8082" protocol="HTTP/1.1"
                connectionTimeout="20000"
                URIEncoding="UTF-8"
                redirectPort="8443" />
    
  6. 運行

    /usr/local/apache-tomcat-7.0.54/bin/startup.sh

  7. 停止

    /usr/local/apache-tomcat-7.0.54/bin/shutdown.sh

將 apache 與 tomcat 整合(Linux)

使用mod_jk2連接器

下載

登錄 http://tomcat.apache.org/connectors-doc/ 下載源碼。

編譯生成 mod_jk

想要編譯 mod_jk 需要先安裝 apxs2

采用 sudo apt-get install apache 安裝apache服務(wù),不會自帶apxs(apache extension tool [apache擴展模塊的工具,例如$apxs -i -a -c mod_foo.c]),需安裝 apache2-dev

sudo apt-get insall apache2-dev

可以找到 apxs2 被安裝在 /usr/bin/apxs2 /usr/bin/X11/apxs2 /usr/share/man/man1/apxs2.1.gz

接下來編譯 mod_jk

tar xzvf jakarta-tomcat-connectors-1.2.15-src.tar.gz
cd jakarta-tomcat-connectors-1.2.15-src/jk/native
./configure --with-apxs=/usr/bin/apxs2
make
make install
## cp ./apache-2.0/mod_jk.so /usr/lib/apache2/modules/

apache 文件配置

該方法使用運行于現(xiàn)有的Apache httpd Web服務(wù)器之內(nèi)的連接器模塊(如mod_jk),并經(jīng)由特定的協(xié)議快速地將請求轉(zhuǎn)送至Tomcat。這是將Tomcat連接至Apache httpd的標準方式。

  1. 修改Apache配置文件httpd.conf

    include "/etc/apache2/mod_jk.conf"

  2. 在httpd.conf 同目錄下新建mod_jk.conf文件

     #加載mod_jk Module 
     LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so
    
     #指定 workers.properties文件路徑
     JkWorkersFile workers.properties
     
     #指定哪些請求交給tomcat處理,"controller"為在workers.propertise里指定的負載分配控制器名
     JkMount /* controller
    
  3. 在httpd.conf同目錄下新建 workers.properties文件

    本來該配置文件是配置了兩臺 tomcat 服務(wù)器,但是為了簡單,將配置文件修改為 1 個 tomcat(不適用的配置進行了注釋)。

     #這里可以配置任意多個Tomcat,此處配置了2個Tomat服務(wù)器.
     #host和port根據(jù)自己實際配置.實例配置的是本機兩個tomcat,分別使用不同的端口.避免沖
     突
     #如果Tomcat不再同一機器上,沒必要改端口的。
     
     #server 列表
     #worker.list=controller,tomcat1,tomcat2  
     worker.list=controller,tomcat1
     
     #========tomcat1========
     
     worker.tomcat1.port=8088        #ajp13 端口號,在tomcat下server.xml配置,默認8009
     worker.tomcat1.host=localhost        #tomcat的主機地址,如不為本機,請?zhí)顚慽p地址
     worker.tomcat1.type=ajp13
     worker.tomcat1.lbfactor=1        #server的加權(quán)比重,值越高,分得的請求越多
     
     #========tomcat2========
     
     #worker.tomcat2.port=9999        #ajp13 端口號,在tomcat下server.xml配置,默認8009
    
     #worker.tomcat2.host=localhost        #tomcat的主機地址,如不為本機,請?zhí)顚慽p地>址
     #worker.tomcat2.type=ajp13i
     #worker.tomcat2.lbfactor=1        #server的加權(quán)比重,值越高,分得的請求越多 
     
     #========controller,負載均衡控制器========
     worker.controller.type=lb
     
     #指定此負載平衡器負責(zé)的Tomcat應(yīng)用節(jié)點。
     
     #worker.controller.balanced_workers=tomcat1,tomcat2   #指定分擔(dān)請求的tomcat
     worker.controller.balanced_workers=tomcat1   #指定分擔(dān)請求的tomcat
     
     #此處指定集群是否需要會話復(fù)制,如果設(shè)為true,則表明為會話粘性,不進行會話復(fù)制,>當(dāng)某用戶的請求第一次分發(fā)到哪臺
     #Tomcat后,后繼的請求會一直分發(fā)到此Tomcat服務(wù)器上處理;如果設(shè)為false,則表明需求
     會話復(fù)制。
     
     worker.controller.sticky_session=false      #設(shè)為false,則表明需求會話復(fù)制。
    

Tomcat 文件配置

  1. 修改分發(fā)tomcat對應(yīng)的service.xml文件,保證Apache對應(yīng)的 workers.properties中的AJP13的connector的port.

     <!-- 定義一個AJP 1.3 連接端口為9988 ,默認值為8009,這里我們改成我們自己定義的8088端口 -->
     <!--<Connector port="8088" protocol="AJP/1.3" redirectPort="8443" />-->
     <!-- 發(fā)現(xiàn)使用上面一句,打開的端口(這里指9087)會出現(xiàn)time_wait,然后不久會自動關(guān)閉,因此,使用下面的語句解決該問題 -->
      <Connector port="9087" protocol="AJP/1.3" redirectPort="8443" executor="tomcatThreadPool" />
    
  2. 增加jvmRoute的值,保證同workers.properties里邊配置的值一致

     <!--增加jvmRoute,值為在Apache中配置的list集群結(jié)點中的值,這里定義為tomcat1結(jié)點-->
     <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
    
  3. 去掉默認注釋掉的集群配置

     <!--取消集群結(jié)點相關(guān)的注釋,該句默認值注釋掉的,我們需要配置集群所以去掉注釋,讓其起作用-->
     <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
    

    如果我們的tomcat結(jié)點分布在不同的機器上,那么我們的集群至此已經(jīng)配置完成.去掉多余注釋,顯示做了修改的部位

    說明: 這里的protocol="AJP/1.3",連接以及jvmRoute需要保證同我們在Apache服務(wù)器中配置的works.properties一致.修改完后最好將service.xml文件的編碼設(shè)置為utf-8格式.否則可能tomcat啟動會出錯.

  4. 實例中我們的兩個tomcat結(jié)點在同一臺機器上,所以還需要保證protocol="HTTP/1.1"的端口不一致.不然本地的兩個tomcat會起沖突

    下面為筆者實例中解決同一臺機器上多個tomcat服務(wù)器之間端口沖突做的修改.

    Tomcat--node1


    Tomcat-node2

     <Server port="9995" shutdown="SHUTDOWN">
     ……
      <Connector port="9990" protocol="HTTP/1.1"
                    connectionTimeout="20000"
                    redirectPort="8443" />
     ……
    

    說明:這里的protocol="HTTP/1.1"配置的相關(guān)端口之間不能沖突,而且也不能同本機其它應(yīng)用程序占用的端口沖突.否則可能會報錯.

失敗

在 httpd.conf 中添加以下代碼成功

<VirtualHost *>
    ServerAdmin localhost
    DocumentRoot /var/www/
    ServerName localhost
    DirectoryIndex index.html index.htm index.jsp index.action
    ErrorLog logs/shsc-error_log.txt
    CustomLog logs/shsc-access_log.txt common
    
    JkMount /*WEB-INF controller
    JkMount /*.action controller
    JkMount /servlet/* controller
    JkMount /*.jsp controller
    JkMount /*.do controller
    JkMount /*.action controller
</VirtualHost>

經(jīng)測試,在網(wǎng)站配置文件,即在 sites-available 中配置同樣生效。

<VirtualHost *:8083>
        ServerAdmin webmaster@localhost
        
        DocumentRoot /var/www

        ServerName localhost
        DirectoryIndex index.html index.htm index.jsp index.action
        ErrorLog logs/shsc-error_log.txt
        CustomLog logs/shsc-access_log.txt common

        #JkMount /*WEB-INF controller
        #JkMount /*.action controller
        #JkMount /servlet/* controller
        ##JkMount /*.jsp controller
        #JkMount /*.do controller
        #JkMount /*.action controller
        JkMount /* controller
        
        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

失敗后

sudo servicae apache reload

發(fā)現(xiàn)端口 time-wait 過一段時間被關(guān)閉, 可以換個端口,或者看看 tomcat 中是不是有類似的這樣的一句:

<Connector port="9087" protocol="AJP/1.3" redirectPort="8443" executor="tomcatThreadPool" />

查看端口方法
netstat -anp | grep 9087

實例測試

sudo service apache2 start 提示開啟

Win 上整合 IIS 與 Tomcat

Win上使用的服務(wù)器大多是 IIS, 為了讓 IIS 支持 JAVA,需要將 整合 IIS 與 Tomcat。

下載安裝 isapi_redirect

下載后,雙擊安裝安裝向?qū)О惭b。默認是安裝路徑為 C:\Program Files (x86)\Apache Software Foundation\Jakarta Isapi Redirector

設(shè)置IIS

  1. 右鍵 IIS 中的 Default Web Site, 選擇 添加虛擬目錄。
    別名: jakarta(一定要一致).
    物理路徑: C:\Program Files (x86)\Apache Software Foundation\Jakarta Isapi Redirector\bin (isapi_redirect 安裝目錄的 bin 目錄, 根據(jù)自身情況而定)

  2. 選中服務(wù)器

    下載 (2).png

    在右面面板找到,點擊進入


    下載 (3).png

    選擇添加,設(shè)置 ISAPI 或 CGI 路徑:

    C:\Program Files (x86)\Apache Software Foundation\Jakarta Isapi Redirector\bin\isapi_redirect.dll(視自身情況而定,這里是指isapi_redirect.dll的路徑)

    描述隨意: 可以輸入 isapi_redirect.dll
    勾選 允許執(zhí)行擴展路徑

下載 (4).png
  1. 選中 jakarta

    下載 (5).png

在右邊面板中找到

下載 (6).png

右邊找到 添加腳本映射

下載 (7).png

填入下面內(nèi)容, 其中可執(zhí)行文件還是之前的 isapi_redirect.dll 文件路徑:

下載 (8).png

修改配置文件

修改 workers.properties.minimal

該文件位于 C:\Program Files (x86)\Apache Software Foundation\Jakarta Isapi Redirector\conf(視自身而定)

修改內(nèi)容如下:

# workers.properties.minimal -
#
# This file provides minimal jk configuration properties needed to
# connect to Tomcat.
#
# The workers that jk should create and work with
#

worker.list=wlb,jkstatus

#
# Defining a worker named ajp13w and of type ajp13
# Note that the name 
and the type do not have to match.
#
worker.jkstatus.port=9009
worker.jkstatus.host=localhost
worker.jkstatus.type=ajp13
worker.jkstatus.lbfactor=1

#
# Defining a load balancer
# 

worker.wlb.type=lb
worker.wlb.balance_workers=jkstatus

修改 uriworkermap.properties

該文件位于 C:\Program Files (x86)\Apache Software Foundation\Jakarta Isapi Redirector\conf(視自身而定)

修改內(nèi)容如下:

# uriworkermap.properties - IIS
#
# This file provides sample mappings for example wlb
# worker defined in workermap.properties.minimal
# The general syntax for this file is:
# [URL]=[Worker name]

/admin/*=wlb
/manager/*=wlb
/jsp-examples/*=wlb
/servlets-examples/*=wlb

# Optionally filter out all .jpeg files inside that context
# For no mapping the url has to start with exclamation (!)

!/servlets-examples/*.jpeg=wlb

#
# Mount jkstatus to /jkmanager
# For production servers you will need to
# secure the access to the /jkmanager url
#
/jkmanager=jkstatus
/try/*=wlb
/*.jsp=wlb

注冊表

新建一個文件,后綴名為 .reg(表示注冊表文件),寫入以下內(nèi)容:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE/SOFTWARE/Apache Software Foundation/Jakarta Isapi Redirector/1.0] 

"log_file"="C:\\tomcat8\\logs\\isapi.log" 

"log_level"="debug" 

"worker_file"="C:\\Program Files (x86)\\Apache Software Foundation\\Jakarta Isapi Redirector\\conf\\workers.properties" 

"worker_mount_file"="C:\\Program Files (x86)\\Apache Software Foundation\\Jakarta Isapi Redirector\\conf\\uriworkermap.properties" 

"tomcat_start"="C:\\tomcat8\\bin\\tomcat.bat start" 

"tomcat_stop"="C:\\tomcat8\\bin\\tomcat.bat stop" 

"extension_uri"="/jakarta/isapi_redirect.dll"  

根據(jù)自己的電腦修改上面的文件,保存。雙擊運行即可設(shè)置好注冊表。

配置 Tomcat

修改 [Tomcat安裝目錄]/conf/server.xml。

  1. 找到類似下面的一句(引號內(nèi)的內(nèi)容可以不一樣,一般是被注釋的),取消注釋,并修改如下

    <Connector port="9009" protocol="AJP/1.3" redirectPort="8443"/>

  2. 找到下面一句

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">

    取消注釋并修改如下

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jkstatus">

  3. 找到下面一句,取消注釋

    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

啟動服務(wù)

分別啟動 iis 和 tomcat 服務(wù),保證他們都能單獨運行

測試

新建一個 jsp 項目項目,放入 tomcat 的 webapps 目錄下,重啟 tomcat。
在瀏覽器中輸入 網(wǎng)址,例如 http://localhost/try/index.jsp

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,837評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,196評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,688評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,654評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,456評論 6 406
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,955評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,044評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,195評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,725評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,608評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,802評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,318評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,048評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,422評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,673評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,424評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,762評論 2 372

推薦閱讀更多精彩內(nèi)容